|
|
@@ -37,6 +37,7 @@ class MockApiHandler extends BaseProvider {
|
|
|
|
|
|
// Create a singleton instance for tests
|
|
|
const mockApiHandler = new MockApiHandler()
|
|
|
+const taskId = "test-task-id"
|
|
|
|
|
|
/**
|
|
|
* Tests for the truncateConversation function
|
|
|
@@ -49,7 +50,7 @@ describe("truncateConversation", () => {
|
|
|
{ role: "user", content: "Third message" },
|
|
|
]
|
|
|
|
|
|
- const result = truncateConversation(messages, 0.5)
|
|
|
+ const result = truncateConversation(messages, 0.5, taskId)
|
|
|
|
|
|
// With 2 messages after the first, 0.5 fraction means remove 1 message
|
|
|
// But 1 is odd, so it rounds down to 0 (to make it even)
|
|
|
@@ -70,7 +71,7 @@ describe("truncateConversation", () => {
|
|
|
|
|
|
// 4 messages excluding first, 0.5 fraction = 2 messages to remove
|
|
|
// 2 is already even, so no rounding needed
|
|
|
- const result = truncateConversation(messages, 0.5)
|
|
|
+ const result = truncateConversation(messages, 0.5, taskId)
|
|
|
|
|
|
expect(result.length).toBe(3)
|
|
|
expect(result[0]).toEqual(messages[0])
|
|
|
@@ -91,7 +92,7 @@ describe("truncateConversation", () => {
|
|
|
|
|
|
// 6 messages excluding first, 0.3 fraction = 1.8 messages to remove
|
|
|
// 1.8 rounds down to 1, then to 0 to make it even
|
|
|
- const result = truncateConversation(messages, 0.3)
|
|
|
+ const result = truncateConversation(messages, 0.3, taskId)
|
|
|
|
|
|
expect(result.length).toBe(7) // No messages removed
|
|
|
expect(result).toEqual(messages)
|
|
|
@@ -104,7 +105,7 @@ describe("truncateConversation", () => {
|
|
|
{ role: "user", content: "Third message" },
|
|
|
]
|
|
|
|
|
|
- const result = truncateConversation(messages, 0)
|
|
|
+ const result = truncateConversation(messages, 0, taskId)
|
|
|
|
|
|
expect(result).toEqual(messages)
|
|
|
})
|
|
|
@@ -119,7 +120,7 @@ describe("truncateConversation", () => {
|
|
|
|
|
|
// 3 messages excluding first, 1.0 fraction = 3 messages to remove
|
|
|
// But 3 is odd, so it rounds down to 2 to make it even
|
|
|
- const result = truncateConversation(messages, 1)
|
|
|
+ const result = truncateConversation(messages, 1, taskId)
|
|
|
|
|
|
expect(result.length).toBe(2)
|
|
|
expect(result[0]).toEqual(messages[0])
|
|
|
@@ -251,6 +252,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
// Check the new return type
|
|
|
@@ -282,6 +284,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
expect(result).toEqual({
|
|
|
@@ -311,6 +314,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
const result2 = await truncateConversationIfNeeded({
|
|
|
@@ -322,6 +326,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
expect(result1.messages).toEqual(result2.messages)
|
|
|
@@ -340,6 +345,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
const result4 = await truncateConversationIfNeeded({
|
|
|
@@ -351,6 +357,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
expect(result3.messages).toEqual(result4.messages)
|
|
|
@@ -384,6 +391,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(resultWithSmall).toEqual({
|
|
|
messages: messagesWithSmallContent,
|
|
|
@@ -416,6 +424,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(resultWithLarge.messages).not.toEqual(messagesWithLargeContent) // Should truncate
|
|
|
expect(resultWithLarge.summary).toBe("")
|
|
|
@@ -441,6 +450,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(resultWithVeryLarge.messages).not.toEqual(messagesWithVeryLargeContent) // Should truncate
|
|
|
expect(resultWithVeryLarge.summary).toBe("")
|
|
|
@@ -469,6 +479,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result).toEqual({
|
|
|
messages: expectedResult,
|
|
|
@@ -510,10 +521,11 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: true,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
// Verify summarizeConversation was called with the right parameters
|
|
|
- expect(summarizeSpy).toHaveBeenCalledWith(messagesWithSmallContent, mockApiHandler, "System prompt")
|
|
|
+ expect(summarizeSpy).toHaveBeenCalledWith(messagesWithSmallContent, mockApiHandler, "System prompt", taskId)
|
|
|
|
|
|
// Verify the result contains the summary information
|
|
|
expect(result).toMatchObject({
|
|
|
@@ -557,6 +569,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: true,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
// Verify summarizeConversation was called
|
|
|
@@ -594,6 +607,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 50, // This shouldn't matter since autoCondenseContext is false
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
// Verify summarizeConversation was not called
|
|
|
@@ -645,10 +659,11 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: true,
|
|
|
autoCondenseContextPercent: 50, // Set threshold to 50% - our tokens are at 60%
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
// Verify summarizeConversation was called with the right parameters
|
|
|
- expect(summarizeSpy).toHaveBeenCalledWith(messagesWithSmallContent, mockApiHandler, "System prompt")
|
|
|
+ expect(summarizeSpy).toHaveBeenCalledWith(messagesWithSmallContent, mockApiHandler, "System prompt", taskId)
|
|
|
|
|
|
// Verify the result contains the summary information
|
|
|
expect(result).toMatchObject({
|
|
|
@@ -682,6 +697,7 @@ describe("truncateConversationIfNeeded", () => {
|
|
|
autoCondenseContext: true,
|
|
|
autoCondenseContextPercent: 50, // Set threshold to 50% - our tokens are at 40%
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
|
|
|
// Verify summarizeConversation was not called
|
|
|
@@ -738,6 +754,7 @@ describe("getMaxTokens", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result1).toEqual({
|
|
|
messages: messagesWithSmallContent,
|
|
|
@@ -756,6 +773,7 @@ describe("getMaxTokens", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result2.messages).not.toEqual(messagesWithSmallContent)
|
|
|
expect(result2.messages.length).toBe(3) // Truncated with 0.5 fraction
|
|
|
@@ -782,6 +800,7 @@ describe("getMaxTokens", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result1).toEqual({
|
|
|
messages: messagesWithSmallContent,
|
|
|
@@ -800,6 +819,7 @@ describe("getMaxTokens", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result2.messages).not.toEqual(messagesWithSmallContent)
|
|
|
expect(result2.messages.length).toBe(3) // Truncated with 0.5 fraction
|
|
|
@@ -825,6 +845,7 @@ describe("getMaxTokens", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result1.messages).toEqual(messagesWithSmallContent)
|
|
|
|
|
|
@@ -838,6 +859,7 @@ describe("getMaxTokens", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result2).not.toEqual(messagesWithSmallContent)
|
|
|
expect(result2.messages.length).toBe(3) // Truncated with 0.5 fraction
|
|
|
@@ -861,6 +883,7 @@ describe("getMaxTokens", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result1.messages).toEqual(messagesWithSmallContent)
|
|
|
|
|
|
@@ -874,6 +897,7 @@ describe("getMaxTokens", () => {
|
|
|
autoCondenseContext: false,
|
|
|
autoCondenseContextPercent: 100,
|
|
|
systemPrompt: "System prompt",
|
|
|
+ taskId,
|
|
|
})
|
|
|
expect(result2).not.toEqual(messagesWithSmallContent)
|
|
|
expect(result2.messages.length).toBe(3) // Truncated with 0.5 fraction
|