@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.
- package/dist/src/config/config.js +5 -2
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/models.d.ts +1 -1
- package/dist/src/config/models.js +1 -1
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/multiAgentModels.d.ts +6 -6
- package/dist/src/config/multiAgentModels.js +30 -20
- package/dist/src/config/multiAgentModels.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/ide/ideContext.d.ts +42 -42
- package/dist/src/utils/messageTruncator.js +24 -23
- package/dist/src/utils/messageTruncator.js.map +1 -1
- package/dist/src/utils/messageTruncator.test.d.ts +14 -0
- package/dist/src/utils/messageTruncator.test.js +174 -0
- package/dist/src/utils/messageTruncator.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -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; //
|
|
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
|
-
|
|
62
|
-
|
|
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
|
-
//
|
|
269
|
-
const
|
|
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
|
|
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
|
|
307
|
-
if (
|
|
308
|
-
truncatedMessages.push(
|
|
310
|
+
// Add the final message back (always preserved)
|
|
311
|
+
if (lastMessage) {
|
|
312
|
+
truncatedMessages.push(lastMessage);
|
|
309
313
|
}
|
|
310
|
-
// 5. Trim the final message if
|
|
311
|
-
if (tokensToRemove > 0 &&
|
|
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
|
-
|
|
319
|
-
if (inpTotalTokensAfter >
|
|
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
|
-
|
|
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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"}
|