@vybestack/llxprt-code-core 0.1.23-nightly.250904.97906524 → 0.1.23-nightly.250905.67589d14

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 (82) hide show
  1. package/dist/src/adapters/IStreamAdapter.d.ts +3 -3
  2. package/dist/src/auth/types.d.ts +4 -4
  3. package/dist/src/config/index.d.ts +7 -0
  4. package/dist/src/config/index.js +8 -0
  5. package/dist/src/config/index.js.map +1 -0
  6. package/dist/src/core/client.d.ts +9 -21
  7. package/dist/src/core/client.js +46 -144
  8. package/dist/src/core/client.js.map +1 -1
  9. package/dist/src/core/compression-config.d.ts +1 -1
  10. package/dist/src/core/compression-config.js +4 -5
  11. package/dist/src/core/compression-config.js.map +1 -1
  12. package/dist/src/core/coreToolScheduler.js +50 -15
  13. package/dist/src/core/coreToolScheduler.js.map +1 -1
  14. package/dist/src/core/geminiChat.d.ts +51 -2
  15. package/dist/src/core/geminiChat.js +592 -93
  16. package/dist/src/core/geminiChat.js.map +1 -1
  17. package/dist/src/core/nonInteractiveToolExecutor.js +70 -19
  18. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  19. package/dist/src/index.d.ts +1 -2
  20. package/dist/src/index.js +2 -2
  21. package/dist/src/index.js.map +1 -1
  22. package/dist/src/providers/BaseProvider.d.ts +8 -3
  23. package/dist/src/providers/BaseProvider.js.map +1 -1
  24. package/dist/src/providers/IProvider.d.ts +9 -3
  25. package/dist/src/providers/LoggingProviderWrapper.d.ts +10 -3
  26. package/dist/src/providers/LoggingProviderWrapper.js +33 -27
  27. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
  28. package/dist/src/providers/ProviderContentGenerator.d.ts +2 -2
  29. package/dist/src/providers/ProviderContentGenerator.js +9 -6
  30. package/dist/src/providers/ProviderContentGenerator.js.map +1 -1
  31. package/dist/src/providers/anthropic/AnthropicProvider.d.ts +12 -17
  32. package/dist/src/providers/anthropic/AnthropicProvider.js +238 -447
  33. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  34. package/dist/src/providers/gemini/GeminiProvider.d.ts +12 -6
  35. package/dist/src/providers/gemini/GeminiProvider.js +184 -458
  36. package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
  37. package/dist/src/providers/openai/ConversationCache.d.ts +3 -3
  38. package/dist/src/providers/openai/IChatGenerateParams.d.ts +9 -4
  39. package/dist/src/providers/openai/OpenAIProvider.d.ts +14 -61
  40. package/dist/src/providers/openai/OpenAIProvider.js +270 -575
  41. package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
  42. package/dist/src/providers/openai/buildResponsesRequest.d.ts +3 -3
  43. package/dist/src/providers/openai/buildResponsesRequest.js +67 -37
  44. package/dist/src/providers/openai/buildResponsesRequest.js.map +1 -1
  45. package/dist/src/providers/openai/estimateRemoteTokens.d.ts +2 -2
  46. package/dist/src/providers/openai/estimateRemoteTokens.js +21 -8
  47. package/dist/src/providers/openai/estimateRemoteTokens.js.map +1 -1
  48. package/dist/src/providers/openai/parseResponsesStream.d.ts +6 -2
  49. package/dist/src/providers/openai/parseResponsesStream.js +99 -391
  50. package/dist/src/providers/openai/parseResponsesStream.js.map +1 -1
  51. package/dist/src/providers/openai/syntheticToolResponses.d.ts +5 -5
  52. package/dist/src/providers/openai/syntheticToolResponses.js +102 -91
  53. package/dist/src/providers/openai/syntheticToolResponses.js.map +1 -1
  54. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +16 -17
  55. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +222 -224
  56. package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -1
  57. package/dist/src/providers/types.d.ts +1 -1
  58. package/dist/src/services/history/ContentConverters.d.ts +6 -1
  59. package/dist/src/services/history/ContentConverters.js +155 -18
  60. package/dist/src/services/history/ContentConverters.js.map +1 -1
  61. package/dist/src/services/history/HistoryService.d.ts +52 -0
  62. package/dist/src/services/history/HistoryService.js +245 -93
  63. package/dist/src/services/history/HistoryService.js.map +1 -1
  64. package/dist/src/services/history/IContent.d.ts +4 -0
  65. package/dist/src/services/history/IContent.js.map +1 -1
  66. package/dist/src/telemetry/types.d.ts +16 -4
  67. package/dist/src/telemetry/types.js.map +1 -1
  68. package/dist/src/tools/IToolFormatter.d.ts +2 -2
  69. package/dist/src/tools/ToolFormatter.d.ts +3 -3
  70. package/dist/src/tools/ToolFormatter.js +80 -37
  71. package/dist/src/tools/ToolFormatter.js.map +1 -1
  72. package/dist/src/tools/todo-schemas.d.ts +4 -4
  73. package/package.json +8 -7
  74. package/dist/src/core/ContentGeneratorAdapter.d.ts +0 -37
  75. package/dist/src/core/ContentGeneratorAdapter.js +0 -58
  76. package/dist/src/core/ContentGeneratorAdapter.js.map +0 -1
  77. package/dist/src/providers/IMessage.d.ts +0 -38
  78. package/dist/src/providers/IMessage.js +0 -17
  79. package/dist/src/providers/IMessage.js.map +0 -1
  80. package/dist/src/providers/adapters/GeminiCompatibleWrapper.d.ts +0 -69
  81. package/dist/src/providers/adapters/GeminiCompatibleWrapper.js +0 -577
  82. package/dist/src/providers/adapters/GeminiCompatibleWrapper.js.map +0 -1
@@ -13,14 +13,39 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+ import { DebugLogger } from '../../debug/index.js';
16
17
  /**
17
18
  * Converts between Gemini Content format and IContent format
18
19
  */
19
20
  export class ContentConverters {
21
+ static logger = new DebugLogger('llxprt:content:converters');
22
+ static normalizeToHistoryId(id) {
23
+ if (!id)
24
+ return undefined;
25
+ if (id.startsWith('hist_tool_'))
26
+ return id;
27
+ if (id.startsWith('call_'))
28
+ return `hist_tool_${id.substring('call_'.length)}`;
29
+ if (id.startsWith('toolu_'))
30
+ return `hist_tool_${id.substring('toolu_'.length)}`;
31
+ // Unknown provider format: preserve suffix, add history prefix
32
+ return `hist_tool_${id}`;
33
+ }
20
34
  /**
21
35
  * Convert IContent to Gemini Content format
22
36
  */
23
37
  static toGeminiContent(iContent) {
38
+ this.logger.debug('Converting IContent to Gemini Content:', {
39
+ speaker: iContent.speaker,
40
+ blockCount: iContent.blocks?.length || 0,
41
+ blockTypes: iContent.blocks?.map((b) => b.type) || [],
42
+ toolCallIds: iContent.blocks
43
+ ?.filter((b) => b.type === 'tool_call')
44
+ .map((b) => b.id) || [],
45
+ toolResponseCallIds: iContent.blocks
46
+ ?.filter((b) => b.type === 'tool_response')
47
+ .map((b) => b.callId) || [],
48
+ });
24
49
  // Tool responses should have 'user' role in Gemini format
25
50
  let role;
26
51
  if (iContent.speaker === 'tool') {
@@ -42,6 +67,11 @@ export class ContentConverters {
42
67
  }
43
68
  case 'tool_call': {
44
69
  const toolCall = block;
70
+ this.logger.debug('Converting tool_call block to functionCall:', {
71
+ id: toolCall.id,
72
+ name: toolCall.name,
73
+ hasParameters: !!toolCall.parameters,
74
+ });
45
75
  parts.push({
46
76
  functionCall: {
47
77
  name: toolCall.name,
@@ -53,6 +83,12 @@ export class ContentConverters {
53
83
  }
54
84
  case 'tool_response': {
55
85
  const toolResponse = block;
86
+ this.logger.debug('Converting tool_response block to functionResponse:', {
87
+ callId: toolResponse.callId,
88
+ toolName: toolResponse.toolName,
89
+ hasResult: !!toolResponse.result,
90
+ hasError: !!toolResponse.error,
91
+ });
56
92
  parts.push({
57
93
  functionResponse: {
58
94
  name: toolResponse.toolName,
@@ -91,12 +127,56 @@ export class ContentConverters {
91
127
  }
92
128
  // Keep empty parts array for empty model responses
93
129
  // This is valid in Gemini Content format
94
- return { role, parts };
130
+ const result = { role, parts };
131
+ this.logger.debug('Converted to Gemini Content:', {
132
+ role,
133
+ partCount: parts.length,
134
+ partTypes: parts.map((p) => {
135
+ if ('text' in p)
136
+ return 'text';
137
+ if ('functionCall' in p)
138
+ return 'functionCall';
139
+ if ('functionResponse' in p)
140
+ return 'functionResponse';
141
+ if ('thought' in p)
142
+ return 'thought';
143
+ return 'other';
144
+ }),
145
+ functionCallIds: parts
146
+ .filter((p) => 'functionCall' in p)
147
+ .map((p) => p.functionCall?.id),
148
+ functionResponseIds: parts
149
+ .filter((p) => 'functionResponse' in p)
150
+ .map((p) => p.functionResponse?.id),
151
+ });
152
+ return result;
95
153
  }
96
154
  /**
97
155
  * Convert Gemini Content to IContent format
98
156
  */
99
- static toIContent(content) {
157
+ static toIContent(content, generateIdCb, getNextUnmatchedToolCall) {
158
+ this.logger.debug('Converting Gemini Content to IContent:', {
159
+ role: content.role,
160
+ partCount: content.parts?.length || 0,
161
+ partTypes: content.parts?.map((p) => {
162
+ if ('text' in p)
163
+ return 'text';
164
+ if ('functionCall' in p)
165
+ return 'functionCall';
166
+ if ('functionResponse' in p)
167
+ return 'functionResponse';
168
+ if ('thought' in p)
169
+ return 'thought';
170
+ return 'other';
171
+ }) || [],
172
+ functionCallIds: content.parts
173
+ ?.filter((p) => 'functionCall' in p)
174
+ .map((p) => p.functionCall?.id) || [],
175
+ functionResponseIds: content.parts
176
+ ?.filter((p) => 'functionResponse' in p)
177
+ .map((p) => p.functionResponse
178
+ ?.id) || [],
179
+ });
100
180
  const speaker = content.role === 'user' ? 'human' : 'ai';
101
181
  const blocks = [];
102
182
  // Handle empty parts array explicitly
@@ -123,18 +203,43 @@ export class ContentConverters {
123
203
  }
124
204
  }
125
205
  else if ('functionCall' in part && part.functionCall) {
206
+ // Preserve original ID by normalizing prefix; generate only if missing.
207
+ const normalized = this.normalizeToHistoryId(part.functionCall.id);
208
+ const finalId = normalized ?? (generateIdCb ? generateIdCb() : generateId());
209
+ this.logger.debug('Converting functionCall to tool_call block:', {
210
+ originalId: part.functionCall.id,
211
+ finalId,
212
+ name: part.functionCall.name,
213
+ usedCallback: !!generateIdCb && !normalized,
214
+ });
126
215
  blocks.push({
127
216
  type: 'tool_call',
128
- id: part.functionCall.id || generateId(),
217
+ id: finalId,
129
218
  name: part.functionCall.name || '',
130
219
  parameters: part.functionCall.args || {},
131
220
  });
132
221
  }
133
222
  else if ('functionResponse' in part && part.functionResponse) {
223
+ // Prefer provided ID (normalized). If absent, use positional matcher; else generate.
224
+ const normalized = this.normalizeToHistoryId(part.functionResponse.id);
225
+ const matched = !normalized
226
+ ? getNextUnmatchedToolCall?.()
227
+ : undefined;
228
+ const callId = normalized ??
229
+ matched?.historyId ??
230
+ (generateIdCb ? generateIdCb() : generateId());
231
+ this.logger.debug('Converting functionResponse to tool_response block:', {
232
+ originalId: part.functionResponse.id,
233
+ finalId: callId,
234
+ toolName: part.functionResponse.name,
235
+ matchedByPosition: !!matched,
236
+ });
134
237
  blocks.push({
135
238
  type: 'tool_response',
136
- callId: part.functionResponse.id || '',
137
- toolName: part.functionResponse.name || '',
239
+ callId,
240
+ toolName: (matched?.toolName ||
241
+ part.functionResponse.name ||
242
+ ''),
138
243
  result: part.functionResponse.response || {},
139
244
  });
140
245
  }
@@ -151,38 +256,70 @@ export class ContentConverters {
151
256
  }
152
257
  // Handle tool responses specially - they should have 'tool' speaker
153
258
  // Tool responses come from user role but are tool speaker in IContent
154
- if (content.role === 'user' &&
259
+ const finalSpeaker = content.role === 'user' &&
155
260
  blocks.length > 0 &&
156
- blocks.every((b) => b.type === 'tool_response')) {
157
- return {
158
- speaker: 'tool',
159
- blocks,
160
- metadata: {},
161
- };
162
- }
163
- return {
164
- speaker,
261
+ blocks.every((b) => b.type === 'tool_response')
262
+ ? 'tool'
263
+ : speaker;
264
+ const result = {
265
+ speaker: finalSpeaker,
165
266
  blocks,
166
267
  metadata: {},
167
268
  };
269
+ this.logger.debug('Converted to IContent:', {
270
+ originalRole: content.role,
271
+ finalSpeaker,
272
+ blockCount: blocks.length,
273
+ blockTypes: blocks.map((b) => b.type),
274
+ toolCallIds: blocks
275
+ .filter((b) => b.type === 'tool_call')
276
+ .map((b) => b.id),
277
+ toolResponseCallIds: blocks
278
+ .filter((b) => b.type === 'tool_response')
279
+ .map((b) => b.callId),
280
+ });
281
+ return result;
168
282
  }
169
283
  /**
170
284
  * Convert array of IContent to array of Gemini Content
171
285
  */
172
286
  static toGeminiContents(iContents) {
173
- return iContents.map((ic) => this.toGeminiContent(ic));
287
+ this.logger.debug('Converting IContent array to Gemini Contents:', {
288
+ count: iContents.length,
289
+ speakers: iContents.map((ic) => ic.speaker),
290
+ totalToolCalls: iContents.reduce((acc, ic) => acc + ic.blocks.filter((b) => b.type === 'tool_call').length, 0),
291
+ totalToolResponses: iContents.reduce((acc, ic) => acc + ic.blocks.filter((b) => b.type === 'tool_response').length, 0),
292
+ });
293
+ const results = iContents.map((ic) => this.toGeminiContent(ic));
294
+ this.logger.debug('Conversion complete:', {
295
+ resultCount: results.length,
296
+ roles: results.map((r) => r.role),
297
+ });
298
+ return results;
174
299
  }
175
300
  /**
176
301
  * Convert array of Gemini Content to array of IContent
177
302
  */
178
303
  static toIContents(contents) {
179
- return contents.map((c) => this.toIContent(c));
304
+ this.logger.debug('Converting Gemini Contents array to IContent:', {
305
+ count: contents.length,
306
+ roles: contents.map((c) => c.role),
307
+ totalFunctionCalls: contents.reduce((acc, c) => acc + (c.parts?.filter((p) => 'functionCall' in p).length || 0), 0),
308
+ totalFunctionResponses: contents.reduce((acc, c) => acc + (c.parts?.filter((p) => 'functionResponse' in p).length || 0), 0),
309
+ });
310
+ const results = contents.map((c) => this.toIContent(c));
311
+ this.logger.debug('Conversion complete:', {
312
+ resultCount: results.length,
313
+ speakers: results.map((r) => r.speaker),
314
+ });
315
+ return results;
180
316
  }
181
317
  }
182
318
  /**
183
319
  * Generate a unique ID for tool calls
184
320
  */
185
321
  function generateId() {
186
- return `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
322
+ // Use normalized history ID prefix; providers convert prefixes as needed.
323
+ return `hist_tool_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
187
324
  }
188
325
  //# sourceMappingURL=ContentConverters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentConverters.js","sourceRoot":"","sources":["../../../../src/services/history/ContentConverters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContentConverters.js","sourceRoot":"","sources":["../../../../src/services/history/ContentConverters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAC7D,MAAM,CAAC,oBAAoB,CACjC,EAAsB;QAEtB,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YACxB,OAAO,aAAa,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzB,OAAO,aAAa,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,+DAA+D;QAC/D,OAAO,aAAa,EAAE,EAAE,CAAC;IAC3B,CAAC;IACD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,QAAkB;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;YAC1D,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;YACxC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;YACrD,WAAW,EACT,QAAQ,CAAC,MAAM;gBACb,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;iBACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;YAC9C,mBAAmB,EACjB,QAAQ,CAAC,MAAM;gBACb,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;iBAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAuB,CAAC,MAAM,CAAC,IAAI,EAAE;SACvD,CAAC,CAAC;QACH,0DAA0D;QAC1D,IAAI,IAAsB,CAAC;QAC3B,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACxC,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,SAAS,GAAG,KAAkB,CAAC;oBACrC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrC,MAAM;gBACR,CAAC;gBACD,KAAK,WAAW,CAAC,CAAC,CAAC;oBACjB,MAAM,QAAQ,GAAG,KAAsB,CAAC;oBACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE;wBAC/D,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU;qBACrC,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC;wBACT,YAAY,EAAE;4BACZ,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,IAAI,EAAE,QAAQ,CAAC,UAAqC;4BACpD,EAAE,EAAE,QAAQ,CAAC,EAAE;yBAChB;qBACF,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;gBACD,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,YAAY,GAAG,KAA0B,CAAC;oBAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qDAAqD,EACrD;wBACE,MAAM,EAAE,YAAY,CAAC,MAAM;wBAC3B,QAAQ,EAAE,YAAY,CAAC,QAAQ;wBAC/B,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;wBAChC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,KAAK;qBAC/B,CACF,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC;wBACT,gBAAgB,EAAE;4BAChB,IAAI,EAAE,YAAY,CAAC,QAAQ;4BAC3B,QAAQ,EAAE,YAAY,CAAC,MAAiC;4BACxD,EAAE,EAAE,YAAY,CAAC,MAAM;yBACxB;qBACF,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;gBACD,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,aAAa,GAAG,KAAsB,CAAC;oBAC7C,KAAK,CAAC,IAAI,CAAC;wBACT,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,aAAa,CAAC,OAAO;qBAC5B,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,qDAAqD;oBACrD,kEAAkE;oBAClE,MAAM;gBACR,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,mDAAmD;oBACnD,MAAM,SAAS,GAAG,KAAK,CAAC;oBACxB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ;wBACjC,CAAC,CAAC,SAAS,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,UAAU;wBAC1D,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;oBACnB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC/B,MAAM;gBACR,CAAC;gBACD;oBACE,6BAA6B;oBAC7B,MAAM;YACV,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,yCAAyC;QAEzC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;YAChD,IAAI;YACJ,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzB,IAAI,MAAM,IAAI,CAAC;oBAAE,OAAO,MAAM,CAAC;gBAC/B,IAAI,cAAc,IAAI,CAAC;oBAAE,OAAO,cAAc,CAAC;gBAC/C,IAAI,kBAAkB,IAAI,CAAC;oBAAE,OAAO,kBAAkB,CAAC;gBACvD,IAAI,SAAS,IAAI,CAAC;oBAAE,OAAO,SAAS,CAAC;gBACrC,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC;YACF,eAAe,EAAE,KAAK;iBACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,IAAI,CAAC,CAAC;iBAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAwC,CAAC,YAAY,EAAE,EAAE,CAAC;YACzE,mBAAmB,EAAE,KAAK;iBACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,IAAI,CAAC,CAAC;iBACtC,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACH,CAA4C,CAAC,gBAAgB,EAAE,EAAE,CACrE;SACJ,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CACf,OAAgB,EAChB,YAA2B,EAC3B,wBAAyE;QAEzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;YAC1D,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;YACrC,SAAS,EACP,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvB,IAAI,MAAM,IAAI,CAAC;oBAAE,OAAO,MAAM,CAAC;gBAC/B,IAAI,cAAc,IAAI,CAAC;oBAAE,OAAO,cAAc,CAAC;gBAC/C,IAAI,kBAAkB,IAAI,CAAC;oBAAE,OAAO,kBAAkB,CAAC;gBACvD,IAAI,SAAS,IAAI,CAAC;oBAAE,OAAO,SAAS,CAAC;gBACrC,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,IAAI,EAAE;YACV,eAAe,EACb,OAAO,CAAC,KAAK;gBACX,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,IAAI,CAAC,CAAC;iBACnC,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAE,CAAwC,CAAC,YAAY,EAAE,EAAE,CAClE,IAAI,EAAE;YACX,mBAAmB,EACjB,OAAO,CAAC,KAAK;gBACX,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,IAAI,CAAC,CAAC;iBACvC,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACH,CAA4C,CAAC,gBAAgB;gBAC5D,EAAE,EAAE,CACT,IAAI,EAAE;SACZ,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACzD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,sCAAsC;QACtC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,gCAAgC;YAChC,0CAA0C;QAC5C,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9C,oCAAoC;oBACpC,IAAI,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACtC,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,UAAU;4BAChB,OAAO,EAAE,IAAI,CAAC,IAAI;4BAClB,QAAQ,EAAE,IAAI;yBACf,CAAC,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,IAAI;yBAChB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvD,wEAAwE;oBACxE,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oBACnE,MAAM,OAAO,GACX,UAAU,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;oBAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE;wBAC/D,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;wBAChC,OAAO;wBACP,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;wBAC5B,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,UAAU;qBAC5C,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,WAAW;wBACjB,EAAE,EAAE,OAAO;wBACX,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;wBAClC,UAAU,EACP,IAAI,CAAC,YAAY,CAAC,IAAgC,IAAI,EAAE;qBAC5D,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,kBAAkB,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC/D,qFAAqF;oBACrF,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAC1C,IAAI,CAAC,gBAAgB,CAAC,EAAE,CACzB,CAAC;oBACF,MAAM,OAAO,GAAG,CAAC,UAAU;wBACzB,CAAC,CAAC,wBAAwB,EAAE,EAAE;wBAC9B,CAAC,CAAC,SAAS,CAAC;oBACd,MAAM,MAAM,GACV,UAAU;wBACV,OAAO,EAAE,SAAS;wBAClB,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;oBACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qDAAqD,EACrD;wBACE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE;wBACpC,OAAO,EAAE,MAAM;wBACf,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI;wBACpC,iBAAiB,EAAE,CAAC,CAAC,OAAO;qBAC7B,CACF,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,eAAe;wBACrB,MAAM;wBACN,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ;4BAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI;4BAC1B,EAAE,CAAW;wBACf,MAAM,EACH,IAAI,CAAC,gBAAgB,CAAC,QAAoC,IAAI,EAAE;qBACpE,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACnD,6BAA6B;oBAC7B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE;wBACxC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;wBAChC,QAAQ,EAAE,QAAQ;qBACnB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,sEAAsE;QACtE,MAAM,YAAY,GAChB,OAAO,CAAC,IAAI,KAAK,MAAM;YACvB,MAAM,CAAC,MAAM,GAAG,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;YAC7C,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,CAAC;QAEd,MAAM,MAAM,GAAa;YACvB,OAAO,EAAE,YAAY;YACrB,MAAM;YACN,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YAC1C,YAAY,EAAE,OAAO,CAAC,IAAI;YAC1B,YAAY;YACZ,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACrC,WAAW,EAAE,MAAM;iBAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;iBACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAmB,CAAC,EAAE,CAAC;YACtC,mBAAmB,EAAE,MAAM;iBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;iBACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAuB,CAAC,MAAM,CAAC;SAC/C,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAqB;QAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE;YACjE,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;YAC3C,cAAc,EAAE,SAAS,CAAC,MAAM,CAC9B,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CACV,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM,EAC9D,CAAC,CACF;YACD,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CACV,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,MAAM,EAClE,CAAC,CACF;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;YACxC,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,QAAmB;QACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE;YACjE,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClC,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACT,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EACjE,CAAC,CACF;YACD,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CACrC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACT,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EACrE,CAAC,CACF;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;YACxC,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SACxC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;;AAGH;;GAEG;AACH,SAAS,UAAU;IACjB,0EAA0E;IAC1E,OAAO,aAAa,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAClF,CAAC"}
@@ -24,6 +24,15 @@ interface HistoryServiceEventEmitter {
24
24
  emit(event: 'tokensUpdated', eventData: TokensUpdatedEvent): boolean;
25
25
  off(event: 'tokensUpdated', listener: (eventData: TokensUpdatedEvent) => void): this;
26
26
  }
27
+ /**
28
+ * Configuration for compression behavior
29
+ */
30
+ export interface CompressionConfig {
31
+ orphanTimeoutMs: number;
32
+ orphanMessageDistance: number;
33
+ pendingGracePeriodMs: number;
34
+ minMessagesForCompression: number;
35
+ }
27
36
  /**
28
37
  * Service for managing conversation history in a provider-agnostic way.
29
38
  * All history is stored as IContent. Providers are responsible for converting
@@ -34,10 +43,23 @@ export declare class HistoryService extends EventEmitter implements HistoryServi
34
43
  private totalTokens;
35
44
  private tokenizerCache;
36
45
  private tokenizerLock;
46
+ private logger;
47
+ private isCompressing;
48
+ private pendingOperations;
37
49
  /**
38
50
  * Get or create tokenizer for a specific model
39
51
  */
40
52
  private getTokenizerForModel;
53
+ /**
54
+ * Generate a new normalized history tool ID.
55
+ * Format: hist_tool_<uuid-v4>
56
+ */
57
+ generateHistoryId(): string;
58
+ /**
59
+ * Get a callback suitable for passing into converters
60
+ * which will generate normalized history IDs on demand.
61
+ */
62
+ getIdGeneratorCallback(): () => string;
41
63
  /**
42
64
  * Get the current total token count
43
65
  */
@@ -48,6 +70,7 @@ export declare class HistoryService extends EventEmitter implements HistoryServi
48
70
  * Filtering happens only when getting curated history.
49
71
  */
50
72
  add(content: IContent, modelName?: string): void;
73
+ private addInternal;
51
74
  /**
52
75
  * Atomically update token count for new content
53
76
  */
@@ -72,6 +95,7 @@ export declare class HistoryService extends EventEmitter implements HistoryServi
72
95
  * Clear all history
73
96
  */
74
97
  clear(): void;
98
+ private clearInternal;
75
99
  /**
76
100
  * Get the last N messages from history
77
101
  */
@@ -133,6 +157,19 @@ export declare class HistoryService extends EventEmitter implements HistoryServi
133
157
  * Validate and fix the history to ensure proper tool call/response pairing
134
158
  */
135
159
  validateAndFix(): void;
160
+ /**
161
+ * Get curated history with circular references removed for providers.
162
+ * This ensures the history can be safely serialized and sent to providers.
163
+ */
164
+ getCuratedForProvider(): IContent[];
165
+ /**
166
+ * Deep clone content array, removing circular references
167
+ */
168
+ private deepCloneWithoutCircularRefs;
169
+ /**
170
+ * Sanitize parameters to remove circular references
171
+ */
172
+ private sanitizeParams;
136
173
  /**
137
174
  * Merge two histories, handling duplicates and conflicts
138
175
  */
@@ -153,6 +190,21 @@ export declare class HistoryService extends EventEmitter implements HistoryServi
153
190
  * Import history from JSON
154
191
  */
155
192
  static fromJSON(json: string): HistoryService;
193
+ /**
194
+ * Mark compression as starting
195
+ * This will cause add() operations to queue until compression completes
196
+ */
197
+ startCompression(): void;
198
+ /**
199
+ * Mark compression as complete
200
+ * This will flush all queued operations
201
+ */
202
+ endCompression(): void;
203
+ /**
204
+ * Wait for all pending operations to complete
205
+ * For synchronous operations, this is now a no-op but kept for API compatibility
206
+ */
207
+ waitForPendingOperations(): Promise<void>;
156
208
  /**
157
209
  * Get conversation statistics
158
210
  */