@theia/ai-chat 1.60.0-next.43 → 1.60.0

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.
Files changed (38) hide show
  1. package/lib/browser/ai-chat-frontend-module.d.ts.map +1 -1
  2. package/lib/browser/ai-chat-frontend-module.js +4 -0
  3. package/lib/browser/ai-chat-frontend-module.js.map +1 -1
  4. package/lib/browser/file-chat-variable-contribution.d.ts +1 -1
  5. package/lib/browser/file-chat-variable-contribution.d.ts.map +1 -1
  6. package/lib/browser/file-chat-variable-contribution.js +4 -3
  7. package/lib/browser/file-chat-variable-contribution.js.map +1 -1
  8. package/lib/common/chat-agents.d.ts +8 -19
  9. package/lib/common/chat-agents.d.ts.map +1 -1
  10. package/lib/common/chat-agents.js +59 -35
  11. package/lib/common/chat-agents.js.map +1 -1
  12. package/lib/common/chat-model.d.ts +41 -4
  13. package/lib/common/chat-model.d.ts.map +1 -1
  14. package/lib/common/chat-model.js +89 -1
  15. package/lib/common/chat-model.js.map +1 -1
  16. package/lib/common/chat-request-parser.spec.js +10 -2
  17. package/lib/common/chat-request-parser.spec.js.map +1 -1
  18. package/lib/common/chat-service.d.ts +20 -4
  19. package/lib/common/chat-service.d.ts.map +1 -1
  20. package/lib/common/chat-service.js +52 -5
  21. package/lib/common/chat-service.js.map +1 -1
  22. package/lib/common/chat-session-naming-service.d.ts +26 -0
  23. package/lib/common/chat-session-naming-service.d.ts.map +1 -0
  24. package/lib/common/chat-session-naming-service.js +132 -0
  25. package/lib/common/chat-session-naming-service.js.map +1 -0
  26. package/package.json +11 -11
  27. package/src/browser/ai-chat-frontend-module.ts +5 -0
  28. package/src/browser/file-chat-variable-contribution.ts +5 -3
  29. package/src/common/chat-agents.ts +85 -69
  30. package/src/common/chat-model.ts +115 -5
  31. package/src/common/chat-request-parser.spec.ts +10 -2
  32. package/src/common/chat-service.ts +63 -5
  33. package/src/common/chat-session-naming-service.ts +135 -0
  34. package/lib/common/chat-history-entry.d.ts +0 -7
  35. package/lib/common/chat-history-entry.d.ts.map +0 -1
  36. package/lib/common/chat-history-entry.js +0 -42
  37. package/lib/common/chat-history-entry.js.map +0 -1
  38. package/src/common/chat-history-entry.ts +0 -47
@@ -1 +1 @@
1
- {"version":3,"file":"chat-service.js","sourceRoot":"","sources":["../../src/common/chat-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-service.js","sourceRoot":"","sources":["../../src/common/chat-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Agent, AgentService, CommunicationRecordingService, LanguageModelRegistry, LanguageModelRequirement, PromptService, PromptTemplate } from '@theia/ai-core';
2
+ import { ChatSession } from './chat-service';
3
+ export declare class ChatSessionNamingService {
4
+ protected agentService: AgentService;
5
+ generateChatSessionName(chatSession: ChatSession, otherNames: string[]): Promise<string | undefined>;
6
+ }
7
+ export declare class ChatSessionNamingAgent implements Agent {
8
+ static ID: string;
9
+ id: string;
10
+ name: string;
11
+ description: string;
12
+ variables: never[];
13
+ promptTemplates: PromptTemplate[];
14
+ languageModelRequirements: LanguageModelRequirement[];
15
+ agentSpecificVariables: {
16
+ name: string;
17
+ usedInPrompt: boolean;
18
+ description: string;
19
+ }[];
20
+ functions: never[];
21
+ protected readonly lmRegistry: LanguageModelRegistry;
22
+ protected recordingService: CommunicationRecordingService;
23
+ protected promptService: PromptService;
24
+ generateChatSessionName(chatSession: ChatSession, otherNames: string[]): Promise<string>;
25
+ }
26
+ //# sourceMappingURL=chat-session-naming-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-session-naming-service.d.ts","sourceRoot":"","sources":["../../src/common/chat-session-naming-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,KAAK,EACL,YAAY,EACZ,6BAA6B,EAE7B,qBAAqB,EAErB,wBAAwB,EACxB,aAAa,EACb,cAAc,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAiB7C,qBACa,wBAAwB;IACX,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IACrD,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAO7G;AAED,qBACa,sBAAuB,YAAW,KAAK;IAChD,MAAM,CAAC,EAAE,SAA+B;IACxC,EAAE,SAA6B;IAC/B,IAAI,SAAyB;IAC7B,WAAW,SAA6C;IACxD,SAAS,UAAM;IACf,eAAe,EAAE,cAAc,EAAE,CAAgC;IACjE,yBAAyB,EAAE,wBAAwB,EAAE,CAGlD;IACH,sBAAsB;;;;QAGpB;IACF,SAAS,UAAM;IAGf,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAGrD,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAG1D,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEjC,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAkDjG"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ var ChatSessionNamingAgent_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.ChatSessionNamingAgent = exports.ChatSessionNamingService = void 0;
20
+ const tslib_1 = require("tslib");
21
+ const ai_core_1 = require("@theia/ai-core");
22
+ const inversify_1 = require("@theia/core/shared/inversify");
23
+ const core_1 = require("@theia/core");
24
+ const CHAT_SESSION_NAMING_PROMPT = {
25
+ id: 'chat-session-naming-prompt',
26
+ template: '{{!-- Made improvements or adaptations to this prompt template? We\'d love for you to share it with the community! Contribute back here: ' +
27
+ 'https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}\n\n' +
28
+ 'Provide a short and descriptive name for the given AI chat conversation of an AI-powered tool based on the conversation below.\n\n' +
29
+ 'The purpose of the name is for users to recognize the chat conversation easily in a list of conversations. ' +
30
+ 'Use the same language for the chat conversation name as used in the provided conversation, if in doubt default to English. ' +
31
+ 'Start the chat conversation name with an upper-case letter. ' +
32
+ 'Below we also provide the already existing other conversation names, make sure your suggestion for a name is unique with respect to the existing ones.\n\n' +
33
+ 'IMPORTANT: Your answer MUST ONLY CONTAIN THE PROPOSED NAME and must not be preceded or succeeded with any other text.' +
34
+ '\n\nOther session names:\n{{listOfSessionNames}}' +
35
+ '\n\nConversation:\n{{conversation}}',
36
+ };
37
+ let ChatSessionNamingService = class ChatSessionNamingService {
38
+ async generateChatSessionName(chatSession, otherNames) {
39
+ const chatSessionNamingAgent = this.agentService.getAgents().find(agent => ChatSessionNamingAgent.ID === agent.id);
40
+ if (!(chatSessionNamingAgent instanceof ChatSessionNamingAgent)) {
41
+ return undefined;
42
+ }
43
+ return chatSessionNamingAgent.generateChatSessionName(chatSession, otherNames);
44
+ }
45
+ };
46
+ exports.ChatSessionNamingService = ChatSessionNamingService;
47
+ tslib_1.__decorate([
48
+ (0, inversify_1.inject)(ai_core_1.AgentService),
49
+ tslib_1.__metadata("design:type", Object)
50
+ ], ChatSessionNamingService.prototype, "agentService", void 0);
51
+ exports.ChatSessionNamingService = ChatSessionNamingService = tslib_1.__decorate([
52
+ (0, inversify_1.injectable)()
53
+ ], ChatSessionNamingService);
54
+ let ChatSessionNamingAgent = ChatSessionNamingAgent_1 = class ChatSessionNamingAgent {
55
+ constructor() {
56
+ this.id = ChatSessionNamingAgent_1.ID;
57
+ this.name = 'Chat Session Naming';
58
+ this.description = 'Agent for generating chat session names';
59
+ this.variables = [];
60
+ this.promptTemplates = [CHAT_SESSION_NAMING_PROMPT];
61
+ this.languageModelRequirements = [{
62
+ purpose: 'chat-session-naming',
63
+ identifier: 'openai/gpt-4o-mini',
64
+ }];
65
+ this.agentSpecificVariables = [
66
+ { name: 'conversation', usedInPrompt: true, description: 'The content of the chat conversation.' },
67
+ { name: 'listOfSessionNames', usedInPrompt: true, description: 'The list of existing session names.' }
68
+ ];
69
+ this.functions = [];
70
+ }
71
+ async generateChatSessionName(chatSession, otherNames) {
72
+ const lm = await this.lmRegistry.selectLanguageModel({ agent: this.id, ...this.languageModelRequirements[0] });
73
+ if (!lm) {
74
+ throw new Error('No language model found for chat session naming');
75
+ }
76
+ if (chatSession.model.getRequests().length < 1) {
77
+ throw new Error('No chat request available to generate chat session name');
78
+ }
79
+ const conversation = chatSession.model.getRequests()
80
+ .map(req => `<user>${req.request.text}</user>` +
81
+ (req.response.response ? `<assistant>${req.response.response.asString()}</assistant>` : ''))
82
+ .join('\n\n');
83
+ const listOfSessionNames = otherNames.map(name => name).join(', ');
84
+ const prompt = await this.promptService.getPrompt(CHAT_SESSION_NAMING_PROMPT.id, { conversation, listOfSessionNames });
85
+ const message = prompt === null || prompt === void 0 ? void 0 : prompt.text;
86
+ if (!message) {
87
+ throw new Error('Unable to create prompt message for generating chat session name');
88
+ }
89
+ const request = {
90
+ messages: [{
91
+ actor: 'user',
92
+ text: message,
93
+ type: 'text'
94
+ }]
95
+ };
96
+ const sessionId = (0, core_1.generateUuid)();
97
+ const requestId = (0, core_1.generateUuid)();
98
+ this.recordingService.recordRequest({
99
+ agentId: this.id,
100
+ sessionId,
101
+ requestId,
102
+ ...request
103
+ });
104
+ const result = await lm.request(request);
105
+ const response = await (0, ai_core_1.getTextOfResponse)(result);
106
+ this.recordingService.recordResponse({
107
+ agentId: this.id,
108
+ sessionId,
109
+ requestId,
110
+ response: [{ actor: 'ai', text: response, type: 'text' }]
111
+ });
112
+ return response.replace(/\s+/g, ' ').substring(0, 100);
113
+ }
114
+ };
115
+ exports.ChatSessionNamingAgent = ChatSessionNamingAgent;
116
+ ChatSessionNamingAgent.ID = 'chat-session-naming-agent';
117
+ tslib_1.__decorate([
118
+ (0, inversify_1.inject)(ai_core_1.LanguageModelRegistry),
119
+ tslib_1.__metadata("design:type", Object)
120
+ ], ChatSessionNamingAgent.prototype, "lmRegistry", void 0);
121
+ tslib_1.__decorate([
122
+ (0, inversify_1.inject)(ai_core_1.CommunicationRecordingService),
123
+ tslib_1.__metadata("design:type", Object)
124
+ ], ChatSessionNamingAgent.prototype, "recordingService", void 0);
125
+ tslib_1.__decorate([
126
+ (0, inversify_1.inject)(ai_core_1.PromptService),
127
+ tslib_1.__metadata("design:type", Object)
128
+ ], ChatSessionNamingAgent.prototype, "promptService", void 0);
129
+ exports.ChatSessionNamingAgent = ChatSessionNamingAgent = ChatSessionNamingAgent_1 = tslib_1.__decorate([
130
+ (0, inversify_1.injectable)()
131
+ ], ChatSessionNamingAgent);
132
+ //# sourceMappingURL=chat-session-naming-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-session-naming-service.js","sourceRoot":"","sources":["../../src/common/chat-session-naming-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@theia/ai-chat",
3
- "version": "1.60.0-next.43+2a13720d2",
3
+ "version": "1.60.0",
4
4
  "description": "Theia - AI Chat Extension",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.60.0-next.43+2a13720d2",
7
- "@theia/ai-history": "1.60.0-next.43+2a13720d2",
8
- "@theia/core": "1.60.0-next.43+2a13720d2",
9
- "@theia/editor": "1.60.0-next.43+2a13720d2",
10
- "@theia/file-search": "1.60.0-next.43+2a13720d2",
11
- "@theia/filesystem": "1.60.0-next.43+2a13720d2",
12
- "@theia/monaco": "1.60.0-next.43+2a13720d2",
6
+ "@theia/ai-core": "1.60.0",
7
+ "@theia/ai-history": "1.60.0",
8
+ "@theia/core": "1.60.0",
9
+ "@theia/editor": "1.60.0",
10
+ "@theia/file-search": "1.60.0",
11
+ "@theia/filesystem": "1.60.0",
12
+ "@theia/monaco": "1.60.0",
13
13
  "@theia/monaco-editor-core": "1.96.302",
14
- "@theia/workspace": "1.60.0-next.43+2a13720d2",
14
+ "@theia/workspace": "1.60.0",
15
15
  "minimatch": "^5.1.0",
16
16
  "tslib": "^2.6.2"
17
17
  },
@@ -49,10 +49,10 @@
49
49
  "watch": "theiaext watch"
50
50
  },
51
51
  "devDependencies": {
52
- "@theia/ext-scripts": "1.59.0"
52
+ "@theia/ext-scripts": "1.60.0"
53
53
  },
54
54
  "nyc": {
55
55
  "extends": "../../configs/nyc.json"
56
56
  },
57
- "gitHead": "2a13720d2d41d8ae6ee4e34cd2dee1c656a18018"
57
+ "gitHead": "193fa55d7e26aa9dc8acba3ae3b99b0182f3603f"
58
58
  }
@@ -45,6 +45,7 @@ import { FileChatVariableContribution } from './file-chat-variable-contribution'
45
45
  import { ContextSummaryVariableContribution } from '../common/context-summary-variable';
46
46
  import { ContextDetailsVariableContribution } from '../common/context-details-variable';
47
47
  import { ChangeSetVariableContribution } from './change-set-variable';
48
+ import { ChatSessionNamingAgent, ChatSessionNamingService } from '../common/chat-session-naming-service';
48
49
 
49
50
  export default new ContainerModule(bind => {
50
51
  bindContributionProvider(bind, Agent);
@@ -56,6 +57,10 @@ export default new ContainerModule(bind => {
56
57
  bind(ChatAgentService).toService(ChatAgentServiceImpl);
57
58
  bind(PinChatAgent).toConstantValue(true);
58
59
 
60
+ bind(ChatSessionNamingService).toSelf().inSingletonScope();
61
+ bind(ChatSessionNamingAgent).toSelf().inSingletonScope();
62
+ bind(Agent).toService(ChatSessionNamingAgent);
63
+
59
64
  bindContributionProvider(bind, ResponseContentMatcherProvider);
60
65
  bind(DefaultResponseContentMatcherProvider).toSelf().inSingletonScope();
61
66
  bind(ResponseContentMatcherProvider).toService(DefaultResponseContentMatcherProvider);
@@ -69,10 +69,11 @@ export class FileChatVariableContribution implements FrontendVariableContributio
69
69
 
70
70
  protected async provideArgumentCompletionItems(
71
71
  model: monaco.editor.ITextModel,
72
- position: monaco.Position
72
+ position: monaco.Position,
73
+ matchString?: string
73
74
  ): Promise<monaco.languages.CompletionItem[] | undefined> {
74
75
  const lineContent = model.getLineContent(position.lineNumber);
75
- const indexOfVariableTrigger = lineContent.lastIndexOf(PromptText.VARIABLE_CHAR, position.column - 1);
76
+ const indexOfVariableTrigger = lineContent.lastIndexOf(matchString ?? PromptText.VARIABLE_CHAR, position.column - 1);
76
77
 
77
78
  // check if there is a variable trigger and no space typed between the variable trigger and the cursor
78
79
  if (indexOfVariableTrigger === -1 || lineContent.substring(indexOfVariableTrigger).includes(' ')) {
@@ -86,7 +87,8 @@ export class FileChatVariableContribution implements FrontendVariableContributio
86
87
  const typedWord = lineContent.substring(triggerCharIndex + 1, position.column - 1);
87
88
  const range = new monaco.Range(position.lineNumber, triggerCharIndex + 2, position.lineNumber, position.column);
88
89
  const picks = await this.quickFileSelectService.getPicks(typedWord, CancellationToken.None);
89
- const prefix = lineContent[triggerCharIndex] === PromptText.VARIABLE_CHAR ? FILE_VARIABLE.name + PromptText.VARIABLE_SEPARATOR_CHAR : '';
90
+ const matchVariableChar = lineContent[triggerCharIndex] === (matchString ? matchString : PromptText.VARIABLE_CHAR);
91
+ const prefix = matchVariableChar ? FILE_VARIABLE.name + PromptText.VARIABLE_SEPARATOR_CHAR : '';
90
92
 
91
93
  return Promise.all(
92
94
  picks
@@ -24,13 +24,19 @@ import {
24
24
  AIVariableContext,
25
25
  CommunicationRecordingService,
26
26
  getTextOfResponse,
27
+ isTextResponsePart,
28
+ isThinkingResponsePart,
29
+ isToolCallResponsePart,
27
30
  LanguageModel,
31
+ LanguageModelMessage,
28
32
  LanguageModelRequirement,
29
33
  LanguageModelResponse,
34
+ LanguageModelService,
30
35
  LanguageModelStreamResponse,
31
36
  PromptService,
32
37
  PromptTemplate,
33
38
  ResolvedPromptTemplate,
39
+ TextMessage,
34
40
  ToolCall,
35
41
  ToolRequest,
36
42
  } from '@theia/ai-core';
@@ -39,10 +45,9 @@ import {
39
45
  isLanguageModelStreamResponse,
40
46
  isLanguageModelTextResponse,
41
47
  LanguageModelRegistry,
42
- LanguageModelStreamResponsePart,
43
- MessageActor,
48
+ LanguageModelStreamResponsePart
44
49
  } from '@theia/ai-core/lib/common';
45
- import { CancellationToken, ContributionProvider, ILogger, isArray } from '@theia/core';
50
+ import { ContributionProvider, ILogger, isArray } from '@theia/core';
46
51
  import { inject, injectable, named, postConstruct } from '@theia/core/shared/inversify';
47
52
  import { ChatAgentService } from './chat-agent-service';
48
53
  import {
@@ -52,24 +57,12 @@ import {
52
57
  ErrorChatResponseContentImpl,
53
58
  MarkdownChatResponseContentImpl,
54
59
  ToolCallChatResponseContentImpl,
55
- ChatRequestModel
60
+ ChatRequestModel,
61
+ ThinkingChatResponseContentImpl
56
62
  } from './chat-model';
57
63
  import { findFirstMatch, parseContents } from './parse-contents';
58
64
  import { DefaultResponseContentFactory, ResponseContentMatcher, ResponseContentMatcherProvider } from './response-content-matcher';
59
- import { ChatHistoryEntry } from './chat-history-entry';
60
- import { ChatToolRequestService } from './chat-tool-request-service';
61
-
62
- /**
63
- * A conversation consists of a sequence of ChatMessages.
64
- * Each ChatMessage is either a user message, AI message or a system message.
65
- *
66
- * For now we only support text based messages.
67
- */
68
- export interface ChatMessage {
69
- actor: MessageActor;
70
- type: 'text';
71
- query: string;
72
- }
65
+ import { ChatToolRequest, ChatToolRequestService } from './chat-tool-request-service';
73
66
 
74
67
  /**
75
68
  * System message content, enriched with function descriptions.
@@ -138,8 +131,8 @@ export interface ChatAgent extends Agent {
138
131
  export abstract class AbstractChatAgent implements ChatAgent {
139
132
  @inject(LanguageModelRegistry) protected languageModelRegistry: LanguageModelRegistry;
140
133
  @inject(ILogger) protected logger: ILogger;
141
- @inject(CommunicationRecordingService) protected recordingService: CommunicationRecordingService;
142
134
  @inject(ChatToolRequestService) protected chatToolRequestService: ChatToolRequestService;
135
+ @inject(LanguageModelService) protected languageModelService: LanguageModelService;
143
136
  @inject(PromptService) protected promptService: PromptService;
144
137
 
145
138
  @inject(ContributionProvider) @named(ResponseContentMatcherProvider)
@@ -148,6 +141,9 @@ export abstract class AbstractChatAgent implements ChatAgent {
148
141
  @inject(DefaultResponseContentFactory)
149
142
  protected defaultContentFactory: DefaultResponseContentFactory;
150
143
 
144
+ @inject(CommunicationRecordingService)
145
+ protected recordingService: CommunicationRecordingService;
146
+
151
147
  readonly abstract id: string;
152
148
  readonly abstract name: string;
153
149
  readonly abstract languageModelRequirements: LanguageModelRequirement[];
@@ -160,7 +156,6 @@ export abstract class AbstractChatAgent implements ChatAgent {
160
156
  agentSpecificVariables: AgentSpecificVariables[] = [];
161
157
  functions: string[] = [];
162
158
  protected readonly abstract defaultLanguageModelPurpose: string;
163
- protected defaultLogging: boolean = true;
164
159
  protected systemPromptId: string | undefined = undefined;
165
160
  protected additionalToolRequests: ToolRequest[] = [];
166
161
  protected contentMatchers: ResponseContentMatcher[] = [];
@@ -183,21 +178,12 @@ export abstract class AbstractChatAgent implements ChatAgent {
183
178
  }
184
179
  const systemMessageDescription = await this.getSystemMessageDescription({ model: request.session, request } satisfies ChatSessionContext);
185
180
  const messages = await this.getMessages(request.session);
186
- if (this.defaultLogging) {
187
- this.recordingService.recordRequest(
188
- ChatHistoryEntry.fromRequest(
189
- this.id, request, {
190
- messages,
191
- systemMessage: systemMessageDescription?.text
192
- })
193
- );
194
- }
195
181
 
196
182
  if (systemMessageDescription) {
197
- const systemMsg: ChatMessage = {
183
+ const systemMsg: LanguageModelMessage = {
198
184
  actor: 'system',
199
185
  type: 'text',
200
- query: systemMessageDescription.text
186
+ text: systemMessageDescription.text
201
187
  };
202
188
  // insert system message at the beginning of the request messages
203
189
  messages.unshift(systemMsg);
@@ -209,18 +195,11 @@ export abstract class AbstractChatAgent implements ChatAgent {
209
195
  ...this.chatToolRequestService.toChatToolRequests(systemMessageToolRequests ? Array.from(systemMessageToolRequests) : [], request),
210
196
  ...this.chatToolRequestService.toChatToolRequests(this.additionalToolRequests, request)
211
197
  ];
198
+ const languageModelResponse = await this.sendLlmRequest(request, messages, tools, languageModel);
212
199
 
213
- const languageModelResponse = await this.callLlm(
214
- languageModel,
215
- messages,
216
- tools.length > 0 ? tools : undefined,
217
- request.response.cancellationToken
218
- );
219
200
  await this.addContentsToResponse(languageModelResponse, request);
220
201
  await this.onResponseComplete(request);
221
- if (this.defaultLogging) {
222
- this.recordingService.recordResponse(ChatHistoryEntry.fromResponse(this.id, request));
223
- }
202
+
224
203
  } catch (e) {
225
204
  this.handleError(request, e);
226
205
  }
@@ -266,21 +245,28 @@ export abstract class AbstractChatAgent implements ChatAgent {
266
245
 
267
246
  protected async getMessages(
268
247
  model: ChatModel, includeResponseInProgress = false
269
- ): Promise<ChatMessage[]> {
248
+ ): Promise<LanguageModelMessage[]> {
270
249
  const requestMessages = model.getRequests().flatMap(request => {
271
- const messages: ChatMessage[] = [];
250
+ const messages: LanguageModelMessage[] = [];
272
251
  const text = request.message.parts.map(part => part.promptText).join('');
273
252
  messages.push({
274
253
  actor: 'user',
275
254
  type: 'text',
276
- query: text,
255
+ text: text,
277
256
  });
278
257
  if (request.response.isComplete || includeResponseInProgress) {
279
- messages.push({
280
- actor: 'ai',
281
- type: 'text',
282
- query: request.response.response.asString(),
258
+ const responseMessages: LanguageModelMessage[] = request.response.response.content.flatMap(c => {
259
+ if (ChatResponseContent.hasToLanguageModelMessage(c)) {
260
+ return c.toLanguageModelMessage();
261
+ }
262
+
263
+ return {
264
+ actor: 'ai',
265
+ type: 'text',
266
+ text: c.asString?.() ?? c.asDisplayString?.() ?? '',
267
+ } as TextMessage;
283
268
  });
269
+ messages.push(...responseMessages);
284
270
  }
285
271
  return messages;
286
272
  });
@@ -288,19 +274,33 @@ export abstract class AbstractChatAgent implements ChatAgent {
288
274
  return requestMessages;
289
275
  }
290
276
 
291
- protected async callLlm(
292
- languageModel: LanguageModel,
293
- messages: ChatMessage[],
294
- tools: ToolRequest[] | undefined,
295
- token: CancellationToken
277
+ protected async sendLlmRequest(
278
+ request: MutableChatRequestModel,
279
+ messages: LanguageModelMessage[],
280
+ toolRequests: ChatToolRequest[],
281
+ languageModel: LanguageModel
296
282
  ): Promise<LanguageModelResponse> {
297
- const settings = this.getLlmSettings();
298
- const languageModelResponse = languageModel.request({
299
- messages,
300
- tools,
301
- settings,
302
- }, token);
303
- return languageModelResponse;
283
+ const agentSettings = this.getLlmSettings();
284
+ const settings = { ...agentSettings, ...request.session.settings };
285
+ const tools = toolRequests.length > 0 ? toolRequests : undefined;
286
+ this.recordingService.recordRequest({
287
+ agentId: this.id,
288
+ sessionId: request.session.id,
289
+ requestId: request.id,
290
+ request: messages
291
+ });
292
+ return this.languageModelService.sendRequest(
293
+ languageModel,
294
+ {
295
+ messages,
296
+ tools,
297
+ settings,
298
+ agentId: this.id,
299
+ sessionId: request.session.id,
300
+ requestId: request.id,
301
+ cancellationToken: request.response.cancellationToken
302
+ }
303
+ );
304
304
  }
305
305
 
306
306
  /**
@@ -317,6 +317,15 @@ export abstract class AbstractChatAgent implements ChatAgent {
317
317
  * Subclasses may override this method to perform additional actions or keep the response open for processing further requests.
318
318
  */
319
319
  protected async onResponseComplete(request: MutableChatRequestModel): Promise<void> {
320
+ this.recordingService.recordResponse(
321
+ {
322
+ agentId: this.id,
323
+ sessionId: request.session.id,
324
+ requestId: request.id,
325
+ response: request.response.response.content.flatMap(c =>
326
+ c.toLanguageModelMessage?.() ?? ({ type: 'text', actor: 'ai', text: c.asDisplayString?.() ?? c.asString?.() ?? JSON.stringify(c) }))
327
+ }
328
+ );
320
329
  return request.response.complete();
321
330
  }
322
331
 
@@ -407,17 +416,24 @@ export abstract class AbstractStreamParsingChatAgent extends AbstractChatAgent {
407
416
  }
408
417
 
409
418
  protected parse(token: LanguageModelStreamResponsePart, request: MutableChatRequestModel): ChatResponseContent | ChatResponseContent[] {
410
- const content = token.content;
411
- // eslint-disable-next-line no-null/no-null
412
- if (content !== undefined && content !== null) {
413
- return this.defaultContentFactory.create(content, request);
419
+ if (isTextResponsePart(token)) {
420
+ const content = token.content;
421
+ // eslint-disable-next-line no-null/no-null
422
+ if (content !== undefined && content !== null) {
423
+ return this.defaultContentFactory.create(content, request);
424
+ }
425
+ }
426
+ if (isToolCallResponsePart(token)) {
427
+ const toolCalls = token.tool_calls;
428
+ if (toolCalls !== undefined) {
429
+ const toolCallContents = toolCalls.map(toolCall =>
430
+ this.createToolCallResponseContent(toolCall)
431
+ );
432
+ return toolCallContents;
433
+ }
414
434
  }
415
- const toolCalls = token.tool_calls;
416
- if (toolCalls !== undefined) {
417
- const toolCallContents = toolCalls.map(toolCall =>
418
- this.createToolCallResponseContent(toolCall)
419
- );
420
- return toolCallContents;
435
+ if (isThinkingResponsePart(token)) {
436
+ return new ThinkingChatResponseContentImpl(token.thought, token.signature);
421
437
  }
422
438
  return this.defaultContentFactory.create('', request);
423
439
  }