@blackbox_ai/blackbox-cli-core 0.9.2 → 1.0.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.
@@ -25,21 +25,21 @@ export declare const FileSchema: z.ZodObject<{
25
25
  }, "strip", z.ZodTypeAny, {
26
26
  path: string;
27
27
  timestamp: number;
28
- isActive?: boolean | undefined;
29
- selectedText?: string | undefined;
30
28
  cursor?: {
31
29
  line: number;
32
30
  character: number;
33
31
  } | undefined;
32
+ isActive?: boolean | undefined;
33
+ selectedText?: string | undefined;
34
34
  }, {
35
35
  path: string;
36
36
  timestamp: number;
37
- isActive?: boolean | undefined;
38
- selectedText?: string | undefined;
39
37
  cursor?: {
40
38
  line: number;
41
39
  character: number;
42
40
  } | undefined;
41
+ isActive?: boolean | undefined;
42
+ selectedText?: string | undefined;
43
43
  }>;
44
44
  export type File = z.infer<typeof FileSchema>;
45
45
  export declare const IdeContextSchema: z.ZodObject<{
@@ -62,43 +62,43 @@ export declare const IdeContextSchema: z.ZodObject<{
62
62
  }, "strip", z.ZodTypeAny, {
63
63
  path: string;
64
64
  timestamp: number;
65
- isActive?: boolean | undefined;
66
- selectedText?: string | undefined;
67
65
  cursor?: {
68
66
  line: number;
69
67
  character: number;
70
68
  } | undefined;
69
+ isActive?: boolean | undefined;
70
+ selectedText?: string | undefined;
71
71
  }, {
72
72
  path: string;
73
73
  timestamp: number;
74
- isActive?: boolean | undefined;
75
- selectedText?: string | undefined;
76
74
  cursor?: {
77
75
  line: number;
78
76
  character: number;
79
77
  } | undefined;
78
+ isActive?: boolean | undefined;
79
+ selectedText?: string | undefined;
80
80
  }>, "many">>;
81
81
  }, "strip", z.ZodTypeAny, {
82
82
  openFiles?: {
83
83
  path: string;
84
84
  timestamp: number;
85
- isActive?: boolean | undefined;
86
- selectedText?: string | undefined;
87
85
  cursor?: {
88
86
  line: number;
89
87
  character: number;
90
88
  } | undefined;
89
+ isActive?: boolean | undefined;
90
+ selectedText?: string | undefined;
91
91
  }[] | undefined;
92
92
  }, {
93
93
  openFiles?: {
94
94
  path: string;
95
95
  timestamp: number;
96
- isActive?: boolean | undefined;
97
- selectedText?: string | undefined;
98
96
  cursor?: {
99
97
  line: number;
100
98
  character: number;
101
99
  } | undefined;
100
+ isActive?: boolean | undefined;
101
+ selectedText?: string | undefined;
102
102
  }[] | undefined;
103
103
  }>>;
104
104
  }, "strip", z.ZodTypeAny, {
@@ -106,12 +106,12 @@ export declare const IdeContextSchema: z.ZodObject<{
106
106
  openFiles?: {
107
107
  path: string;
108
108
  timestamp: number;
109
- isActive?: boolean | undefined;
110
- selectedText?: string | undefined;
111
109
  cursor?: {
112
110
  line: number;
113
111
  character: number;
114
112
  } | undefined;
113
+ isActive?: boolean | undefined;
114
+ selectedText?: string | undefined;
115
115
  }[] | undefined;
116
116
  } | undefined;
117
117
  }, {
@@ -119,12 +119,12 @@ export declare const IdeContextSchema: z.ZodObject<{
119
119
  openFiles?: {
120
120
  path: string;
121
121
  timestamp: number;
122
- isActive?: boolean | undefined;
123
- selectedText?: string | undefined;
124
122
  cursor?: {
125
123
  line: number;
126
124
  character: number;
127
125
  } | undefined;
126
+ isActive?: boolean | undefined;
127
+ selectedText?: string | undefined;
128
128
  }[] | undefined;
129
129
  } | undefined;
130
130
  }>;
@@ -155,43 +155,43 @@ export declare const IdeContextNotificationSchema: z.ZodObject<{
155
155
  }, "strip", z.ZodTypeAny, {
156
156
  path: string;
157
157
  timestamp: number;
158
- isActive?: boolean | undefined;
159
- selectedText?: string | undefined;
160
158
  cursor?: {
161
159
  line: number;
162
160
  character: number;
163
161
  } | undefined;
162
+ isActive?: boolean | undefined;
163
+ selectedText?: string | undefined;
164
164
  }, {
165
165
  path: string;
166
166
  timestamp: number;
167
- isActive?: boolean | undefined;
168
- selectedText?: string | undefined;
169
167
  cursor?: {
170
168
  line: number;
171
169
  character: number;
172
170
  } | undefined;
171
+ isActive?: boolean | undefined;
172
+ selectedText?: string | undefined;
173
173
  }>, "many">>;
174
174
  }, "strip", z.ZodTypeAny, {
175
175
  openFiles?: {
176
176
  path: string;
177
177
  timestamp: number;
178
- isActive?: boolean | undefined;
179
- selectedText?: string | undefined;
180
178
  cursor?: {
181
179
  line: number;
182
180
  character: number;
183
181
  } | undefined;
182
+ isActive?: boolean | undefined;
183
+ selectedText?: string | undefined;
184
184
  }[] | undefined;
185
185
  }, {
186
186
  openFiles?: {
187
187
  path: string;
188
188
  timestamp: number;
189
- isActive?: boolean | undefined;
190
- selectedText?: string | undefined;
191
189
  cursor?: {
192
190
  line: number;
193
191
  character: number;
194
192
  } | undefined;
193
+ isActive?: boolean | undefined;
194
+ selectedText?: string | undefined;
195
195
  }[] | undefined;
196
196
  }>>;
197
197
  }, "strip", z.ZodTypeAny, {
@@ -199,12 +199,12 @@ export declare const IdeContextNotificationSchema: z.ZodObject<{
199
199
  openFiles?: {
200
200
  path: string;
201
201
  timestamp: number;
202
- isActive?: boolean | undefined;
203
- selectedText?: string | undefined;
204
202
  cursor?: {
205
203
  line: number;
206
204
  character: number;
207
205
  } | undefined;
206
+ isActive?: boolean | undefined;
207
+ selectedText?: string | undefined;
208
208
  }[] | undefined;
209
209
  } | undefined;
210
210
  }, {
@@ -212,49 +212,49 @@ export declare const IdeContextNotificationSchema: z.ZodObject<{
212
212
  openFiles?: {
213
213
  path: string;
214
214
  timestamp: number;
215
- isActive?: boolean | undefined;
216
- selectedText?: string | undefined;
217
215
  cursor?: {
218
216
  line: number;
219
217
  character: number;
220
218
  } | undefined;
219
+ isActive?: boolean | undefined;
220
+ selectedText?: string | undefined;
221
221
  }[] | undefined;
222
222
  } | undefined;
223
223
  }>;
224
224
  }, "strip", z.ZodTypeAny, {
225
+ method: "ide/contextUpdate";
225
226
  params: {
226
227
  workspaceState?: {
227
228
  openFiles?: {
228
229
  path: string;
229
230
  timestamp: number;
230
- isActive?: boolean | undefined;
231
- selectedText?: string | undefined;
232
231
  cursor?: {
233
232
  line: number;
234
233
  character: number;
235
234
  } | undefined;
235
+ isActive?: boolean | undefined;
236
+ selectedText?: string | undefined;
236
237
  }[] | undefined;
237
238
  } | undefined;
238
239
  };
239
240
  jsonrpc: "2.0";
240
- method: "ide/contextUpdate";
241
241
  }, {
242
+ method: "ide/contextUpdate";
242
243
  params: {
243
244
  workspaceState?: {
244
245
  openFiles?: {
245
246
  path: string;
246
247
  timestamp: number;
247
- isActive?: boolean | undefined;
248
- selectedText?: string | undefined;
249
248
  cursor?: {
250
249
  line: number;
251
250
  character: number;
252
251
  } | undefined;
252
+ isActive?: boolean | undefined;
253
+ selectedText?: string | undefined;
253
254
  }[] | undefined;
254
255
  } | undefined;
255
256
  };
256
257
  jsonrpc: "2.0";
257
- method: "ide/contextUpdate";
258
258
  }>;
259
259
  export declare const IdeDiffAcceptedNotificationSchema: z.ZodObject<{
260
260
  jsonrpc: z.ZodLiteral<"2.0">;
@@ -263,26 +263,26 @@ export declare const IdeDiffAcceptedNotificationSchema: z.ZodObject<{
263
263
  filePath: z.ZodString;
264
264
  content: z.ZodString;
265
265
  }, "strip", z.ZodTypeAny, {
266
- filePath: string;
267
266
  content: string;
268
- }, {
269
267
  filePath: string;
268
+ }, {
270
269
  content: string;
270
+ filePath: string;
271
271
  }>;
272
272
  }, "strip", z.ZodTypeAny, {
273
+ method: "ide/diffAccepted";
273
274
  params: {
274
- filePath: string;
275
275
  content: string;
276
+ filePath: string;
276
277
  };
277
278
  jsonrpc: "2.0";
278
- method: "ide/diffAccepted";
279
279
  }, {
280
+ method: "ide/diffAccepted";
280
281
  params: {
281
- filePath: string;
282
282
  content: string;
283
+ filePath: string;
283
284
  };
284
285
  jsonrpc: "2.0";
285
- method: "ide/diffAccepted";
286
286
  }>;
287
287
  export declare const IdeDiffClosedNotificationSchema: z.ZodObject<{
288
288
  jsonrpc: z.ZodLiteral<"2.0">;
@@ -298,19 +298,19 @@ export declare const IdeDiffClosedNotificationSchema: z.ZodObject<{
298
298
  content?: string | undefined;
299
299
  }>;
300
300
  }, "strip", z.ZodTypeAny, {
301
+ method: "ide/diffClosed";
301
302
  params: {
302
303
  filePath: string;
303
304
  content?: string | undefined;
304
305
  };
305
306
  jsonrpc: "2.0";
306
- method: "ide/diffClosed";
307
307
  }, {
308
+ method: "ide/diffClosed";
308
309
  params: {
309
310
  filePath: string;
310
311
  content?: string | undefined;
311
312
  };
312
313
  jsonrpc: "2.0";
313
- method: "ide/diffClosed";
314
314
  }>;
315
315
  export declare const CloseDiffResponseSchema: z.ZodEffects<z.ZodObject<{
316
316
  content: z.ZodArray<z.ZodObject<{
@@ -11,7 +11,7 @@ const STANDARD_CONTEXT_BUFFER = 500;
11
11
  const ANTHROPIC_LARGE_CONTEXT_THRESHOLD = 16000;
12
12
  const ANTHROPIC_LARGE_CONTEXT_MULTIPLIER = 0.9; // Safety buffer
13
13
  const SAFE_DEFAULT_MAX_TOKENS = 4096;
14
- const INITIAL_MESSAGES_TO_KEEP = 3; // For our case this should be 4
14
+ const INITIAL_MESSAGES_TO_KEEP = 3; // Number of messages to preserve after system prompt
15
15
  export class MessageTruncator {
16
16
  debugMode = false;
17
17
  constructor(debugMode = false) {
@@ -55,11 +55,17 @@ export class MessageTruncator {
55
55
  }
56
56
  }
57
57
  }
58
- // Count tool calls if present
58
+ // Count tool calls if present (include name, id, and arguments)
59
59
  if (msg.tool_calls) {
60
60
  for (const tool of msg.tool_calls) {
61
- if (tool.function && tool.function.arguments) {
62
- numTokens += enc.encode(tool.function.arguments).length;
61
+ numTokens += 4; // Overhead for tool call structure
62
+ if (tool.function) {
63
+ if (tool.function.name) {
64
+ numTokens += enc.encode(tool.function.name).length;
65
+ }
66
+ if (tool.function.arguments) {
67
+ numTokens += enc.encode(tool.function.arguments).length;
68
+ }
63
69
  }
64
70
  }
65
71
  }
@@ -265,14 +271,11 @@ export class MessageTruncator {
265
271
  let tokensToRemove = currentInpTotalTokens - maxAllowedSize;
266
272
  let removedTokens = 0;
267
273
  // 1. Setup lists
268
- // Only exclude last message if it's a user message
269
- const lastMessageIsUser = currentMessages.length > 0 && currentMessages[currentMessages.length - 1].role === 'user';
270
- let messagesToConsider = currentMessages;
271
- if (lastMessageIsUser) {
272
- messagesToConsider = currentMessages.slice(0, -1); // All except last user message
273
- }
274
+ // Always preserve the last message regardless of role
275
+ const lastMessage = currentMessages.length > 0 ? currentMessages[currentMessages.length - 1] : null;
276
+ let messagesToConsider = currentMessages.length > 0 ? currentMessages.slice(0, -1) : [];
274
277
  // Always keep first message (System/Task)
275
- if (currentMessages[0].role === 'system') {
278
+ if (currentMessages.length > 0 && currentMessages[0].role === 'system') {
276
279
  truncatedMessages.push(currentMessages[0]);
277
280
  messagesToConsider = messagesToConsider.slice(1);
278
281
  }
@@ -293,7 +296,8 @@ export class MessageTruncator {
293
296
  const fullMsgTokens = this.countTokens(enc, [message]);
294
297
  removedTokens += fullMsgTokens;
295
298
  }
296
- tokensToRemove -= removedTokens;
299
+ // Ensure tokensToRemove doesn't go negative
300
+ tokensToRemove = Math.max(0, tokensToRemove - removedTokens);
297
301
  // 3. Handle the "Last of the Initial Kept Messages" (Trim tail of the head)
298
302
  if (tokensToRemove > 0 && truncatedMessages.length > 0) {
299
303
  const lastIndex = truncatedMessages.length - 1;
@@ -303,24 +307,23 @@ export class MessageTruncator {
303
307
  }
304
308
  // 4. Reassemble
305
309
  truncatedMessages.push(...truncatedMiddleMessages);
306
- // Add the final message back if it was excluded (only user messages are excluded)
307
- if (lastMessageIsUser) {
308
- truncatedMessages.push(currentMessages[currentMessages.length - 1]);
310
+ // Add the final message back (always preserved)
311
+ if (lastMessage) {
312
+ truncatedMessages.push(lastMessage);
309
313
  }
310
- // 5. Trim the final message if needed (only if it's a user message)
311
- if (tokensToRemove > 0 && lastMessageIsUser) {
314
+ // 5. Trim the final message if still over limit
315
+ if (tokensToRemove > 0 && lastMessage) {
312
316
  const lastIndex = truncatedMessages.length - 1;
313
317
  const [newContent, remainingTokens] = this.truncateMessageContent(enc, truncatedMessages[lastIndex].content, tokensToRemove);
314
318
  truncatedMessages[lastIndex].content = newContent;
315
319
  tokensToRemove = remainingTokens;
316
320
  }
317
321
  // --- Final Safety Check ---
318
- let inpTotalTokensAfter = this.countTokens(enc, truncatedMessages);
319
- if (inpTotalTokensAfter > maxInputTokens) {
322
+ const inpTotalTokensAfter = this.countTokens(enc, truncatedMessages);
323
+ if (inpTotalTokensAfter > maxAllowedSize && truncatedMessages.length > 0) {
320
324
  if (truncatedMessages[0].role === 'system') {
321
325
  // Keep System + Last Message
322
326
  const newTruncated = [truncatedMessages[0], truncatedMessages[truncatedMessages.length - 1]];
323
- inpTotalTokensAfter = this.countTokens(enc, newTruncated);
324
327
  // Clean up system if it was virtually added
325
328
  if (systemAddedToTop)
326
329
  return newTruncated.slice(1);
@@ -328,9 +331,7 @@ export class MessageTruncator {
328
331
  }
329
332
  else {
330
333
  // Keep Last Message Only
331
- const newTruncated = [truncatedMessages[truncatedMessages.length - 1]];
332
- inpTotalTokensAfter = this.countTokens(enc, newTruncated);
333
- return newTruncated;
334
+ return [truncatedMessages[truncatedMessages.length - 1]];
334
335
  }
335
336
  }
336
337
  if (systemAddedToTop) {
@@ -1 +1 @@
1
- {"version":3,"file":"messageTruncator.js","sourceRoot":"","sources":["../../../src/utils/messageTruncator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageTruncator.js","sourceRoot":"","sources":["../../../src/utils/messageTruncator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Blackbox
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * MessageTruncator Bug Proof Test Suite
7
+ *
8
+ * Run: npx vitest run src/utils/messageTruncator.test.ts
9
+ *
10
+ * PROVEN BUGS:
11
+ * - Bug #5: Empty array crash (test fails with TypeError)
12
+ * - Bug #2: Lost assistant messages (test fails when >4 messages after system)
13
+ */
14
+ export {};
@@ -0,0 +1,174 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Blackbox
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * MessageTruncator Bug Proof Test Suite
7
+ *
8
+ * Run: npx vitest run src/utils/messageTruncator.test.ts
9
+ *
10
+ * PROVEN BUGS:
11
+ * - Bug #5: Empty array crash (test fails with TypeError)
12
+ * - Bug #2: Lost assistant messages (test fails when >4 messages after system)
13
+ */
14
+ import { describe, it, expect, beforeEach } from 'vitest';
15
+ import { MessageTruncator } from './messageTruncator.js';
16
+ describe('MessageTruncator Bug Proof Tests', () => {
17
+ let truncator;
18
+ beforeEach(() => {
19
+ truncator = new MessageTruncator(false);
20
+ });
21
+ /**
22
+ * ============================================================
23
+ * BUG #5: Empty Array Crash
24
+ * ============================================================
25
+ * PROVEN: TypeError when empty array passed
26
+ */
27
+ describe('BUG #5: Empty array crash [PROVEN]', () => {
28
+ it('PROOF: Empty array causes TypeError crash', () => {
29
+ const emptyMessages = [];
30
+ expect(() => {
31
+ truncator.truncateLongMessages('gpt-4', emptyMessages, 8192);
32
+ }).not.toThrow();
33
+ });
34
+ });
35
+ /**
36
+ * ============================================================
37
+ * BUG #2: Lost Non-User Last Messages
38
+ * ============================================================
39
+ * The bug occurs when:
40
+ * 1. Last message is NOT 'user' role
41
+ * 2. There are >INITIAL_MESSAGES_TO_KEEP (3) messages after system
42
+ * 3. Truncation is needed
43
+ *
44
+ * In this case, the last non-user message is NOT added back
45
+ */
46
+ describe('BUG #2: Lost non-user last messages [PROVEN]', () => {
47
+ it('PROOF: Assistant last message lost with many messages', () => {
48
+ // Create scenario:
49
+ // - 6 messages after system (more than INITIAL_MESSAGES_TO_KEEP=3)
50
+ // - Last message is assistant
51
+ // - Force truncation with large content
52
+ const messages = [
53
+ { role: 'system', content: 'System' },
54
+ { role: 'user', content: 'U1-' + 'X'.repeat(1000) },
55
+ { role: 'assistant', content: 'A1-' + 'X'.repeat(1000) },
56
+ { role: 'user', content: 'U2-' + 'X'.repeat(1000) },
57
+ { role: 'assistant', content: 'A2-' + 'X'.repeat(1000) },
58
+ { role: 'user', content: 'U3-' + 'X'.repeat(1000) },
59
+ { role: 'assistant', content: 'FINAL_ASSISTANT_MESSAGE' }, // This should be preserved!
60
+ ];
61
+ // gpt-3.5-turbo: 4096 tokens max
62
+ // ~7000 chars = ~1750 tokens input
63
+ // with 2500 output reserved, maxAllowed = 4096-500-2500 = 1096
64
+ // So truncation WILL happen
65
+ const result = truncator.truncateLongMessages('gpt-3.5-turbo', messages, 2500);
66
+ // Check if FINAL_ASSISTANT_MESSAGE is in the result
67
+ const finalAssistantFound = result.some(m => typeof m.content === 'string' && m.content.includes('FINAL_ASSISTANT'));
68
+ // Use expect to show what we got
69
+ expect(result.length).toBeGreaterThan(0);
70
+ expect(result.map(m => m.role)).toBeDefined(); // Just for logging
71
+ // BUG: The final assistant message should be preserved but ISN'T
72
+ // because the code at line 391-394 only adds back 'user' messages
73
+ expect(finalAssistantFound).toBe(true);
74
+ });
75
+ it('PROOF: Shorter conversation - assistant IS preserved (no bug)', () => {
76
+ // With only 2 messages after system, INITIAL_MESSAGES_TO_KEEP covers them
77
+ const messages = [
78
+ { role: 'system', content: 'System' },
79
+ { role: 'user', content: 'Question-' + 'Y'.repeat(3000) },
80
+ { role: 'assistant', content: 'SHORT_ASSISTANT' },
81
+ ];
82
+ const result = truncator.truncateLongMessages('gpt-3.5-turbo', messages, 2500);
83
+ // This should pass because INITIAL_MESSAGES_TO_KEEP (3) covers all messages
84
+ const assistantFound = result.some(m => typeof m.content === 'string' && m.content.includes('SHORT_ASSISTANT'));
85
+ expect(assistantFound).toBe(true);
86
+ });
87
+ });
88
+ /**
89
+ * ============================================================
90
+ * BUG #1: Negative tokensToRemove [BEHAVIORAL]
91
+ * ============================================================
92
+ */
93
+ describe('BUG #1: Negative tokensToRemove', () => {
94
+ it('INFO: Line 374 can produce negative value', () => {
95
+ const messages = [
96
+ { role: 'system', content: 'S' },
97
+ { role: 'user', content: 'U1' },
98
+ { role: 'assistant', content: 'V'.repeat(8000) },
99
+ { role: 'user', content: 'U2' },
100
+ ];
101
+ const result = truncator.truncateLongMessages('gpt-3.5-turbo', messages, 2000);
102
+ expect(result.length).toBeGreaterThan(0);
103
+ });
104
+ });
105
+ /**
106
+ * ============================================================
107
+ * BUG #3: Incomplete Tool Call Token Counting [BEHAVIORAL]
108
+ * ============================================================
109
+ */
110
+ describe('BUG #3: Incomplete tool call counting', () => {
111
+ it('INFO: Only arguments counted, not name', () => {
112
+ const messages = [{
113
+ role: 'assistant',
114
+ content: '',
115
+ tool_calls: [{
116
+ function: {
117
+ name: 'very_long_function_name_not_counted',
118
+ arguments: '{}',
119
+ },
120
+ }],
121
+ }];
122
+ const result = truncator.truncateLongMessages('gpt-4-turbo', messages, 8192);
123
+ expect(result).toBeDefined();
124
+ });
125
+ });
126
+ /**
127
+ * ============================================================
128
+ * BUG #4: Wrong Safety Check Limit [BEHAVIORAL]
129
+ * ============================================================
130
+ */
131
+ describe('BUG #4: Wrong safety check limit', () => {
132
+ it('INFO: Line 410 uses maxInputTokens not maxAllowedSize', () => {
133
+ const messages = [{ role: 'user', content: 'A'.repeat(8000) }];
134
+ const result = truncator.truncateLongMessages('gpt-3.5-turbo', messages, 2000);
135
+ expect(result).toBeDefined();
136
+ });
137
+ });
138
+ /**
139
+ * ============================================================
140
+ * BUG #6: Misleading Comment [DOCUMENTATION]
141
+ * ============================================================
142
+ */
143
+ describe('BUG #6: Misleading comment', () => {
144
+ it('INFO: Line 17 comment incorrect', () => {
145
+ expect(true).toBe(true);
146
+ });
147
+ });
148
+ /**
149
+ * ============================================================
150
+ * Functional Tests
151
+ * ============================================================
152
+ */
153
+ describe('Functional Tests', () => {
154
+ it('preserves system message', () => {
155
+ const messages = [
156
+ { role: 'system', content: 'SYS' },
157
+ { role: 'user', content: 'Q'.repeat(6000) },
158
+ { role: 'user', content: 'Follow' },
159
+ ];
160
+ const result = truncator.truncateLongMessages('gpt-3.5-turbo', messages, 2000);
161
+ expect(result[0].content).toBe('SYS');
162
+ });
163
+ it('handles single message', () => {
164
+ const result = truncator.truncateLongMessages('gpt-4-turbo', [{ role: 'user', content: 'Hello' }], 8192);
165
+ expect(result).toHaveLength(1);
166
+ });
167
+ it('truncates long content', () => {
168
+ const long = 'B'.repeat(6000);
169
+ const result = truncator.truncateLongMessages('gpt-3.5-turbo', [{ role: 'user', content: long }], 3000);
170
+ expect(result[0].content.length).toBeLessThan(long.length);
171
+ }, 30000);
172
+ });
173
+ });
174
+ //# sourceMappingURL=messageTruncator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageTruncator.test.js","sourceRoot":"","sources":["../../../src/utils/messageTruncator.test.ts"],"names":[],"mappings":"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"}