@google/gemini-cli-core 0.21.0-nightly.20251204.3da4fd5f7 → 0.21.0-nightly.20251206.3cf44acc0
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/google-gemini-cli-core-0.21.0-nightly.20251204.3da4fd5f7.tgz +0 -0
- package/dist/src/commands/restore.d.ts +19 -0
- package/dist/src/commands/restore.js +45 -0
- package/dist/src/commands/restore.js.map +1 -0
- package/dist/src/commands/restore.test.d.ts +6 -0
- package/dist/src/commands/restore.test.js +136 -0
- package/dist/src/commands/restore.test.js.map +1 -0
- package/dist/src/commands/types.d.ts +41 -0
- package/dist/src/commands/types.js +7 -0
- package/dist/src/commands/types.js.map +1 -0
- package/dist/src/core/client.js +2 -1
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +19 -0
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/geminiChat.js +16 -5
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +7 -3
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiChat_network_retry.test.d.ts +6 -0
- package/dist/src/core/geminiChat_network_retry.test.js +195 -0
- package/dist/src/core/geminiChat_network_retry.test.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/output/json-formatter.d.ts +2 -2
- package/dist/src/output/json-formatter.js +6 -3
- package/dist/src/output/json-formatter.js.map +1 -1
- package/dist/src/output/json-formatter.test.js +35 -9
- package/dist/src/output/json-formatter.test.js.map +1 -1
- package/dist/src/output/types.d.ts +1 -0
- package/dist/src/output/types.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +9 -0
- package/dist/src/services/chatRecordingService.js +30 -0
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/sessionSummaryService.d.ts +28 -0
- package/dist/src/services/sessionSummaryService.js +131 -0
- package/dist/src/services/sessionSummaryService.js.map +1 -0
- package/dist/src/services/sessionSummaryService.test.d.ts +6 -0
- package/dist/src/services/sessionSummaryService.test.js +785 -0
- package/dist/src/services/sessionSummaryService.test.js.map +1 -0
- package/dist/src/services/sessionSummaryUtils.d.ts +11 -0
- package/dist/src/services/sessionSummaryUtils.js +61 -0
- package/dist/src/services/sessionSummaryUtils.js.map +1 -0
- package/dist/src/services/sessionSummaryUtils.test.d.ts +6 -0
- package/dist/src/services/sessionSummaryUtils.test.js +298 -0
- package/dist/src/services/sessionSummaryUtils.test.js.map +1 -0
- package/dist/src/services/shellExecutionService.d.ts +2 -0
- package/dist/src/services/shellExecutionService.js +36 -21
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +108 -3
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.js +7 -1
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +17 -2
- package/dist/src/tools/mcp-client.js +77 -7
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +253 -8
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/web-fetch.js +12 -4
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +1 -0
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/utils/errors.js +7 -2
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +120 -1
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/fetch.d.ts +1 -1
- package/dist/src/utils/fetch.js +3 -3
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/retry.d.ts +8 -0
- package/dist/src/utils/retry.js +40 -6
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +68 -7
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/terminalSerializer.test.js +17 -0
- package/dist/src/utils/terminalSerializer.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/google-gemini-cli-core-0.21.0-nightly.20251202.2d935b379.tgz +0 -0
|
@@ -9,23 +9,34 @@ describe('JsonFormatter', () => {
|
|
|
9
9
|
it('should format the response as JSON', () => {
|
|
10
10
|
const formatter = new JsonFormatter();
|
|
11
11
|
const response = 'This is a test response.';
|
|
12
|
-
const formatted = formatter.format(response);
|
|
12
|
+
const formatted = formatter.format(undefined, response);
|
|
13
13
|
const expected = {
|
|
14
14
|
response,
|
|
15
15
|
};
|
|
16
16
|
expect(JSON.parse(formatted)).toEqual(expected);
|
|
17
17
|
});
|
|
18
|
+
it('should format the response as JSON with a session ID', () => {
|
|
19
|
+
const formatter = new JsonFormatter();
|
|
20
|
+
const response = 'This is a test response.';
|
|
21
|
+
const sessionId = 'test-session-id';
|
|
22
|
+
const formatted = formatter.format(sessionId, response);
|
|
23
|
+
const expected = {
|
|
24
|
+
session_id: sessionId,
|
|
25
|
+
response,
|
|
26
|
+
};
|
|
27
|
+
expect(JSON.parse(formatted)).toEqual(expected);
|
|
28
|
+
});
|
|
18
29
|
it('should strip ANSI escape sequences from response text', () => {
|
|
19
30
|
const formatter = new JsonFormatter();
|
|
20
31
|
const responseWithAnsi = '\x1B[31mRed text\x1B[0m and \x1B[32mGreen text\x1B[0m';
|
|
21
|
-
const formatted = formatter.format(responseWithAnsi);
|
|
32
|
+
const formatted = formatter.format(undefined, responseWithAnsi);
|
|
22
33
|
const parsed = JSON.parse(formatted);
|
|
23
34
|
expect(parsed.response).toBe('Red text and Green text');
|
|
24
35
|
});
|
|
25
36
|
it('should strip control characters from response text', () => {
|
|
26
37
|
const formatter = new JsonFormatter();
|
|
27
38
|
const responseWithControlChars = 'Text with\x07 bell\x08 and\x0B vertical tab';
|
|
28
|
-
const formatted = formatter.format(responseWithControlChars);
|
|
39
|
+
const formatted = formatter.format(undefined, responseWithControlChars);
|
|
29
40
|
const parsed = JSON.parse(formatted);
|
|
30
41
|
// Only ANSI codes are stripped, other control chars are preserved
|
|
31
42
|
expect(parsed.response).toBe('Text with\x07 bell\x08 and\x0B vertical tab');
|
|
@@ -33,7 +44,7 @@ describe('JsonFormatter', () => {
|
|
|
33
44
|
it('should preserve newlines and tabs in response text', () => {
|
|
34
45
|
const formatter = new JsonFormatter();
|
|
35
46
|
const responseWithWhitespace = 'Line 1\nLine 2\r\nLine 3\twith tab';
|
|
36
|
-
const formatted = formatter.format(responseWithWhitespace);
|
|
47
|
+
const formatted = formatter.format(undefined, responseWithWhitespace);
|
|
37
48
|
const parsed = JSON.parse(formatted);
|
|
38
49
|
expect(parsed.response).toBe('Line 1\nLine 2\r\nLine 3\twith tab');
|
|
39
50
|
});
|
|
@@ -104,7 +115,7 @@ describe('JsonFormatter', () => {
|
|
|
104
115
|
totalLinesRemoved: 0,
|
|
105
116
|
},
|
|
106
117
|
};
|
|
107
|
-
const formatted = formatter.format(response, stats);
|
|
118
|
+
const formatted = formatter.format(undefined, response, stats);
|
|
108
119
|
const expected = {
|
|
109
120
|
response,
|
|
110
121
|
stats,
|
|
@@ -118,7 +129,7 @@ describe('JsonFormatter', () => {
|
|
|
118
129
|
message: 'Invalid input provided',
|
|
119
130
|
code: 400,
|
|
120
131
|
};
|
|
121
|
-
const formatted = formatter.format(undefined, undefined, error);
|
|
132
|
+
const formatted = formatter.format(undefined, undefined, undefined, error);
|
|
122
133
|
const expected = {
|
|
123
134
|
error,
|
|
124
135
|
};
|
|
@@ -132,7 +143,7 @@ describe('JsonFormatter', () => {
|
|
|
132
143
|
message: 'Request timed out',
|
|
133
144
|
code: 'TIMEOUT',
|
|
134
145
|
};
|
|
135
|
-
const formatted = formatter.format(response, undefined, error);
|
|
146
|
+
const formatted = formatter.format(undefined, response, undefined, error);
|
|
136
147
|
const expected = {
|
|
137
148
|
response,
|
|
138
149
|
error,
|
|
@@ -152,6 +163,21 @@ describe('JsonFormatter', () => {
|
|
|
152
163
|
},
|
|
153
164
|
});
|
|
154
165
|
});
|
|
166
|
+
it('should format error using formatError method with a session ID', () => {
|
|
167
|
+
const formatter = new JsonFormatter();
|
|
168
|
+
const error = new Error('Something went wrong');
|
|
169
|
+
const sessionId = 'test-session-id';
|
|
170
|
+
const formatted = formatter.formatError(error, 500, sessionId);
|
|
171
|
+
const parsed = JSON.parse(formatted);
|
|
172
|
+
expect(parsed).toEqual({
|
|
173
|
+
session_id: sessionId,
|
|
174
|
+
error: {
|
|
175
|
+
type: 'Error',
|
|
176
|
+
message: 'Something went wrong',
|
|
177
|
+
code: 500,
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
});
|
|
155
181
|
it('should format custom error using formatError method', () => {
|
|
156
182
|
class CustomError extends Error {
|
|
157
183
|
constructor(message) {
|
|
@@ -161,7 +187,7 @@ describe('JsonFormatter', () => {
|
|
|
161
187
|
}
|
|
162
188
|
const formatter = new JsonFormatter();
|
|
163
189
|
const error = new CustomError('Custom error occurred');
|
|
164
|
-
const formatted = formatter.formatError(error);
|
|
190
|
+
const formatted = formatter.formatError(error, undefined);
|
|
165
191
|
const parsed = JSON.parse(formatted);
|
|
166
192
|
expect(parsed).toEqual({
|
|
167
193
|
error: {
|
|
@@ -198,7 +224,7 @@ describe('JsonFormatter', () => {
|
|
|
198
224
|
message: 'Rate limit exceeded',
|
|
199
225
|
code: 429,
|
|
200
226
|
};
|
|
201
|
-
const formatted = formatter.format(response, stats, error);
|
|
227
|
+
const formatted = formatter.format(undefined, response, stats, error);
|
|
202
228
|
const expected = {
|
|
203
229
|
response,
|
|
204
230
|
stats,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-formatter.test.js","sourceRoot":"","sources":["../../../src/output/json-formatter.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAG,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,0BAA0B,CAAC;QAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"json-formatter.test.js","sourceRoot":"","sources":["../../../src/output/json-formatter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/output/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,2CAA2B,CAAA;AAC7B,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/output/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,6BAAa,CAAA;IACb,2CAA2B,CAAA;AAC7B,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAeD,6BAA6B;AAC7B,MAAM,CAAN,IAAY,mBAOX;AAPD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,0CAAmB,CAAA;IACnB,4CAAqB,CAAA;IACrB,kDAA2B,CAAA;IAC3B,sCAAe,CAAA;IACf,wCAAiB,CAAA;AACnB,CAAC,EAPW,mBAAmB,KAAnB,mBAAmB,QAO9B"}
|
|
@@ -69,6 +69,7 @@ export interface ConversationRecord {
|
|
|
69
69
|
startTime: string;
|
|
70
70
|
lastUpdated: string;
|
|
71
71
|
messages: MessageRecord[];
|
|
72
|
+
summary?: string;
|
|
72
73
|
}
|
|
73
74
|
/**
|
|
74
75
|
* Data structure for resuming an existing session.
|
|
@@ -138,6 +139,14 @@ export declare class ChatRecordingService {
|
|
|
138
139
|
* updating boilerplate.
|
|
139
140
|
*/
|
|
140
141
|
private updateConversation;
|
|
142
|
+
/**
|
|
143
|
+
* Saves a summary for the current session.
|
|
144
|
+
*/
|
|
145
|
+
saveSummary(summary: string): void;
|
|
146
|
+
/**
|
|
147
|
+
* Gets the current conversation data (for summary generation).
|
|
148
|
+
*/
|
|
149
|
+
getConversation(): ConversationRecord | null;
|
|
141
150
|
/**
|
|
142
151
|
* Deletes a session file by session ID.
|
|
143
152
|
*/
|
|
@@ -314,6 +314,36 @@ export class ChatRecordingService {
|
|
|
314
314
|
updateFn(conversation);
|
|
315
315
|
this.writeConversation(conversation);
|
|
316
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Saves a summary for the current session.
|
|
319
|
+
*/
|
|
320
|
+
saveSummary(summary) {
|
|
321
|
+
if (!this.conversationFile)
|
|
322
|
+
return;
|
|
323
|
+
try {
|
|
324
|
+
this.updateConversation((conversation) => {
|
|
325
|
+
conversation.summary = summary;
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
debugLogger.error('Error saving summary to chat history.', error);
|
|
330
|
+
// Don't throw - we want graceful degradation
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Gets the current conversation data (for summary generation).
|
|
335
|
+
*/
|
|
336
|
+
getConversation() {
|
|
337
|
+
if (!this.conversationFile)
|
|
338
|
+
return null;
|
|
339
|
+
try {
|
|
340
|
+
return this.readConversation();
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
debugLogger.error('Error reading conversation for summary.', error);
|
|
344
|
+
return null;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
317
347
|
/**
|
|
318
348
|
* Deletes a session file by session ID.
|
|
319
349
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatRecordingService.js","sourceRoot":"","sources":["../../../src/services/chatRecordingService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAuB,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"chatRecordingService.js","sourceRoot":"","sources":["../../../src/services/chatRecordingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { MessageRecord } from './chatRecordingService.js';
|
|
7
|
+
import type { BaseLlmClient } from '../core/baseLlmClient.js';
|
|
8
|
+
/**
|
|
9
|
+
* Options for generating a session summary.
|
|
10
|
+
*/
|
|
11
|
+
export interface GenerateSummaryOptions {
|
|
12
|
+
messages: MessageRecord[];
|
|
13
|
+
maxMessages?: number;
|
|
14
|
+
timeout?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Service for generating AI summaries of chat sessions.
|
|
18
|
+
* Uses Gemini Flash Lite to create concise, user-intent-focused summaries.
|
|
19
|
+
*/
|
|
20
|
+
export declare class SessionSummaryService {
|
|
21
|
+
private readonly baseLlmClient;
|
|
22
|
+
constructor(baseLlmClient: BaseLlmClient);
|
|
23
|
+
/**
|
|
24
|
+
* Generate a 1-line summary of a chat session focusing on user intent.
|
|
25
|
+
* Returns null if generation fails for any reason.
|
|
26
|
+
*/
|
|
27
|
+
generateSummary(options: GenerateSummaryOptions): Promise<string | null>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { partListUnionToString } from '../core/geminiRequest.js';
|
|
7
|
+
import { debugLogger } from '../utils/debugLogger.js';
|
|
8
|
+
import { getResponseText } from '../utils/partUtils.js';
|
|
9
|
+
const DEFAULT_MAX_MESSAGES = 20;
|
|
10
|
+
const DEFAULT_TIMEOUT_MS = 5000;
|
|
11
|
+
const MAX_MESSAGE_LENGTH = 500;
|
|
12
|
+
const SUMMARY_PROMPT = `Summarize the user's primary intent or goal in this conversation in ONE sentence (max 80 characters).
|
|
13
|
+
Focus on what the user was trying to accomplish.
|
|
14
|
+
|
|
15
|
+
Examples:
|
|
16
|
+
- "Add dark mode to the app"
|
|
17
|
+
- "Fix authentication bug in login flow"
|
|
18
|
+
- "Understand how the API routing works"
|
|
19
|
+
- "Refactor database connection logic"
|
|
20
|
+
- "Debug memory leak in production"
|
|
21
|
+
|
|
22
|
+
Conversation:
|
|
23
|
+
{conversation}
|
|
24
|
+
|
|
25
|
+
Summary (max 80 chars):`;
|
|
26
|
+
/**
|
|
27
|
+
* Service for generating AI summaries of chat sessions.
|
|
28
|
+
* Uses Gemini Flash Lite to create concise, user-intent-focused summaries.
|
|
29
|
+
*/
|
|
30
|
+
export class SessionSummaryService {
|
|
31
|
+
baseLlmClient;
|
|
32
|
+
constructor(baseLlmClient) {
|
|
33
|
+
this.baseLlmClient = baseLlmClient;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Generate a 1-line summary of a chat session focusing on user intent.
|
|
37
|
+
* Returns null if generation fails for any reason.
|
|
38
|
+
*/
|
|
39
|
+
async generateSummary(options) {
|
|
40
|
+
const { messages, maxMessages = DEFAULT_MAX_MESSAGES, timeout = DEFAULT_TIMEOUT_MS, } = options;
|
|
41
|
+
try {
|
|
42
|
+
// Filter to user/gemini messages only (exclude system messages)
|
|
43
|
+
const filteredMessages = messages.filter((msg) => {
|
|
44
|
+
// Skip system messages (info, error, warning)
|
|
45
|
+
if (msg.type !== 'user' && msg.type !== 'gemini') {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const content = partListUnionToString(msg.content);
|
|
49
|
+
return content.trim().length > 0;
|
|
50
|
+
});
|
|
51
|
+
// Apply sliding window selection: first N + last N messages
|
|
52
|
+
let relevantMessages;
|
|
53
|
+
if (filteredMessages.length <= maxMessages) {
|
|
54
|
+
// If fewer messages than max, include all
|
|
55
|
+
relevantMessages = filteredMessages;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Sliding window: take the first and last messages.
|
|
59
|
+
const firstWindowSize = Math.ceil(maxMessages / 2);
|
|
60
|
+
const lastWindowSize = Math.floor(maxMessages / 2);
|
|
61
|
+
const firstMessages = filteredMessages.slice(0, firstWindowSize);
|
|
62
|
+
const lastMessages = filteredMessages.slice(-lastWindowSize);
|
|
63
|
+
relevantMessages = firstMessages.concat(lastMessages);
|
|
64
|
+
}
|
|
65
|
+
if (relevantMessages.length === 0) {
|
|
66
|
+
debugLogger.debug('[SessionSummary] No messages to summarize');
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
// Format conversation for the prompt
|
|
70
|
+
const conversationText = relevantMessages
|
|
71
|
+
.map((msg) => {
|
|
72
|
+
const role = msg.type === 'user' ? 'User' : 'Assistant';
|
|
73
|
+
const content = partListUnionToString(msg.content);
|
|
74
|
+
// Truncate very long messages to avoid token limit
|
|
75
|
+
const truncated = content.length > MAX_MESSAGE_LENGTH
|
|
76
|
+
? content.slice(0, MAX_MESSAGE_LENGTH) + '...'
|
|
77
|
+
: content;
|
|
78
|
+
return `${role}: ${truncated}`;
|
|
79
|
+
})
|
|
80
|
+
.join('\n\n');
|
|
81
|
+
const prompt = SUMMARY_PROMPT.replace('{conversation}', conversationText);
|
|
82
|
+
// Create abort controller with timeout
|
|
83
|
+
const abortController = new AbortController();
|
|
84
|
+
const timeoutId = setTimeout(() => {
|
|
85
|
+
abortController.abort();
|
|
86
|
+
}, timeout);
|
|
87
|
+
try {
|
|
88
|
+
const contents = [
|
|
89
|
+
{
|
|
90
|
+
role: 'user',
|
|
91
|
+
parts: [{ text: prompt }],
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
const response = await this.baseLlmClient.generateContent({
|
|
95
|
+
modelConfigKey: { model: 'summarizer-default' },
|
|
96
|
+
contents,
|
|
97
|
+
abortSignal: abortController.signal,
|
|
98
|
+
promptId: 'session-summary-generation',
|
|
99
|
+
});
|
|
100
|
+
const summary = getResponseText(response);
|
|
101
|
+
if (!summary || summary.trim().length === 0) {
|
|
102
|
+
debugLogger.debug('[SessionSummary] Empty summary returned');
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
// Clean the summary
|
|
106
|
+
let cleanedSummary = summary
|
|
107
|
+
.replace(/\n+/g, ' ') // Collapse newlines to spaces
|
|
108
|
+
.replace(/\s+/g, ' ') // Normalize whitespace
|
|
109
|
+
.trim(); // Trim after all processing
|
|
110
|
+
// Remove quotes if the model added them
|
|
111
|
+
cleanedSummary = cleanedSummary.replace(/^["']|["']$/g, '');
|
|
112
|
+
debugLogger.debug(`[SessionSummary] Generated: "${cleanedSummary}"`);
|
|
113
|
+
return cleanedSummary;
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
clearTimeout(timeoutId);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
// Log the error but don't throw - we want graceful degradation
|
|
121
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
122
|
+
debugLogger.debug('[SessionSummary] Timeout generating summary');
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
debugLogger.debug(`[SessionSummary] Error generating summary: ${error instanceof Error ? error.message : String(error)}`);
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=sessionSummaryService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionSummaryService.js","sourceRoot":"","sources":["../../../src/services/sessionSummaryService.ts"],"names":[],"mappings":"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"}
|