@aws/lsp-codewhisperer 0.0.65 → 0.0.67
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/CHANGELOG.md +56 -0
- package/README.md +5 -0
- package/out/language-server/agenticChat/agenticChatController.d.ts +9 -2
- package/out/language-server/agenticChat/agenticChatController.js +512 -136
- package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
- package/out/language-server/agenticChat/constants/constants.d.ts +17 -0
- package/out/language-server/agenticChat/constants/constants.js +79 -1
- package/out/language-server/agenticChat/constants/constants.js.map +1 -1
- package/out/language-server/agenticChat/constants/toolConstants.d.ts +24 -0
- package/out/language-server/agenticChat/constants/toolConstants.js +35 -0
- package/out/language-server/agenticChat/constants/toolConstants.js.map +1 -0
- package/out/language-server/agenticChat/context/additionalContextProvider.d.ts +9 -1
- package/out/language-server/agenticChat/context/additionalContextProvider.js +92 -34
- package/out/language-server/agenticChat/context/additionalContextProvider.js.map +1 -1
- package/out/language-server/agenticChat/context/agenticChatTriggerContext.d.ts +11 -2
- package/out/language-server/agenticChat/context/agenticChatTriggerContext.js +36 -2
- package/out/language-server/agenticChat/context/agenticChatTriggerContext.js.map +1 -1
- package/out/language-server/agenticChat/context/contextCommandsProvider.js +1 -1
- package/out/language-server/agenticChat/context/contextCommandsProvider.js.map +1 -1
- package/out/language-server/agenticChat/context/contextUtils.d.ts +16 -0
- package/out/language-server/agenticChat/context/contextUtils.js +29 -0
- package/out/language-server/agenticChat/context/contextUtils.js.map +1 -1
- package/out/language-server/agenticChat/qAgenticChatServer.d.ts +2 -0
- package/out/language-server/agenticChat/qAgenticChatServer.js +18 -2
- package/out/language-server/agenticChat/qAgenticChatServer.js.map +1 -1
- package/out/language-server/agenticChat/tools/chatDb/chatDb.d.ts +11 -3
- package/out/language-server/agenticChat/tools/chatDb/chatDb.js +115 -31
- package/out/language-server/agenticChat/tools/chatDb/chatDb.js.map +1 -1
- package/out/language-server/agenticChat/tools/chatDb/util.d.ts +15 -1
- package/out/language-server/agenticChat/tools/chatDb/util.js +17 -0
- package/out/language-server/agenticChat/tools/chatDb/util.js.map +1 -1
- package/out/language-server/agenticChat/tools/executeBash.d.ts +0 -11
- package/out/language-server/agenticChat/tools/executeBash.js +16 -35
- package/out/language-server/agenticChat/tools/executeBash.js.map +1 -1
- package/out/language-server/agenticChat/tools/grepSearch.js +3 -1
- package/out/language-server/agenticChat/tools/grepSearch.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js +208 -170
- package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpManager.d.ts +12 -18
- package/out/language-server/agenticChat/tools/mcp/mcpManager.js +353 -216
- package/out/language-server/agenticChat/tools/mcp/mcpManager.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpTypes.d.ts +29 -0
- package/out/language-server/agenticChat/tools/mcp/mcpTypes.js +60 -1
- package/out/language-server/agenticChat/tools/mcp/mcpTypes.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.d.ts +27 -4
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +464 -2
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
- package/out/language-server/agenticChat/tools/toolServer.js +8 -10
- package/out/language-server/agenticChat/tools/toolServer.js.map +1 -1
- package/out/language-server/agenticChat/tools/toolShared.js +6 -2
- package/out/language-server/agenticChat/tools/toolShared.js.map +1 -1
- package/out/language-server/chat/chatController.d.ts +1 -1
- package/out/language-server/chat/chatController.js.map +1 -1
- package/out/language-server/chat/chatSessionService.d.ts +1 -0
- package/out/language-server/chat/chatSessionService.js +5 -2
- package/out/language-server/chat/chatSessionService.js.map +1 -1
- package/out/language-server/chat/contexts/triggerContext.js +11 -2
- package/out/language-server/chat/contexts/triggerContext.js.map +1 -1
- package/out/language-server/chat/quickActions.d.ts +7 -1
- package/out/language-server/chat/quickActions.js +7 -1
- package/out/language-server/chat/quickActions.js.map +1 -1
- package/out/language-server/chat/telemetry/chatTelemetryController.d.ts +1 -0
- package/out/language-server/chat/telemetry/chatTelemetryController.js +9 -0
- package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
- package/out/language-server/configuration/qConfigurationServer.d.ts +2 -0
- package/out/language-server/configuration/qConfigurationServer.js.map +1 -1
- package/out/language-server/inline-completion/auto-trigger/autoTrigger.d.ts +3 -0
- package/out/language-server/inline-completion/auto-trigger/autoTrigger.js +105 -1
- package/out/language-server/inline-completion/auto-trigger/autoTrigger.js.map +1 -1
- package/out/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.js +6 -1
- package/out/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.js.map +1 -1
- package/out/language-server/inline-completion/auto-trigger/editPredictionConfig.d.ts +1 -0
- package/out/language-server/inline-completion/auto-trigger/editPredictionConfig.js +1 -0
- package/out/language-server/inline-completion/auto-trigger/editPredictionConfig.js.map +1 -1
- package/out/language-server/inline-completion/codeWhispererServer.js +53 -52
- package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
- package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.d.ts +4 -1
- package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.js +36 -2
- package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.js.map +1 -1
- package/out/language-server/workspaceContext/dependency/dependencyEventBundler.d.ts +11 -5
- package/out/language-server/workspaceContext/dependency/dependencyEventBundler.js +37 -10
- package/out/language-server/workspaceContext/dependency/dependencyEventBundler.js.map +1 -1
- package/out/language-server/workspaceContext/dependency/dependencyHandler/JSTSDependencyHandler.d.ts +1 -1
- package/out/language-server/workspaceContext/dependency/dependencyHandler/JSTSDependencyHandler.js +8 -3
- package/out/language-server/workspaceContext/dependency/dependencyHandler/JSTSDependencyHandler.js.map +1 -1
- package/out/language-server/workspaceContext/dependency/dependencyHandler/JavaDependencyHandler.js +3 -4
- package/out/language-server/workspaceContext/dependency/dependencyHandler/JavaDependencyHandler.js.map +1 -1
- package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandler.d.ts +4 -3
- package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandler.js +5 -9
- package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandler.js.map +1 -1
- package/out/language-server/workspaceContext/dependency/dependencyHandler/PythonDependencyHandler.js +3 -4
- package/out/language-server/workspaceContext/dependency/dependencyHandler/PythonDependencyHandler.js.map +1 -1
- package/out/language-server/workspaceContext/workspaceContextServer.js +12 -8
- package/out/language-server/workspaceContext/workspaceContextServer.js.map +1 -1
- package/out/shared/activeUserTracker.d.ts +52 -0
- package/out/shared/activeUserTracker.js +164 -0
- package/out/shared/activeUserTracker.js.map +1 -0
- package/out/shared/amazonQServiceManager/configurationUtils.d.ts +4 -0
- package/out/shared/amazonQServiceManager/configurationUtils.js +6 -0
- package/out/shared/amazonQServiceManager/configurationUtils.js.map +1 -1
- package/out/shared/codeWhispererService.js +3 -1
- package/out/shared/codeWhispererService.js.map +1 -1
- package/out/shared/streamingClientService.js +12 -1
- package/out/shared/streamingClientService.js.map +1 -1
- package/out/shared/telemetry/telemetryService.js +1 -2
- package/out/shared/telemetry/telemetryService.js.map +1 -1
- package/out/shared/telemetry/types.d.ts +7 -1
- package/out/shared/telemetry/types.js +1 -0
- package/out/shared/telemetry/types.js.map +1 -1
- package/out/shared/utils.d.ts +1 -7
- package/out/shared/utils.js +39 -36
- package/out/shared/utils.js.map +1 -1
- package/package.json +7 -6
|
@@ -178,7 +178,7 @@ class ContextCommandsProvider {
|
|
|
178
178
|
codeCmds.push({
|
|
179
179
|
...baseItem,
|
|
180
180
|
command: item.symbol.name,
|
|
181
|
-
description:
|
|
181
|
+
description: (0, contextUtils_1.getCodeSymbolDescription)(item, true),
|
|
182
182
|
label: 'code',
|
|
183
183
|
icon: 'code-block',
|
|
184
184
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextCommandsProvider.js","sourceRoot":"","sources":["../../../../src/language-server/agenticChat/context/contextCommandsProvider.ts"],"names":[],"mappings":";;;AAAA,6BAA4B;AAC5B,uCAA2C;AAI3C,
|
|
1
|
+
{"version":3,"file":"contextCommandsProvider.js","sourceRoot":"","sources":["../../../../src/language-server/agenticChat/context/contextCommandsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RelevantTextDocumentAddition } from './agenticChatTriggerContext';
|
|
2
2
|
import { FileList } from '@aws/language-server-runtimes/server-interface';
|
|
3
|
+
import { ContextCommandItem } from 'local-indexing';
|
|
3
4
|
export interface ContextInfo {
|
|
4
5
|
pinnedContextCount: {
|
|
5
6
|
fileContextCount: number;
|
|
@@ -64,3 +65,18 @@ export declare function mergeRelevantTextDocuments(documents: RelevantTextDocume
|
|
|
64
65
|
* @returns A merged FileList
|
|
65
66
|
*/
|
|
66
67
|
export declare function mergeFileLists(fileList1: FileList, fileList2: FileList): FileList;
|
|
68
|
+
/**
|
|
69
|
+
* Generates a description string for a code symbol with optional line numbers.
|
|
70
|
+
*
|
|
71
|
+
* @param item - The ContextCommandItem containing symbol and workspace information
|
|
72
|
+
* @param includeLineNumbers - Whether to include line number range in the description
|
|
73
|
+
* @returns A formatted string containing the symbol kind, path and optionally line numbers,
|
|
74
|
+
* or empty string if no symbol exists
|
|
75
|
+
* @example
|
|
76
|
+
* // Without line numbers:
|
|
77
|
+
* // "Function, myProject/src/utils.ts"
|
|
78
|
+
*
|
|
79
|
+
* // With line numbers:
|
|
80
|
+
* // "Function, myProject/src/utils.ts, L10-L20"
|
|
81
|
+
*/
|
|
82
|
+
export declare function getCodeSymbolDescription(item: ContextCommandItem, includeLineNumbers?: boolean): string;
|
|
@@ -4,6 +4,7 @@ exports.getNewRuleFilePath = exports.getNewPromptFilePath = exports.getUserPromp
|
|
|
4
4
|
exports.getInitialContextInfo = getInitialContextInfo;
|
|
5
5
|
exports.mergeRelevantTextDocuments = mergeRelevantTextDocuments;
|
|
6
6
|
exports.mergeFileLists = mergeFileLists;
|
|
7
|
+
exports.getCodeSymbolDescription = getCodeSymbolDescription;
|
|
7
8
|
const path_1 = require("@aws/lsp-core/out/util/path");
|
|
8
9
|
const path = require("path");
|
|
9
10
|
const text_1 = require("@aws/lsp-core/out/util/text");
|
|
@@ -177,4 +178,32 @@ function mergeFileLists(fileList1, fileList2) {
|
|
|
177
178
|
details: mergedDetails,
|
|
178
179
|
};
|
|
179
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Generates a description string for a code symbol with optional line numbers.
|
|
183
|
+
*
|
|
184
|
+
* @param item - The ContextCommandItem containing symbol and workspace information
|
|
185
|
+
* @param includeLineNumbers - Whether to include line number range in the description
|
|
186
|
+
* @returns A formatted string containing the symbol kind, path and optionally line numbers,
|
|
187
|
+
* or empty string if no symbol exists
|
|
188
|
+
* @example
|
|
189
|
+
* // Without line numbers:
|
|
190
|
+
* // "Function, myProject/src/utils.ts"
|
|
191
|
+
*
|
|
192
|
+
* // With line numbers:
|
|
193
|
+
* // "Function, myProject/src/utils.ts, L10-L20"
|
|
194
|
+
*/
|
|
195
|
+
function getCodeSymbolDescription(item, includeLineNumbers) {
|
|
196
|
+
const wsFolderName = path.basename(item.workspaceFolder);
|
|
197
|
+
if (item.symbol) {
|
|
198
|
+
const symbolKind = item.symbol.kind;
|
|
199
|
+
const symbolPath = path.join(wsFolderName, item.relativePath);
|
|
200
|
+
const symbolLineNumbers = `L${item.symbol.range.start.line + 1}-${item.symbol.range.end.line + 1}`;
|
|
201
|
+
const parts = [symbolKind, symbolPath];
|
|
202
|
+
if (includeLineNumbers) {
|
|
203
|
+
parts.push(symbolLineNumbers);
|
|
204
|
+
}
|
|
205
|
+
return parts.join(', ');
|
|
206
|
+
}
|
|
207
|
+
return '';
|
|
208
|
+
}
|
|
180
209
|
//# sourceMappingURL=contextUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextUtils.js","sourceRoot":"","sources":["../../../../src/language-server/agenticChat/context/contextUtils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"contextUtils.js","sourceRoot":"","sources":["../../../../src/language-server/agenticChat/context/contextUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { InitializeParams, Server } from '@aws/language-server-runtimes/server-interface';
|
|
6
6
|
export declare function enabledReroute(params: InitializeParams | undefined): boolean;
|
|
7
|
+
export declare function enabledCompaction(params: InitializeParams | undefined): boolean;
|
|
8
|
+
export declare function enableShortcut(params: InitializeParams | undefined): boolean;
|
|
7
9
|
export declare const QAgenticChatServer: () => Server;
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.QAgenticChatServer = void 0;
|
|
8
8
|
exports.enabledReroute = enabledReroute;
|
|
9
|
+
exports.enabledCompaction = enabledCompaction;
|
|
10
|
+
exports.enableShortcut = enableShortcut;
|
|
9
11
|
const agenticChatController_1 = require("./agenticChatController");
|
|
10
12
|
const chatSessionManagementService_1 = require("../chat/chatSessionManagementService");
|
|
11
13
|
const quickActions_1 = require("../chat/quickActions");
|
|
@@ -21,6 +23,14 @@ function enabledReroute(params) {
|
|
|
21
23
|
const qCapabilities = params?.initializationOptions?.aws?.awsClientCapabilities?.q;
|
|
22
24
|
return qCapabilities?.reroute || false;
|
|
23
25
|
}
|
|
26
|
+
function enabledCompaction(params) {
|
|
27
|
+
const qCapabilities = params?.initializationOptions?.aws?.awsClientCapabilities?.q;
|
|
28
|
+
return qCapabilities?.compaction || false;
|
|
29
|
+
}
|
|
30
|
+
function enableShortcut(params) {
|
|
31
|
+
const qCapabilities = params?.initializationOptions?.aws?.awsClientCapabilities?.q;
|
|
32
|
+
return qCapabilities?.shortcut || false;
|
|
33
|
+
}
|
|
24
34
|
const QAgenticChatServer =
|
|
25
35
|
// prettier-ignore
|
|
26
36
|
() => features => {
|
|
@@ -32,6 +42,11 @@ const QAgenticChatServer =
|
|
|
32
42
|
let chatSessionManagementService;
|
|
33
43
|
lsp.addInitializer((params) => {
|
|
34
44
|
const rerouteEnabled = enabledReroute(params);
|
|
45
|
+
const quickActions = [quickActions_1.HELP_QUICK_ACTION, quickActions_1.CLEAR_QUICK_ACTION];
|
|
46
|
+
if (enabledCompaction(params)) {
|
|
47
|
+
quickActions.push(quickActions_1.COMPACT_QUICK_ACTION);
|
|
48
|
+
}
|
|
49
|
+
const shortcutEnabled = enableShortcut(params);
|
|
35
50
|
return {
|
|
36
51
|
capabilities: {
|
|
37
52
|
executeCommandProvider: {
|
|
@@ -45,7 +60,7 @@ const QAgenticChatServer =
|
|
|
45
60
|
quickActions: {
|
|
46
61
|
quickActionsCommandGroups: [
|
|
47
62
|
{
|
|
48
|
-
commands:
|
|
63
|
+
commands: quickActions,
|
|
49
64
|
},
|
|
50
65
|
],
|
|
51
66
|
},
|
|
@@ -54,7 +69,8 @@ const QAgenticChatServer =
|
|
|
54
69
|
modelSelection: true,
|
|
55
70
|
history: true,
|
|
56
71
|
export: tabBarController_1.TabBarController.enableChatExport(params),
|
|
57
|
-
reroute: rerouteEnabled
|
|
72
|
+
reroute: rerouteEnabled,
|
|
73
|
+
shortcut: shortcutEnabled
|
|
58
74
|
},
|
|
59
75
|
},
|
|
60
76
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qAgenticChatServer.js","sourceRoot":"","sources":["../../../src/language-server/agenticChat/qAgenticChatServer.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"qAgenticChatServer.js","sourceRoot":"","sources":["../../../src/language-server/agenticChat/qAgenticChatServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Message, Rules, Settings, Tab, TabContext, TabType } from './util';
|
|
1
|
+
import { Message, Rules, Settings, Tab, TabContext, TabType, MessagesWithCharacterCount } from './util';
|
|
2
2
|
import { Features } from '@aws/language-server-runtimes/server-interface/server';
|
|
3
3
|
import { ContextCommand, ConversationItemGroup } from '@aws/language-server-runtimes/protocol';
|
|
4
4
|
import { ChatMessage } from '@amzn/codewhisperer-streaming';
|
|
@@ -88,6 +88,7 @@ export declare class ChatDatabase {
|
|
|
88
88
|
*/
|
|
89
89
|
deleteHistory(historyId: string): void;
|
|
90
90
|
getOrCreateHistoryId(tabId: string): string;
|
|
91
|
+
createHistoryId(tabId: string): `${string}-${string}-${string}-${string}-${string}`;
|
|
91
92
|
/**
|
|
92
93
|
* Adds a message to a conversation within a specified tab.
|
|
93
94
|
*
|
|
@@ -98,6 +99,12 @@ export declare class ChatDatabase {
|
|
|
98
99
|
* - Updates tab's last updated time
|
|
99
100
|
*/
|
|
100
101
|
addMessage(tabId: string, tabType: TabType, conversationId: string, message: Message): void;
|
|
102
|
+
/**
|
|
103
|
+
* Replace history with summary/dummyResponse pair within a specified tab.
|
|
104
|
+
*
|
|
105
|
+
* This method manages chat messages by creating a new history with compacted summary and dummy response pairs
|
|
106
|
+
*/
|
|
107
|
+
replaceWithSummary(tabId: string, tabType: TabType, conversationId: string, message: Message): void;
|
|
101
108
|
formatChatHistoryMessage(message: Message): Message;
|
|
102
109
|
/**
|
|
103
110
|
* Prepare the history messages for service request and fix the persisted history in DB to maintain the following invariants:
|
|
@@ -107,7 +114,7 @@ export declare class ChatDatabase {
|
|
|
107
114
|
* 3. The toolUse and toolResult relationship is valid
|
|
108
115
|
* 4. The history character length is <= MaxConversationHistoryCharacters - newUserMessageCharacterCount. Oldest messages are dropped.
|
|
109
116
|
*/
|
|
110
|
-
fixAndGetHistory(tabId: string, newUserMessage: ChatMessage, pinnedContextMessages: ChatMessage[]):
|
|
117
|
+
fixAndGetHistory(tabId: string, newUserMessage: ChatMessage, pinnedContextMessages: ChatMessage[], newUserInputCount?: number): MessagesWithCharacterCount;
|
|
111
118
|
/**
|
|
112
119
|
* Finds a suitable "break point" index in the message sequence.
|
|
113
120
|
*
|
|
@@ -123,7 +130,8 @@ export declare class ChatDatabase {
|
|
|
123
130
|
private isValidUserMessageWithoutToolResults;
|
|
124
131
|
private trimMessagesToMaxLength;
|
|
125
132
|
private calculateToolSpecCharacterCount;
|
|
126
|
-
|
|
133
|
+
calculateNewMessageCharacterCount(newUserMessage: ChatMessage, pinnedContextMessages: ChatMessage[]): number;
|
|
134
|
+
calculateMessagesCharacterCount(allMessages: Message[]): number;
|
|
127
135
|
/**
|
|
128
136
|
* Gets the latest conversation ID for a given tab
|
|
129
137
|
* @param tabId The ID of the tab to get the latest conversation ID from
|
|
@@ -440,12 +440,16 @@ class ChatDatabase {
|
|
|
440
440
|
getOrCreateHistoryId(tabId) {
|
|
441
441
|
let historyId = this.#historyIdMapping.get(tabId);
|
|
442
442
|
if (!historyId) {
|
|
443
|
-
historyId =
|
|
444
|
-
this.#features.logging.log(`Creating new historyId=${historyId} for tabId=${tabId}`);
|
|
445
|
-
this.setHistoryIdMapping(tabId, historyId);
|
|
443
|
+
historyId = this.createHistoryId(tabId);
|
|
446
444
|
}
|
|
447
445
|
return historyId;
|
|
448
446
|
}
|
|
447
|
+
createHistoryId(tabId) {
|
|
448
|
+
const historyId = crypto.randomUUID();
|
|
449
|
+
this.#features.logging.log(`Creating new historyId=${historyId} for tabId=${tabId}`);
|
|
450
|
+
this.setHistoryIdMapping(tabId, historyId);
|
|
451
|
+
return historyId;
|
|
452
|
+
}
|
|
449
453
|
/**
|
|
450
454
|
* Adds a message to a conversation within a specified tab.
|
|
451
455
|
*
|
|
@@ -486,6 +490,55 @@ class ChatDatabase {
|
|
|
486
490
|
}
|
|
487
491
|
}
|
|
488
492
|
}
|
|
493
|
+
/**
|
|
494
|
+
* Replace history with summary/dummyResponse pair within a specified tab.
|
|
495
|
+
*
|
|
496
|
+
* This method manages chat messages by creating a new history with compacted summary and dummy response pairs
|
|
497
|
+
*/
|
|
498
|
+
replaceWithSummary(tabId, tabType, conversationId, message) {
|
|
499
|
+
if (this.isInitialized()) {
|
|
500
|
+
const clientType = this.#features.lsp.getClientInitializeParams()?.clientInfo?.name || 'unknown';
|
|
501
|
+
const tabCollection = this.#db.getCollection(util_1.TabCollection);
|
|
502
|
+
this.#features.logging.log(`Replace history with summary: tabId=${tabId}, tabType=${tabType}, conversationId=${conversationId}`);
|
|
503
|
+
const oldHistoryId = this.getOrCreateHistoryId(tabId);
|
|
504
|
+
// create a new historyId to start fresh
|
|
505
|
+
const historyId = this.createHistoryId(tabId);
|
|
506
|
+
const tabData = historyId ? tabCollection.findOne({ historyId }) : undefined;
|
|
507
|
+
const tabTitle = (message.type === 'prompt' && message.shouldDisplayMessage !== false && message.body.trim().length > 0
|
|
508
|
+
? message.body
|
|
509
|
+
: tabData?.title) || 'Amazon Q Chat';
|
|
510
|
+
message = this.formatChatHistoryMessage(message);
|
|
511
|
+
this.#features.logging.log(`Overriding tab with new historyId=${historyId}`);
|
|
512
|
+
tabCollection.insert({
|
|
513
|
+
historyId,
|
|
514
|
+
updatedAt: new Date(),
|
|
515
|
+
isOpen: true,
|
|
516
|
+
tabType: tabType,
|
|
517
|
+
title: tabTitle,
|
|
518
|
+
conversations: [
|
|
519
|
+
{
|
|
520
|
+
conversationId,
|
|
521
|
+
clientType,
|
|
522
|
+
updatedAt: new Date(),
|
|
523
|
+
messages: [
|
|
524
|
+
// summary
|
|
525
|
+
message,
|
|
526
|
+
// dummy response
|
|
527
|
+
{
|
|
528
|
+
body: 'Working...',
|
|
529
|
+
type: 'answer',
|
|
530
|
+
shouldDisplayMessage: false,
|
|
531
|
+
timestamp: new Date(),
|
|
532
|
+
},
|
|
533
|
+
],
|
|
534
|
+
},
|
|
535
|
+
],
|
|
536
|
+
});
|
|
537
|
+
if (oldHistoryId) {
|
|
538
|
+
tabCollection.findAndRemove({ historyId: oldHistoryId });
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
}
|
|
489
542
|
formatChatHistoryMessage(message) {
|
|
490
543
|
if (message.type === 'prompt') {
|
|
491
544
|
let hasToolResults = false;
|
|
@@ -512,9 +565,10 @@ class ChatDatabase {
|
|
|
512
565
|
* 3. The toolUse and toolResult relationship is valid
|
|
513
566
|
* 4. The history character length is <= MaxConversationHistoryCharacters - newUserMessageCharacterCount. Oldest messages are dropped.
|
|
514
567
|
*/
|
|
515
|
-
fixAndGetHistory(tabId, newUserMessage, pinnedContextMessages) {
|
|
568
|
+
fixAndGetHistory(tabId, newUserMessage, pinnedContextMessages, newUserInputCount) {
|
|
569
|
+
let messagesWithCount = { messages: [], count: 0 };
|
|
516
570
|
if (!this.isInitialized()) {
|
|
517
|
-
return
|
|
571
|
+
return messagesWithCount;
|
|
518
572
|
}
|
|
519
573
|
this.#features.logging.info(`Fixing history: tabId=${tabId}`);
|
|
520
574
|
// 1. Make sure the length of the history messages don't exceed MaxConversationHistoryMessages
|
|
@@ -524,9 +578,13 @@ class ChatDatabase {
|
|
|
524
578
|
this.ensureValidMessageSequence(tabId, allMessages);
|
|
525
579
|
// 3. Fix new user prompt: Ensure lastMessage in history toolUse and newMessage toolResult relationship is valid
|
|
526
580
|
this.validateAndFixNewMessageToolResults(allMessages, newUserMessage);
|
|
581
|
+
if (!newUserInputCount) {
|
|
582
|
+
newUserInputCount = this.calculateNewMessageCharacterCount(newUserMessage, pinnedContextMessages);
|
|
583
|
+
}
|
|
527
584
|
// 4. NOTE: Keep this trimming logic at the end of the preprocess.
|
|
528
585
|
// Make sure max characters ≤ remaining Character Budget, must be put at the end of preprocessing
|
|
529
|
-
|
|
586
|
+
messagesWithCount = this.trimMessagesToMaxLength(allMessages, newUserInputCount);
|
|
587
|
+
allMessages = messagesWithCount.messages;
|
|
530
588
|
// Edge case: If the history is empty and the next message contains tool results, then we have to just abandon them.
|
|
531
589
|
if (allMessages.length === 0 &&
|
|
532
590
|
newUserMessage.userInputMessage?.userInputMessageContext?.toolResults?.length &&
|
|
@@ -538,9 +596,12 @@ class ChatDatabase {
|
|
|
538
596
|
}
|
|
539
597
|
// Prepend pinned context fake message pair to beginning of history
|
|
540
598
|
if (pinnedContextMessages.length === 2) {
|
|
541
|
-
|
|
599
|
+
messagesWithCount.messages = [
|
|
600
|
+
...pinnedContextMessages.map(msg => (0, util_1.chatMessageToMessage)(msg)),
|
|
601
|
+
...allMessages,
|
|
602
|
+
];
|
|
542
603
|
}
|
|
543
|
-
return
|
|
604
|
+
return messagesWithCount;
|
|
544
605
|
}
|
|
545
606
|
/**
|
|
546
607
|
* Finds a suitable "break point" index in the message sequence.
|
|
@@ -566,19 +627,11 @@ class ChatDatabase {
|
|
|
566
627
|
const ctx = message.userInputMessageContext;
|
|
567
628
|
return !!ctx && (!ctx.toolResults || ctx.toolResults.length === 0) && message.body !== '';
|
|
568
629
|
}
|
|
569
|
-
trimMessagesToMaxLength(messages,
|
|
570
|
-
let
|
|
571
|
-
|
|
572
|
-
const currentUserInputCharacterCount = this.calculateMessagesCharacterCount([
|
|
573
|
-
(0, util_1.chatMessageToMessage)(newUserMessage),
|
|
574
|
-
...pinnedContextMessages.map(msg => (0, util_1.chatMessageToMessage)(msg)),
|
|
575
|
-
]);
|
|
576
|
-
const currentInputToolSpecCount = this.calculateToolSpecCharacterCount(newUserMessage);
|
|
577
|
-
const currentUserInputCount = currentUserInputCharacterCount + currentInputToolSpecCount;
|
|
578
|
-
this.#features.logging.debug(`Current user message characters input: ${currentUserInputCharacterCount} + toolSpec: ${currentInputToolSpecCount}`);
|
|
579
|
-
const maxHistoryCharacterSize = Math.max(0, MaxOverallCharacters - currentUserInputCount);
|
|
630
|
+
trimMessagesToMaxLength(messages, newUserInputCount) {
|
|
631
|
+
let historyCharacterCount = this.calculateMessagesCharacterCount(messages);
|
|
632
|
+
const maxHistoryCharacterSize = Math.max(0, MaxOverallCharacters - newUserInputCount);
|
|
580
633
|
this.#features.logging.debug(`Current remaining character budget: ${maxHistoryCharacterSize}`);
|
|
581
|
-
while (
|
|
634
|
+
while (historyCharacterCount > maxHistoryCharacterSize && messages.length > 2) {
|
|
582
635
|
// Find the next valid user message to start from
|
|
583
636
|
const indexToTrim = this.findIndexToTrim(messages);
|
|
584
637
|
if (indexToTrim !== undefined && indexToTrim > 0) {
|
|
@@ -587,12 +640,14 @@ class ChatDatabase {
|
|
|
587
640
|
}
|
|
588
641
|
else {
|
|
589
642
|
this.#features.logging.debug('Could not find a valid point to trim, reset history to reduce character count');
|
|
590
|
-
return [];
|
|
643
|
+
return { messages: [], count: 0 };
|
|
591
644
|
}
|
|
592
|
-
|
|
593
|
-
this.#features.logging.debug(`Current history characters: ${totalCharacters}`);
|
|
645
|
+
historyCharacterCount = this.calculateMessagesCharacterCount(messages);
|
|
594
646
|
}
|
|
595
|
-
return
|
|
647
|
+
return {
|
|
648
|
+
messages,
|
|
649
|
+
count: historyCharacterCount,
|
|
650
|
+
};
|
|
596
651
|
}
|
|
597
652
|
calculateToolSpecCharacterCount(currentMessage) {
|
|
598
653
|
let count = 0;
|
|
@@ -608,16 +663,32 @@ class ChatDatabase {
|
|
|
608
663
|
}
|
|
609
664
|
return count;
|
|
610
665
|
}
|
|
666
|
+
calculateNewMessageCharacterCount(newUserMessage, pinnedContextMessages) {
|
|
667
|
+
const currentUserInputCharacterCount = this.calculateMessagesCharacterCount([
|
|
668
|
+
(0, util_1.chatMessageToMessage)(newUserMessage),
|
|
669
|
+
]);
|
|
670
|
+
const pinnedContextCount = this.calculateMessagesCharacterCount([
|
|
671
|
+
...pinnedContextMessages.map(msg => (0, util_1.chatMessageToMessage)(msg)),
|
|
672
|
+
]);
|
|
673
|
+
const currentInputToolSpecCount = this.calculateToolSpecCharacterCount(newUserMessage);
|
|
674
|
+
const totalCount = currentUserInputCharacterCount + currentInputToolSpecCount + pinnedContextCount;
|
|
675
|
+
this.#features.logging.debug(`Current user message characters input: ${currentUserInputCharacterCount} + toolSpec: ${currentInputToolSpecCount} + pinnedContext: ${pinnedContextCount} = total: ${totalCount}`);
|
|
676
|
+
return totalCount;
|
|
677
|
+
}
|
|
611
678
|
calculateMessagesCharacterCount(allMessages) {
|
|
612
|
-
let
|
|
679
|
+
let bodyCount = 0;
|
|
680
|
+
let toolUsesCount = 0;
|
|
681
|
+
let toolResultsCount = 0;
|
|
682
|
+
let editorStateCount = 0;
|
|
683
|
+
let imageCharCount = 0;
|
|
613
684
|
for (const message of allMessages) {
|
|
614
685
|
// Count characters of all message text
|
|
615
|
-
|
|
686
|
+
bodyCount += message.body.length;
|
|
616
687
|
// Count characters in tool uses
|
|
617
688
|
if (message.toolUses) {
|
|
618
689
|
try {
|
|
619
690
|
for (const toolUse of message.toolUses) {
|
|
620
|
-
|
|
691
|
+
toolUsesCount += JSON.stringify(toolUse).length;
|
|
621
692
|
}
|
|
622
693
|
}
|
|
623
694
|
catch (e) {
|
|
@@ -628,7 +699,7 @@ class ChatDatabase {
|
|
|
628
699
|
if (message.userInputMessageContext?.toolResults) {
|
|
629
700
|
try {
|
|
630
701
|
for (const toolResul of message.userInputMessageContext.toolResults) {
|
|
631
|
-
|
|
702
|
+
toolResultsCount += JSON.stringify(toolResul).length;
|
|
632
703
|
}
|
|
633
704
|
}
|
|
634
705
|
catch (e) {
|
|
@@ -637,14 +708,27 @@ class ChatDatabase {
|
|
|
637
708
|
}
|
|
638
709
|
if (message.userInputMessageContext?.editorState) {
|
|
639
710
|
try {
|
|
640
|
-
|
|
711
|
+
editorStateCount += JSON.stringify(message.userInputMessageContext?.editorState).length;
|
|
641
712
|
}
|
|
642
713
|
catch (e) {
|
|
643
714
|
this.#features.logging.error(`Error counting editorState: ${String(e)}`);
|
|
644
715
|
}
|
|
645
716
|
}
|
|
717
|
+
if (message.images) {
|
|
718
|
+
try {
|
|
719
|
+
for (const image of message.images) {
|
|
720
|
+
let imageTokenInCharacter = (0, util_1.estimateCharacterCountFromImageBlock)(image);
|
|
721
|
+
imageCharCount += imageTokenInCharacter;
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
catch (e) {
|
|
725
|
+
this.#features.logging.error(`Error counting images: ${String(e)}`);
|
|
726
|
+
}
|
|
727
|
+
}
|
|
646
728
|
}
|
|
647
|
-
|
|
729
|
+
const totalCount = bodyCount + toolUsesCount + toolResultsCount + editorStateCount + imageCharCount;
|
|
730
|
+
this.#features.logging.debug(`Messages characters: body: ${bodyCount} + toolUses: ${toolUsesCount} + toolResults: ${toolResultsCount} + editorState: ${editorStateCount} + images: ${imageCharCount} = total: ${totalCount}`);
|
|
731
|
+
return totalCount;
|
|
648
732
|
}
|
|
649
733
|
/**
|
|
650
734
|
* Gets the latest conversation ID for a given tab
|
|
@@ -695,7 +779,7 @@ class ChatDatabase {
|
|
|
695
779
|
if (messages.length > 0 && messages[messages.length - 1].type === 'prompt') {
|
|
696
780
|
// Add an assistant response to both request and DB to maintain a valid sequence
|
|
697
781
|
const dummyResponse = {
|
|
698
|
-
body: '
|
|
782
|
+
body: 'Working...',
|
|
699
783
|
type: 'answer',
|
|
700
784
|
shouldDisplayMessage: false,
|
|
701
785
|
timestamp: new Date(),
|