@theia/ai-chat 1.59.0 → 1.60.0-next.47

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.
@@ -10,6 +10,6 @@ export declare class FrontendChatServiceImpl extends ChatServiceImpl {
10
10
  protected getAgent(parsedRequest: ParsedChatRequest, session: ChatSession): ChatAgent | undefined;
11
11
  protected initialAgentSelection(parsedRequest: ParsedChatRequest): ChatAgent | undefined;
12
12
  protected getConfiguredDefaultChatAgent(): ChatAgent | undefined;
13
- createSession(location?: ChatAgentLocation, options?: SessionOptions): ChatSession;
13
+ createSession(location?: ChatAgentLocation, options?: SessionOptions, pinnedAgent?: ChatAgent): ChatSession;
14
14
  }
15
15
  //# sourceMappingURL=frontend-chat-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-chat-service.d.ts","sourceRoot":"","sources":["../../src/browser/frontend-chat-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAa,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACrI,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;GAEG;AACH,qBACa,uBAAwB,SAAQ,eAAe;IAGxD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;cAE3C,QAAQ,CAAC,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;cAavF,qBAAqB,CAAC,aAAa,EAAE,iBAAiB,GAAG,SAAS,GAAG,SAAS;IAWjG,SAAS,CAAC,6BAA6B,IAAI,SAAS,GAAG,SAAS;IASvD,aAAa,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,WAAW;CAY9F"}
1
+ {"version":3,"file":"frontend-chat-service.d.ts","sourceRoot":"","sources":["../../src/browser/frontend-chat-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAa,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACrI,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;GAEG;AACH,qBACa,uBAAwB,SAAQ,eAAe;IAGxD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;cAE3C,QAAQ,CAAC,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;cAavF,qBAAqB,CAAC,aAAa,EAAE,iBAAiB,GAAG,SAAS,GAAG,SAAS;IAWjG,SAAS,CAAC,6BAA6B,IAAI,SAAS,GAAG,SAAS;IASvD,aAAa,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,WAAW;CAYvH"}
@@ -58,8 +58,8 @@ let FrontendChatServiceImpl = class FrontendChatServiceImpl extends common_1.Cha
58
58
  }
59
59
  return configuredDefaultChatAgent;
60
60
  }
61
- createSession(location, options) {
62
- const session = super.createSession(location, options);
61
+ createSession(location, options, pinnedAgent) {
62
+ const session = super.createSession(location, options, pinnedAgent);
63
63
  session.model.onDidChange(event => {
64
64
  const changeSet = event.changeSet;
65
65
  if (event.kind === 'removeChangeSet') {
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-chat-service.js","sourceRoot":"","sources":["../../src/browser/frontend-chat-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontend-chat-service.js","sourceRoot":"","sources":["../../src/browser/frontend-chat-service.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,31 @@
1
1
  import { ChatAgentService } from './chat-agent-service';
2
2
  import { ChatAgentLocation } from './chat-agents';
3
- import { ChatRequest } from './chat-model';
4
- import { ParsedChatRequest } from './parsed-chat-request';
5
- import { AIVariableService, ToolInvocationRegistry } from '@theia/ai-core';
3
+ import { ChatContext, ChatRequest } from './chat-model';
4
+ import { ParsedChatRequest, ParsedChatRequestPart } from './parsed-chat-request';
5
+ import { AIVariable, AIVariableService, ToolInvocationRegistry, ToolRequest } from '@theia/ai-core';
6
+ import { ILogger } from '@theia/core';
6
7
  export declare const ChatRequestParser: unique symbol;
7
8
  export interface ChatRequestParser {
8
- parseChatRequest(request: ChatRequest, location: ChatAgentLocation): ParsedChatRequest;
9
+ parseChatRequest(request: ChatRequest, location: ChatAgentLocation, context: ChatContext): Promise<ParsedChatRequest>;
9
10
  }
10
11
  export declare class ChatRequestParserImpl {
11
12
  private readonly agentService;
12
13
  private readonly variableService;
13
14
  private readonly toolInvocationRegistry;
14
- constructor(agentService: ChatAgentService, variableService: AIVariableService, toolInvocationRegistry: ToolInvocationRegistry);
15
- parseChatRequest(request: ChatRequest, location: ChatAgentLocation): ParsedChatRequest;
15
+ private readonly logger;
16
+ constructor(agentService: ChatAgentService, variableService: AIVariableService, toolInvocationRegistry: ToolInvocationRegistry, logger: ILogger);
17
+ parseChatRequest(request: ChatRequest, location: ChatAgentLocation, context: ChatContext): Promise<ParsedChatRequest>;
18
+ protected parseParts(request: ChatRequest, location: ChatAgentLocation): {
19
+ parts: ParsedChatRequestPart[];
20
+ toolRequests: Map<string, ToolRequest>;
21
+ variables: Map<string, AIVariable>;
22
+ };
23
+ /**
24
+ * Parse text for tool requests and add them to the given map
25
+ */
26
+ private parseFunctionsFromVariableText;
16
27
  private tryToParseAgent;
17
28
  private tryToParseVariable;
18
- private tryParseFunction;
29
+ private tryToParseFunction;
19
30
  }
20
31
  //# sourceMappingURL=chat-request-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-request-parser.d.ts","sourceRoot":"","sources":["../../src/common/chat-request-parser.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EASH,iBAAiB,EAEpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAc,iBAAiB,EAAE,sBAAsB,EAAe,MAAM,gBAAgB,CAAC;AAMpG,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAC7D,MAAM,WAAW,iBAAiB;IAC9B,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB,CAAC;CAC1F;AAQD,qBACa,qBAAqB;IAEA,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;gBAF5B,YAAY,EAAE,gBAAgB,EAC7B,eAAe,EAAE,iBAAiB,EAC7B,sBAAsB,EAAE,sBAAsB;IAGnG,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,GAAG,iBAAiB;IA2EtF,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,gBAAgB;CAgB3B"}
1
+ {"version":3,"file":"chat-request-parser.d.ts","sourceRoot":"","sources":["../../src/common/chat-request-parser.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EASH,iBAAiB,EACjB,qBAAqB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAA2D,sBAAsB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7J,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAOtC,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAC7D,MAAM,WAAW,iBAAiB;IAC9B,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzH;AAQD,qBACa,qBAAqB;IAEA,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHG,YAAY,EAAE,gBAAgB,EAC7B,eAAe,EAAE,iBAAiB,EAC7B,sBAAsB,EAAE,sBAAsB,EAC7D,MAAM,EAAE,OAAO;IAG/C,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiC3H,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,GAAG;QACrE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC/B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;KACtC;IAyED;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAetC,OAAO,CAAC,eAAe;IAiDvB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,kBAAkB;CAiB7B"}
@@ -26,8 +26,10 @@ const inversify_1 = require("@theia/core/shared/inversify");
26
26
  const chat_agent_service_1 = require("./chat-agent-service");
27
27
  const parsed_chat_request_1 = require("./parsed-chat-request");
28
28
  const ai_core_1 = require("@theia/ai-core");
29
+ const core_1 = require("@theia/core");
29
30
  const agentReg = /^@([\w_\-\.]+)(?=(\s|$|\b))/i; // An @-agent
30
31
  const functionReg = /^~([\w_\-\.]+)(?=(\s|$|\b))/i; // A ~ tool function
32
+ const functionPromptFormatReg = /^\~\{\s*(.*?)\s*\}/i; // A ~{} prompt-format tool function
31
33
  const variableReg = /^#([\w_\-]+)(?::([\w_\-_\/\\.:]+))?(?=(\s|$|\b))/i; // A #-variable with an optional : arg (#file:workspace/path/name.ext)
32
34
  exports.ChatRequestParser = Symbol('ChatRequestParser');
33
35
  function offsetRange(start, endExclusive) {
@@ -37,12 +39,39 @@ function offsetRange(start, endExclusive) {
37
39
  return { start, endExclusive };
38
40
  }
39
41
  let ChatRequestParserImpl = class ChatRequestParserImpl {
40
- constructor(agentService, variableService, toolInvocationRegistry) {
42
+ constructor(agentService, variableService, toolInvocationRegistry, logger) {
41
43
  this.agentService = agentService;
42
44
  this.variableService = variableService;
43
45
  this.toolInvocationRegistry = toolInvocationRegistry;
46
+ this.logger = logger;
44
47
  }
45
- parseChatRequest(request, location) {
48
+ async parseChatRequest(request, location, context) {
49
+ // Parse the request into parts
50
+ const { parts, toolRequests } = this.parseParts(request, location);
51
+ // Resolve all variables and add them to the variable parts.
52
+ // Parse resolved variable texts again for tool requests.
53
+ // These are not added to parts as they are not visible in the initial chat message.
54
+ // However, they need to be added to the result to be considered by the executing agent.
55
+ const variableCache = (0, ai_core_1.createAIResolveVariableCache)();
56
+ for (const part of parts) {
57
+ if (part instanceof parsed_chat_request_1.ParsedChatRequestVariablePart) {
58
+ const resolvedVariable = await this.variableService.resolveVariable({ variable: part.variableName, arg: part.variableArg }, context, variableCache);
59
+ if (resolvedVariable) {
60
+ part.resolution = resolvedVariable;
61
+ // Resolve tool requests in resolved variables
62
+ this.parseFunctionsFromVariableText(resolvedVariable.value, toolRequests);
63
+ }
64
+ else {
65
+ this.logger.warn(`Failed to resolve variable ${part.variableName} for ${location}`);
66
+ }
67
+ }
68
+ }
69
+ // Get resolved variables from variable cache after all variables have been resolved.
70
+ // We want to return all recursilvely resolved variables, thus use the whole cache.
71
+ const resolvedVariables = await (0, ai_core_1.getAllResolvedAIVariables)(variableCache);
72
+ return { request, parts, toolRequests, variables: resolvedVariables };
73
+ }
74
+ parseParts(request, location) {
46
75
  var _a, _b;
47
76
  const parts = [];
48
77
  const variables = new Map();
@@ -54,7 +83,7 @@ let ChatRequestParserImpl = class ChatRequestParserImpl {
54
83
  let newPart;
55
84
  if (previousChar.match(/\s/) || i === 0) {
56
85
  if (char === parsed_chat_request_1.chatFunctionLeader) {
57
- const functionPart = this.tryParseFunction(message.slice(i), i);
86
+ const functionPart = this.tryToParseFunction(message.slice(i), i);
58
87
  newPart = functionPart;
59
88
  if (functionPart) {
60
89
  toolRequests.set(functionPart.toolRequest.id, functionPart.toolRequest);
@@ -89,7 +118,23 @@ let ChatRequestParserImpl = class ChatRequestParserImpl {
89
118
  if (lastPartEnd < message.length) {
90
119
  parts.push(new parsed_chat_request_1.ParsedChatRequestTextPart(offsetRange(lastPartEnd, message.length), message.slice(lastPartEnd, message.length)));
91
120
  }
92
- return { request, parts, toolRequests, variables };
121
+ return { parts, toolRequests, variables };
122
+ }
123
+ /**
124
+ * Parse text for tool requests and add them to the given map
125
+ */
126
+ parseFunctionsFromVariableText(text, toolRequests) {
127
+ for (let i = 0; i < text.length; i++) {
128
+ const char = text.charAt(i);
129
+ // Check for function markers at start of words
130
+ if (char === parsed_chat_request_1.chatFunctionLeader) {
131
+ const functionPart = this.tryToParseFunction(text.slice(i), i);
132
+ if (functionPart) {
133
+ // Add the found tool request to the given map
134
+ toolRequests.set(functionPart.toolRequest.id, functionPart.toolRequest);
135
+ }
136
+ }
137
+ }
93
138
  }
94
139
  tryToParseAgent(message, offset, parts, location) {
95
140
  const nextAgentMatch = message.match(agentReg);
@@ -133,8 +178,9 @@ let ChatRequestParserImpl = class ChatRequestParserImpl {
133
178
  const varRange = offsetRange(offset, offset + full.length);
134
179
  return new parsed_chat_request_1.ParsedChatRequestVariablePart(varRange, name, variableArg);
135
180
  }
136
- tryParseFunction(message, offset) {
137
- const nextFunctionMatch = message.match(functionReg);
181
+ tryToParseFunction(message, offset) {
182
+ // Support both the and chat and prompt formats for functions
183
+ const nextFunctionMatch = message.match(functionPromptFormatReg) || message.match(functionReg);
138
184
  if (!nextFunctionMatch) {
139
185
  return;
140
186
  }
@@ -153,6 +199,7 @@ exports.ChatRequestParserImpl = ChatRequestParserImpl = tslib_1.__decorate([
153
199
  tslib_1.__param(0, (0, inversify_1.inject)(chat_agent_service_1.ChatAgentService)),
154
200
  tslib_1.__param(1, (0, inversify_1.inject)(ai_core_1.AIVariableService)),
155
201
  tslib_1.__param(2, (0, inversify_1.inject)(ai_core_1.ToolInvocationRegistry)),
156
- tslib_1.__metadata("design:paramtypes", [Object, Object, Object])
202
+ tslib_1.__param(3, (0, inversify_1.inject)(core_1.ILogger)),
203
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Object, Object])
157
204
  ], ChatRequestParserImpl);
158
205
  //# sourceMappingURL=chat-request-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-request-parser.js","sourceRoot":"","sources":["../../src/common/chat-request-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-request-parser.js","sourceRoot":"","sources":["../../src/common/chat-request-parser.ts"],"names":[],"mappings":"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"}
@@ -21,26 +21,35 @@ const chat_request_parser_1 = require("./chat-request-parser");
21
21
  const chat_agents_1 = require("./chat-agents");
22
22
  const chai_1 = require("chai");
23
23
  const ai_core_1 = require("@theia/ai-core");
24
+ const core_1 = require("@theia/core");
25
+ const parsed_chat_request_1 = require("./parsed-chat-request");
24
26
  describe('ChatRequestParserImpl', () => {
25
27
  const chatAgentService = sinon.createStubInstance(chat_agent_service_1.ChatAgentServiceImpl);
26
28
  const variableService = sinon.createStubInstance(ai_core_1.DefaultAIVariableService);
27
29
  const toolInvocationRegistry = sinon.createStubInstance(ai_core_1.ToolInvocationRegistryImpl);
28
- const parser = new chat_request_parser_1.ChatRequestParserImpl(chatAgentService, variableService, toolInvocationRegistry);
29
- it('parses simple text', () => {
30
+ const logger = sinon.createStubInstance(core_1.Logger);
31
+ const parser = new chat_request_parser_1.ChatRequestParserImpl(chatAgentService, variableService, toolInvocationRegistry, logger);
32
+ beforeEach(() => {
33
+ // Reset our stubs before each test
34
+ sinon.reset();
35
+ });
36
+ it('parses simple text', async () => {
30
37
  const req = {
31
38
  text: 'What is the best pizza topping?'
32
39
  };
33
- const result = parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel);
40
+ const context = { variables: [] };
41
+ const result = await parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel, context);
34
42
  (0, chai_1.expect)(result.parts).to.deep.contain({
35
43
  text: 'What is the best pizza topping?',
36
44
  range: { start: 0, endExclusive: 31 }
37
45
  });
38
46
  });
39
- it('parses text with variable name', () => {
47
+ it('parses text with variable name', async () => {
40
48
  const req = {
41
49
  text: 'What is the #best pizza topping?'
42
50
  };
43
- const result = parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel);
51
+ const context = { variables: [] };
52
+ const result = await parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel, context);
44
53
  (0, chai_1.expect)(result).to.deep.contain({
45
54
  parts: [{
46
55
  text: 'What is the ',
@@ -55,11 +64,12 @@ describe('ChatRequestParserImpl', () => {
55
64
  }]
56
65
  });
57
66
  });
58
- it('parses text with variable name with argument', () => {
67
+ it('parses text with variable name with argument', async () => {
59
68
  const req = {
60
69
  text: 'What is the #best:by-poll pizza topping?'
61
70
  };
62
- const result = parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel);
71
+ const context = { variables: [] };
72
+ const result = await parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel, context);
63
73
  (0, chai_1.expect)(result).to.deep.contain({
64
74
  parts: [{
65
75
  text: 'What is the ',
@@ -74,35 +84,93 @@ describe('ChatRequestParserImpl', () => {
74
84
  }]
75
85
  });
76
86
  });
77
- it('parses text with variable name with numeric argument', () => {
87
+ it('parses text with variable name with numeric argument', async () => {
78
88
  const req = {
79
89
  text: '#size-class:2'
80
90
  };
81
- const result = parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel);
91
+ const context = { variables: [] };
92
+ const result = await parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel, context);
82
93
  (0, chai_1.expect)(result.parts[0]).to.contain({
83
94
  variableName: 'size-class',
84
95
  variableArg: '2'
85
96
  });
86
97
  });
87
- it('parses text with variable name with POSIX path argument', () => {
98
+ it('parses text with variable name with POSIX path argument', async () => {
88
99
  const req = {
89
100
  text: '#file:/path/to/file.ext'
90
101
  };
91
- const result = parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel);
102
+ const context = { variables: [] };
103
+ const result = await parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel, context);
92
104
  (0, chai_1.expect)(result.parts[0]).to.contain({
93
105
  variableName: 'file',
94
106
  variableArg: '/path/to/file.ext'
95
107
  });
96
108
  });
97
- it('parses text with variable name with Win32 path argument', () => {
109
+ it('parses text with variable name with Win32 path argument', async () => {
98
110
  const req = {
99
111
  text: '#file:c:\\path\\to\\file.ext'
100
112
  };
101
- const result = parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel);
113
+ const context = { variables: [] };
114
+ const result = await parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel, context);
102
115
  (0, chai_1.expect)(result.parts[0]).to.contain({
103
116
  variableName: 'file',
104
117
  variableArg: 'c:\\path\\to\\file.ext'
105
118
  });
106
119
  });
120
+ it('resolves variable and extracts tool functions from resolved variable', async () => {
121
+ // Set up two test tool requests that will be referenced in the variable content
122
+ const testTool1 = {
123
+ id: 'testTool1',
124
+ name: 'Test Tool 1',
125
+ handler: async () => undefined
126
+ };
127
+ const testTool2 = {
128
+ id: 'testTool2',
129
+ name: 'Test Tool 2',
130
+ handler: async () => undefined
131
+ };
132
+ // Configure the tool registry to return our test tools
133
+ toolInvocationRegistry.getFunction.withArgs(testTool1.id).returns(testTool1);
134
+ toolInvocationRegistry.getFunction.withArgs(testTool2.id).returns(testTool2);
135
+ // Set up the test variable to include in the request
136
+ const testVariable = {
137
+ id: 'testVariable',
138
+ name: 'testVariable',
139
+ description: 'A test variable',
140
+ };
141
+ // Configure the variable service to return our test variable
142
+ // One tool reference uses chat format and one uses prompt format because the parser needs to handle both.
143
+ variableService.getVariable.withArgs(testVariable.name).returns(testVariable);
144
+ variableService.resolveVariable.withArgs({ variable: testVariable.name, arg: 'myarg' }, sinon.match.any).resolves({
145
+ variable: testVariable,
146
+ arg: 'myarg',
147
+ value: 'This is a test with ~testTool1 and **~{testTool2}** and more text.',
148
+ });
149
+ // Create a request with the test variable
150
+ const req = {
151
+ text: 'Test with #testVariable:myarg'
152
+ };
153
+ const context = { variables: [] };
154
+ // Parse the request
155
+ const result = await parser.parseChatRequest(req, chat_agents_1.ChatAgentLocation.Panel, context);
156
+ // Verify the variable part contains the correct properties
157
+ (0, chai_1.expect)(result.parts.length).to.equal(2);
158
+ (0, chai_1.expect)(result.parts[0] instanceof parsed_chat_request_1.ParsedChatRequestTextPart).to.be.true;
159
+ (0, chai_1.expect)(result.parts[1] instanceof parsed_chat_request_1.ParsedChatRequestVariablePart).to.be.true;
160
+ const variablePart = result.parts[1];
161
+ (0, chai_1.expect)(variablePart).to.have.property('resolution');
162
+ (0, chai_1.expect)(variablePart.resolution).to.deep.equal({
163
+ variable: testVariable,
164
+ arg: 'myarg',
165
+ value: 'This is a test with ~testTool1 and **~{testTool2}** and more text.',
166
+ });
167
+ // Verify both tool functions were extracted from the variable content
168
+ (0, chai_1.expect)(result.toolRequests.size).to.equal(2);
169
+ (0, chai_1.expect)(result.toolRequests.has(testTool1.id)).to.be.true;
170
+ (0, chai_1.expect)(result.toolRequests.has(testTool2.id)).to.be.true;
171
+ // Verify the result contains the tool requests returned by the registry
172
+ (0, chai_1.expect)(result.toolRequests.get(testTool1.id)).to.deep.equal(testTool1);
173
+ (0, chai_1.expect)(result.toolRequests.get(testTool2.id)).to.deep.equal(testTool2);
174
+ });
107
175
  });
108
176
  //# sourceMappingURL=chat-request-parser.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-request-parser.spec.js","sourceRoot":"","sources":["../../src/common/chat-request-parser.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-request-parser.spec.js","sourceRoot":"","sources":["../../src/common/chat-request-parser.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-service.d.ts","sourceRoot":"","sources":["../../src/common/chat-service.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAA6B,MAAM,gBAAgB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,mDAAmD,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EACH,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EAEjB,WAAW,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAiC,MAAM,uBAAuB,CAAC;AAErH,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5C;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC5C;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACtC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAA+B,CAAC;AAC/D,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AACjE,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,YAAY,eAAyB,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;AAEnC,eAAO,MAAM,WAAW,eAAwB,CAAC;AACjD,MAAM,WAAW,WAAW;IACxB,sBAAsB,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAExD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAChD,WAAW,IAAI,WAAW,EAAE,CAAC;IAC7B,aAAa,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAC5G,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAEpE,WAAW,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAE9C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAED,UAAU,mBAAoB,SAAQ,WAAW;IAC7C,KAAK,EAAE,gBAAgB,CAAC;CAC3B;AAED,qBACa,eAAgB,YAAW,WAAW;IAC/C,SAAS,CAAC,QAAQ,CAAC,6BAA6B,qCAA4C;IAC5F,sBAAsB,yDAA4C;IAGlE,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAG7C,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAG7D,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAG/D,SAAS,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAG5C,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAG7C,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAE1B,SAAS,CAAC,SAAS,EAAE,mBAAmB,EAAE,CAAM;IAEhD,WAAW,IAAI,mBAAmB,EAAE;IAIpC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIvD,aAAa,CAAC,QAAQ,oBAA0B,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,WAAW;IAajH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAYtC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAOzE,WAAW,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,GACrB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;cAuE7B,kBAAkB,CAC9B,kBAAkB,EAAE,SAAS,2BAA2B,EAAE,EAC1D,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,WAAW,CAAC;IAajB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;IAajG,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,iBAAiB,GAAG,SAAS,GAAG,SAAS;IAmBxF,SAAS,CAAC,iBAAiB,CAAC,aAAa,EAAE,iBAAiB,GAAG,0BAA0B,GAAG,SAAS;IAIrG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIxC,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAGjE"}
1
+ {"version":3,"file":"chat-service.d.ts","sourceRoot":"","sources":["../../src/common/chat-service.ts"],"names":[],"mappings":"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"}
@@ -90,7 +90,9 @@ let ChatServiceImpl = class ChatServiceImpl {
90
90
  return undefined;
91
91
  }
92
92
  session.title = request.text;
93
- const parsedRequest = this.chatRequestParser.parseChatRequest(request, session.model.location);
93
+ const resolutionContext = { model: session.model };
94
+ const resolvedContext = await this.resolveChatContext(session.model.context.getVariables(), resolutionContext);
95
+ const parsedRequest = await this.chatRequestParser.parseChatRequest(request, session.model.location, resolvedContext);
94
96
  const agent = this.getAgent(parsedRequest, session);
95
97
  if (agent === undefined) {
96
98
  const error = 'No ChatAgents available to handle request!';
@@ -102,21 +104,8 @@ let ChatServiceImpl = class ChatServiceImpl {
102
104
  responseCompleted: Promise.resolve(chatResponseModel),
103
105
  };
104
106
  }
105
- const resolutionContext = { model: session.model };
106
- const resolvedContext = await this.resolveChatContext(session.model.context.getVariables(), resolutionContext);
107
107
  const requestModel = session.model.addRequest(parsedRequest, agent === null || agent === void 0 ? void 0 : agent.id, resolvedContext);
108
108
  resolutionContext.request = requestModel;
109
- for (const part of parsedRequest.parts) {
110
- if (part instanceof parsed_chat_request_1.ParsedChatRequestVariablePart) {
111
- const resolvedVariable = await this.variableService.resolveVariable({ variable: part.variableName, arg: part.variableArg }, resolutionContext);
112
- if (resolvedVariable) {
113
- part.resolution = resolvedVariable;
114
- }
115
- else {
116
- this.logger.warn(`Failed to resolve variable ${part.variableName} for ${session.model.location}`);
117
- }
118
- }
119
- }
120
109
  let resolveResponseCreated;
121
110
  let resolveResponseCompleted;
122
111
  const invocation = {
@@ -146,6 +135,7 @@ let ChatServiceImpl = class ChatServiceImpl {
146
135
  return invocation;
147
136
  }
148
137
  async resolveChatContext(resolutionRequests, context) {
138
+ // TODO use a common cache to resolve variables and return recursively resolved variables?
149
139
  const resolvedVariables = await Promise.all(resolutionRequests.map(async (contextVariable) => {
150
140
  const resolvedVariable = await this.variableService.resolveVariable(contextVariable, context);
151
141
  if (ai_core_1.ResolvedAIContextVariable.is(resolvedVariable)) {
@@ -200,8 +190,12 @@ let ChatServiceImpl = class ChatServiceImpl {
200
190
  (_a = this.getSession(sessionId)) === null || _a === void 0 ? void 0 : _a.model.removeChangeSet();
201
191
  }
202
192
  deleteChangeSetElement(sessionId, index) {
203
- var _a, _b;
193
+ var _a, _b, _c, _d;
204
194
  (_b = (_a = this.getSession(sessionId)) === null || _a === void 0 ? void 0 : _a.model.changeSet) === null || _b === void 0 ? void 0 : _b.removeElements(index);
195
+ const elements = (_d = (_c = this.getSession(sessionId)) === null || _c === void 0 ? void 0 : _c.model.changeSet) === null || _d === void 0 ? void 0 : _d.getElements();
196
+ if ((elements === null || elements === void 0 ? void 0 : elements.length) === 0) {
197
+ this.deleteChangeSet(sessionId);
198
+ }
205
199
  }
206
200
  };
207
201
  exports.ChatServiceImpl = ChatServiceImpl;
@@ -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":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF;;;gGAGgG;AAChG,8JAA8J;;;;AAE9J,4CAA2G;AAC3G,sCAA6D;AAC7D,4DAA4E;AAE5E,6DAAwD;AACxD,+CAAiF;AACjF,6CAQsB;AACtB,+DAA0D;AAC1D,+DAAsF;AAkCtF;;GAEG;AACU,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAK/D;;GAEG;AACU,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAKpD,QAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAGtC,QAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AA0B1C,IAAM,eAAe,GAArB,MAAM,eAAe;IAArB;QACgB,kCAA6B,GAAG,IAAI,cAAO,EAA6B,CAAC;QAC5F,2BAAsB,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC;QAuBxD,cAAS,GAA0B,EAAE,CAAC;IA0KpD,CAAC;IAxKG,WAAW;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,EAAU;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa,CAAC,QAAQ,GAAG,+BAAiB,CAAC,KAAK,EAAE,OAAwB,EAAE,WAAuB;QAC/F,MAAM,KAAK,GAAG,IAAI,6BAAgB,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAwB;YACjC,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,KAAK;YACL,QAAQ,EAAE,IAAI;YACd,WAAW;SACd,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,SAAiB;;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACvF,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC7C,yEAAyE;QACzE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,CAAC,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,SAA6B,EAAE,OAAwB;QACpE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,CAAC,WAAW,CACb,SAAiB,EACjB,OAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;QAE7B,MAAM,iBAAiB,GAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACvE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC/G,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QACtH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,4CAA4C,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,iBAAiB,GAAG,IAAI,mCAAsB,CAAC,IAAA,mBAAY,GAAE,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACvF,OAAO;gBACH,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACvC,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACtC,iBAAiB,EAAE,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;aACxD,CAAC;QACN,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,EAAE,eAAe,CAAC,CAAC;QACzF,iBAAiB,CAAC,OAAO,GAAG,YAAY,CAAC;QAEzC,IAAI,sBAAkE,CAAC;QACvE,IAAI,wBAAoE,CAAC;QACzE,MAAM,UAAU,GAA0B;YACtC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;YAC/C,eAAe,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBACnC,sBAAsB,GAAG,OAAO,CAAC;YACrC,CAAC,CAAC;YACF,iBAAiB,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBACrC,wBAAwB,GAAG,OAAO,CAAC;YACvC,CAAC,CAAC;SACL,CAAC;QAEF,sBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC/C,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACnC,wBAAyB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAChC,wBAAyB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,YAAY,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAES,KAAK,CAAC,kBAAkB,CAC9B,kBAA0D,EAC1D,OAA2B;QAE3B,0FAA0F;QAC1F,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAC,eAAe,EAAC,EAAE;YAC3C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC9F,IAAI,mCAAyB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACjD,OAAO,gBAAgB,CAAC;YAC5B,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC,CACL,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAuC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC;QACzG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,SAAiB;;QACpD,OAAO,MAAA,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,0CAAE,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,0CAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACtF,CAAC;IAES,QAAQ,CAAC,aAAgC,EAAE,OAAoB;;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,MAAK,MAAA,IAAI,CAAC,kBAAkB,0CAAE,EAAE,CAAA,EAAE,CAAC;YAC5E,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE,CAAC;YACpF,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QAChC,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,qBAAqB,CAAC,aAAgC;;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,SAAS,GAAG,SAAS,CAAC;QAC1B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oIAAoI,CAAC,CAAC;QACvJ,OAAO,MAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,mCAAI,SAAS,CAAC;IAC7D,CAAC;IAES,iBAAiB,CAAC,aAAgC;QACxD,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,gDAA0B,CAA2C,CAAC;IAC5H,CAAC;IAED,eAAe,CAAC,SAAiB;;QAC7B,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,0CAAE,KAAK,CAAC,eAAe,EAAE,CAAC;IACxD,CAAC;IAED,sBAAsB,CAAC,SAAiB,EAAE,KAAa;;QACnD,MAAA,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,0CAAE,KAAK,CAAC,SAAS,0CAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,MAAA,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,0CAAE,KAAK,CAAC,SAAS,0CAAE,WAAW,EAAE,CAAC;QAC5E,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,MAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;CACJ,CAAA;AAnMY,0CAAe;AAKd;IADT,IAAA,kBAAM,EAAC,qCAAgB,CAAC;;yDACoB;AAGnC;IADT,IAAA,kBAAM,EAAC,0BAAkB,CAAC;IAAE,IAAA,oBAAQ,GAAE;;2DACsB;AAGnD;IADT,IAAA,kBAAM,EAAC,2BAAmB,CAAC;IAAE,IAAA,oBAAQ,GAAE;;4DACuB;AAGrD;IADT,IAAA,kBAAM,EAAC,oBAAY,CAAC;IAAE,IAAA,oBAAQ,GAAE;;qDACW;AAGlC;IADT,IAAA,kBAAM,EAAC,uCAAiB,CAAC;;0DACqB;AAGrC;IADT,IAAA,kBAAM,EAAC,2BAAiB,CAAC;;wDACmB;AAGnC;IADT,IAAA,kBAAM,EAAC,cAAO,CAAC;;+CACU;0BAvBjB,eAAe;IAD3B,IAAA,sBAAU,GAAE;GACA,eAAe,CAmM3B"}
@@ -1,4 +1,4 @@
1
- import { AIVariable, ResolvedAIVariable, ToolRequest } from '@theia/ai-core';
1
+ import { ResolvedAIVariable, ToolRequest } from '@theia/ai-core';
2
2
  import { ChatRequest } from './chat-model';
3
3
  export declare const chatVariableLeader = "#";
4
4
  export declare const chatAgentLeader = "@";
@@ -15,7 +15,7 @@ export interface ParsedChatRequest {
15
15
  readonly request: ChatRequest;
16
16
  readonly parts: ParsedChatRequestPart[];
17
17
  readonly toolRequests: Map<string, ToolRequest>;
18
- readonly variables: Map<string, AIVariable>;
18
+ readonly variables: ResolvedAIVariable[];
19
19
  }
20
20
  export interface ParsedChatRequestPart {
21
21
  readonly kind: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parsed-chat-request.d.ts","sourceRoot":"","sources":["../../src/common/parsed-chat-request.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAA2B,MAAM,gBAAgB,CAAC;AACtG,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;wBAEwB;AAExB,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC/B;AAED,qBAAa,yBAA0B,YAAW,qBAAqB;IAGvD,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;IAF9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAED,KAAK,EAAE,WAAW,EAAW,IAAI,EAAE,MAAM;IAE9D,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ;AAED,qBAAa,6BAA8B,YAAW,qBAAqB;IAK3D,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAE,QAAQ,CAAC,YAAY,EAAE,MAAM;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAJhH,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAEd,UAAU,EAAE,kBAAkB,CAAC;gBAEjB,KAAK,EAAE,WAAW,EAAW,YAAY,EAAE,MAAM,EAAW,WAAW,EAAE,MAAM,GAAG,SAAS;IAEhH,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ;AAED,qBAAa,6BAA8B,YAAW,qBAAqB;IAE3D,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW;IAD1E,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;gBACL,KAAK,EAAE,WAAW,EAAW,WAAW,EAAE,WAAW;IAE1E,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ;AAED,qBAAa,0BAA2B,YAAW,qBAAqB;IAExD,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM;IAD7F,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBACF,KAAK,EAAE,WAAW,EAAW,OAAO,EAAE,MAAM,EAAW,SAAS,EAAE,MAAM;IAE7F,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ"}
1
+ {"version":3,"file":"parsed-chat-request.d.ts","sourceRoot":"","sources":["../../src/common/parsed-chat-request.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAA2B,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;;wBAEwB;AAExB,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC/B;AAED,qBAAa,yBAA0B,YAAW,qBAAqB;IAGvD,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;IAF9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAED,KAAK,EAAE,WAAW,EAAW,IAAI,EAAE,MAAM;IAE9D,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ;AAED,qBAAa,6BAA8B,YAAW,qBAAqB;IAK3D,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAE,QAAQ,CAAC,YAAY,EAAE,MAAM;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAJhH,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAEd,UAAU,EAAE,kBAAkB,CAAC;gBAEjB,KAAK,EAAE,WAAW,EAAW,YAAY,EAAE,MAAM,EAAW,WAAW,EAAE,MAAM,GAAG,SAAS;IAEhH,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ;AAED,qBAAa,6BAA8B,YAAW,qBAAqB;IAE3D,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW;IAD1E,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;gBACL,KAAK,EAAE,WAAW,EAAW,WAAW,EAAE,WAAW;IAE1E,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ;AAED,qBAAa,0BAA2B,YAAW,qBAAqB;IAExD,QAAQ,CAAC,KAAK,EAAE,WAAW;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM;IAD7F,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBACF,KAAK,EAAE,WAAW,EAAW,OAAO,EAAE,MAAM,EAAW,SAAS,EAAE,MAAM;IAE7F,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"parsed-chat-request.js","sourceRoot":"","sources":["../../src/common/parsed-chat-request.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF;;;gGAGgG;AAChG,kKAAkK;AAClK,mJAAmJ;;;AAEnJ,4CAAsG;AAGzF,QAAA,kBAAkB,GAAG,GAAG,CAAC;AACzB,QAAA,eAAe,GAAG,GAAG,CAAC;AACtB,QAAA,kBAAkB,GAAG,GAAG,CAAC;AACzB,QAAA,oBAAoB,GAAG,GAAG,CAAC;AAgCxC,MAAa,yBAAyB;IAGlC,YAAqB,KAAkB,EAAW,IAAY;QAAzC,UAAK,GAAL,KAAK,CAAa;QAAW,SAAI,GAAJ,IAAI,CAAQ;IAAI,CAAC;IAEnE,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AARD,8DAQC;AAED,MAAa,6BAA6B;IAKtC,YAAqB,KAAkB,EAAW,YAAoB,EAAW,WAA+B;QAA3F,UAAK,GAAL,KAAK,CAAa;QAAW,iBAAY,GAAZ,YAAY,CAAQ;QAAW,gBAAW,GAAX,WAAW,CAAoB;IAAI,CAAC;IAErH,IAAI,IAAI;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,0BAAkB,GAAG,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,UAAU;;QACV,OAAO,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,mCAAI,IAAI,CAAC,IAAI,CAAC;IAC/C,CAAC;CACJ;AAfD,sEAeC;AAED,MAAa,6BAA6B;IAEtC,YAAqB,KAAkB,EAAW,WAAwB;QAArD,UAAK,GAAL,KAAK,CAAa;QAAW,gBAAW,GAAX,WAAW,CAAa;IAAI,CAAC;IAE/E,IAAI,IAAI;QACJ,OAAO,GAAG,0BAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAA,iCAAuB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;CACJ;AAXD,sEAWC;AAED,MAAa,0BAA0B;IAEnC,YAAqB,KAAkB,EAAW,OAAe,EAAW,SAAiB;QAAxE,UAAK,GAAL,KAAK,CAAa;QAAW,YAAO,GAAP,OAAO,CAAQ;QAAW,cAAS,GAAT,SAAS,CAAQ;IAAI,CAAC;IAElG,IAAI,IAAI;QACJ,OAAO,GAAG,uBAAe,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,UAAU;QACV,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAXD,gEAWC"}
1
+ {"version":3,"file":"parsed-chat-request.js","sourceRoot":"","sources":["../../src/common/parsed-chat-request.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF;;;gGAGgG;AAChG,kKAAkK;AAClK,mJAAmJ;;;AAEnJ,4CAA0F;AAG7E,QAAA,kBAAkB,GAAG,GAAG,CAAC;AACzB,QAAA,eAAe,GAAG,GAAG,CAAC;AACtB,QAAA,kBAAkB,GAAG,GAAG,CAAC;AACzB,QAAA,oBAAoB,GAAG,GAAG,CAAC;AAgCxC,MAAa,yBAAyB;IAGlC,YAAqB,KAAkB,EAAW,IAAY;QAAzC,UAAK,GAAL,KAAK,CAAa;QAAW,SAAI,GAAJ,IAAI,CAAQ;IAAI,CAAC;IAEnE,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AARD,8DAQC;AAED,MAAa,6BAA6B;IAKtC,YAAqB,KAAkB,EAAW,YAAoB,EAAW,WAA+B;QAA3F,UAAK,GAAL,KAAK,CAAa;QAAW,iBAAY,GAAZ,YAAY,CAAQ;QAAW,gBAAW,GAAX,WAAW,CAAoB;IAAI,CAAC;IAErH,IAAI,IAAI;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,0BAAkB,GAAG,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,UAAU;;QACV,OAAO,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,mCAAI,IAAI,CAAC,IAAI,CAAC;IAC/C,CAAC;CACJ;AAfD,sEAeC;AAED,MAAa,6BAA6B;IAEtC,YAAqB,KAAkB,EAAW,WAAwB;QAArD,UAAK,GAAL,KAAK,CAAa;QAAW,gBAAW,GAAX,WAAW,CAAa;IAAI,CAAC;IAE/E,IAAI,IAAI;QACJ,OAAO,GAAG,0BAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAA,iCAAuB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;CACJ;AAXD,sEAWC;AAED,MAAa,0BAA0B;IAEnC,YAAqB,KAAkB,EAAW,OAAe,EAAW,SAAiB;QAAxE,UAAK,GAAL,KAAK,CAAa;QAAW,YAAO,GAAP,OAAO,CAAQ;QAAW,cAAS,GAAT,SAAS,CAAQ;IAAI,CAAC;IAElG,IAAI,IAAI;QACJ,OAAO,GAAG,uBAAe,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,UAAU;QACV,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAXD,gEAWC"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@theia/ai-chat",
3
- "version": "1.59.0",
3
+ "version": "1.60.0-next.47+9332521b9",
4
4
  "description": "Theia - AI Chat Extension",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.59.0",
7
- "@theia/ai-history": "1.59.0",
8
- "@theia/core": "1.59.0",
9
- "@theia/editor": "1.59.0",
10
- "@theia/file-search": "1.59.0",
11
- "@theia/filesystem": "1.59.0",
12
- "@theia/monaco": "1.59.0",
6
+ "@theia/ai-core": "1.60.0-next.47+9332521b9",
7
+ "@theia/ai-history": "1.60.0-next.47+9332521b9",
8
+ "@theia/core": "1.60.0-next.47+9332521b9",
9
+ "@theia/editor": "1.60.0-next.47+9332521b9",
10
+ "@theia/file-search": "1.60.0-next.47+9332521b9",
11
+ "@theia/filesystem": "1.60.0-next.47+9332521b9",
12
+ "@theia/monaco": "1.60.0-next.47+9332521b9",
13
13
  "@theia/monaco-editor-core": "1.96.302",
14
- "@theia/workspace": "1.59.0",
14
+ "@theia/workspace": "1.60.0-next.47+9332521b9",
15
15
  "minimatch": "^5.1.0",
16
16
  "tslib": "^2.6.2"
17
17
  },
@@ -54,5 +54,5 @@
54
54
  "nyc": {
55
55
  "extends": "../../configs/nyc.json"
56
56
  },
57
- "gitHead": "ce21dd18b5aceee41d5265066f8bb1a69b3710e6"
57
+ "gitHead": "9332521b9aa74bf534d45968905d37e30a13c3b5"
58
58
  }
@@ -65,8 +65,8 @@ export class FrontendChatServiceImpl extends ChatServiceImpl {
65
65
  return configuredDefaultChatAgent;
66
66
  }
67
67
 
68
- override createSession(location?: ChatAgentLocation, options?: SessionOptions): ChatSession {
69
- const session = super.createSession(location, options);
68
+ override createSession(location?: ChatAgentLocation, options?: SessionOptions, pinnedAgent?: ChatAgent): ChatSession {
69
+ const session = super.createSession(location, options, pinnedAgent);
70
70
  session.model.onDidChange(event => {
71
71
  const changeSet = (event as { changeSet?: ChangeSet }).changeSet;
72
72
  if (event.kind === 'removeChangeSet') {
@@ -18,32 +18,42 @@ import * as sinon from 'sinon';
18
18
  import { ChatAgentServiceImpl } from './chat-agent-service';
19
19
  import { ChatRequestParserImpl } from './chat-request-parser';
20
20
  import { ChatAgentLocation } from './chat-agents';
21
- import { ChatRequest } from './chat-model';
21
+ import { ChatContext, ChatRequest } from './chat-model';
22
22
  import { expect } from 'chai';
23
- import { DefaultAIVariableService, ToolInvocationRegistry, ToolInvocationRegistryImpl } from '@theia/ai-core';
23
+ import { AIVariable, DefaultAIVariableService, ResolvedAIVariable, ToolInvocationRegistryImpl, ToolRequest } from '@theia/ai-core';
24
+ import { ILogger, Logger } from '@theia/core';
25
+ import { ParsedChatRequestTextPart, ParsedChatRequestVariablePart } from './parsed-chat-request';
24
26
 
25
27
  describe('ChatRequestParserImpl', () => {
26
28
  const chatAgentService = sinon.createStubInstance(ChatAgentServiceImpl);
27
29
  const variableService = sinon.createStubInstance(DefaultAIVariableService);
28
- const toolInvocationRegistry: ToolInvocationRegistry = sinon.createStubInstance(ToolInvocationRegistryImpl);
29
- const parser = new ChatRequestParserImpl(chatAgentService, variableService, toolInvocationRegistry);
30
+ const toolInvocationRegistry = sinon.createStubInstance(ToolInvocationRegistryImpl);
31
+ const logger: ILogger = sinon.createStubInstance(Logger);
32
+ const parser = new ChatRequestParserImpl(chatAgentService, variableService, toolInvocationRegistry, logger);
30
33
 
31
- it('parses simple text', () => {
34
+ beforeEach(() => {
35
+ // Reset our stubs before each test
36
+ sinon.reset();
37
+ });
38
+
39
+ it('parses simple text', async () => {
32
40
  const req: ChatRequest = {
33
41
  text: 'What is the best pizza topping?'
34
42
  };
35
- const result = parser.parseChatRequest(req, ChatAgentLocation.Panel);
43
+ const context: ChatContext = { variables: [] };
44
+ const result = await parser.parseChatRequest(req, ChatAgentLocation.Panel, context);
36
45
  expect(result.parts).to.deep.contain({
37
46
  text: 'What is the best pizza topping?',
38
47
  range: { start: 0, endExclusive: 31 }
39
48
  });
40
49
  });
41
50
 
42
- it('parses text with variable name', () => {
51
+ it('parses text with variable name', async () => {
43
52
  const req: ChatRequest = {
44
53
  text: 'What is the #best pizza topping?'
45
54
  };
46
- const result = parser.parseChatRequest(req, ChatAgentLocation.Panel);
55
+ const context: ChatContext = { variables: [] };
56
+ const result = await parser.parseChatRequest(req, ChatAgentLocation.Panel, context);
47
57
  expect(result).to.deep.contain({
48
58
  parts: [{
49
59
  text: 'What is the ',
@@ -59,11 +69,12 @@ describe('ChatRequestParserImpl', () => {
59
69
  });
60
70
  });
61
71
 
62
- it('parses text with variable name with argument', () => {
72
+ it('parses text with variable name with argument', async () => {
63
73
  const req: ChatRequest = {
64
74
  text: 'What is the #best:by-poll pizza topping?'
65
75
  };
66
- const result = parser.parseChatRequest(req, ChatAgentLocation.Panel);
76
+ const context: ChatContext = { variables: [] };
77
+ const result = await parser.parseChatRequest(req, ChatAgentLocation.Panel, context);
67
78
  expect(result).to.deep.contain({
68
79
  parts: [{
69
80
  text: 'What is the ',
@@ -79,11 +90,12 @@ describe('ChatRequestParserImpl', () => {
79
90
  });
80
91
  });
81
92
 
82
- it('parses text with variable name with numeric argument', () => {
93
+ it('parses text with variable name with numeric argument', async () => {
83
94
  const req: ChatRequest = {
84
95
  text: '#size-class:2'
85
96
  };
86
- const result = parser.parseChatRequest(req, ChatAgentLocation.Panel);
97
+ const context: ChatContext = { variables: [] };
98
+ const result = await parser.parseChatRequest(req, ChatAgentLocation.Panel, context);
87
99
  expect(result.parts[0]).to.contain(
88
100
  {
89
101
  variableName: 'size-class',
@@ -92,11 +104,12 @@ describe('ChatRequestParserImpl', () => {
92
104
  );
93
105
  });
94
106
 
95
- it('parses text with variable name with POSIX path argument', () => {
107
+ it('parses text with variable name with POSIX path argument', async () => {
96
108
  const req: ChatRequest = {
97
109
  text: '#file:/path/to/file.ext'
98
110
  };
99
- const result = parser.parseChatRequest(req, ChatAgentLocation.Panel);
111
+ const context: ChatContext = { variables: [] };
112
+ const result = await parser.parseChatRequest(req, ChatAgentLocation.Panel, context);
100
113
  expect(result.parts[0]).to.contain(
101
114
  {
102
115
  variableName: 'file',
@@ -105,11 +118,12 @@ describe('ChatRequestParserImpl', () => {
105
118
  );
106
119
  });
107
120
 
108
- it('parses text with variable name with Win32 path argument', () => {
121
+ it('parses text with variable name with Win32 path argument', async () => {
109
122
  const req: ChatRequest = {
110
123
  text: '#file:c:\\path\\to\\file.ext'
111
124
  };
112
- const result = parser.parseChatRequest(req, ChatAgentLocation.Panel);
125
+ const context: ChatContext = { variables: [] };
126
+ const result = await parser.parseChatRequest(req, ChatAgentLocation.Panel, context);
113
127
  expect(result.parts[0]).to.contain(
114
128
  {
115
129
  variableName: 'file',
@@ -117,4 +131,69 @@ describe('ChatRequestParserImpl', () => {
117
131
  }
118
132
  );
119
133
  });
134
+
135
+ it('resolves variable and extracts tool functions from resolved variable', async () => {
136
+ // Set up two test tool requests that will be referenced in the variable content
137
+ const testTool1: ToolRequest = {
138
+ id: 'testTool1',
139
+ name: 'Test Tool 1',
140
+ handler: async () => undefined
141
+ };
142
+ const testTool2: ToolRequest = {
143
+ id: 'testTool2',
144
+ name: 'Test Tool 2',
145
+ handler: async () => undefined
146
+ };
147
+ // Configure the tool registry to return our test tools
148
+ toolInvocationRegistry.getFunction.withArgs(testTool1.id).returns(testTool1);
149
+ toolInvocationRegistry.getFunction.withArgs(testTool2.id).returns(testTool2);
150
+
151
+ // Set up the test variable to include in the request
152
+ const testVariable: AIVariable = {
153
+ id: 'testVariable',
154
+ name: 'testVariable',
155
+ description: 'A test variable',
156
+ };
157
+ // Configure the variable service to return our test variable
158
+ // One tool reference uses chat format and one uses prompt format because the parser needs to handle both.
159
+ variableService.getVariable.withArgs(testVariable.name).returns(testVariable);
160
+ variableService.resolveVariable.withArgs(
161
+ { variable: testVariable.name, arg: 'myarg' },
162
+ sinon.match.any
163
+ ).resolves({
164
+ variable: testVariable,
165
+ arg: 'myarg',
166
+ value: 'This is a test with ~testTool1 and **~{testTool2}** and more text.',
167
+ });
168
+
169
+ // Create a request with the test variable
170
+ const req: ChatRequest = {
171
+ text: 'Test with #testVariable:myarg'
172
+ };
173
+ const context: ChatContext = { variables: [] };
174
+
175
+ // Parse the request
176
+ const result = await parser.parseChatRequest(req, ChatAgentLocation.Panel, context);
177
+
178
+ // Verify the variable part contains the correct properties
179
+ expect(result.parts.length).to.equal(2);
180
+ expect(result.parts[0] instanceof ParsedChatRequestTextPart).to.be.true;
181
+ expect(result.parts[1] instanceof ParsedChatRequestVariablePart).to.be.true;
182
+ const variablePart = result.parts[1] as ParsedChatRequestVariablePart;
183
+ expect(variablePart).to.have.property('resolution');
184
+ expect(variablePart.resolution).to.deep.equal({
185
+ variable: testVariable,
186
+ arg: 'myarg',
187
+ value: 'This is a test with ~testTool1 and **~{testTool2}** and more text.',
188
+ } satisfies ResolvedAIVariable);
189
+
190
+ // Verify both tool functions were extracted from the variable content
191
+ expect(result.toolRequests.size).to.equal(2);
192
+ expect(result.toolRequests.has(testTool1.id)).to.be.true;
193
+ expect(result.toolRequests.has(testTool2.id)).to.be.true;
194
+
195
+ // Verify the result contains the tool requests returned by the registry
196
+ expect(result.toolRequests.get(testTool1.id)).to.deep.equal(testTool1);
197
+ expect(result.toolRequests.get(testTool2.id)).to.deep.equal(testTool2);
198
+ });
120
199
  });
@@ -22,7 +22,7 @@
22
22
  import { inject, injectable } from '@theia/core/shared/inversify';
23
23
  import { ChatAgentService } from './chat-agent-service';
24
24
  import { ChatAgentLocation } from './chat-agents';
25
- import { ChatRequest } from './chat-model';
25
+ import { ChatContext, ChatRequest } from './chat-model';
26
26
  import {
27
27
  chatAgentLeader,
28
28
  chatFunctionLeader,
@@ -35,15 +35,17 @@ import {
35
35
  ParsedChatRequest,
36
36
  ParsedChatRequestPart,
37
37
  } from './parsed-chat-request';
38
- import { AIVariable, AIVariableService, ToolInvocationRegistry, ToolRequest } from '@theia/ai-core';
38
+ import { AIVariable, AIVariableService, createAIResolveVariableCache, getAllResolvedAIVariables, ToolInvocationRegistry, ToolRequest } from '@theia/ai-core';
39
+ import { ILogger } from '@theia/core';
39
40
 
40
41
  const agentReg = /^@([\w_\-\.]+)(?=(\s|$|\b))/i; // An @-agent
41
42
  const functionReg = /^~([\w_\-\.]+)(?=(\s|$|\b))/i; // A ~ tool function
43
+ const functionPromptFormatReg = /^\~\{\s*(.*?)\s*\}/i; // A ~{} prompt-format tool function
42
44
  const variableReg = /^#([\w_\-]+)(?::([\w_\-_\/\\.:]+))?(?=(\s|$|\b))/i; // A #-variable with an optional : arg (#file:workspace/path/name.ext)
43
45
 
44
46
  export const ChatRequestParser = Symbol('ChatRequestParser');
45
47
  export interface ChatRequestParser {
46
- parseChatRequest(request: ChatRequest, location: ChatAgentLocation): ParsedChatRequest;
48
+ parseChatRequest(request: ChatRequest, location: ChatAgentLocation, context: ChatContext): Promise<ParsedChatRequest>;
47
49
  }
48
50
 
49
51
  function offsetRange(start: number, endExclusive: number): OffsetRange {
@@ -57,10 +59,48 @@ export class ChatRequestParserImpl {
57
59
  constructor(
58
60
  @inject(ChatAgentService) private readonly agentService: ChatAgentService,
59
61
  @inject(AIVariableService) private readonly variableService: AIVariableService,
60
- @inject(ToolInvocationRegistry) private readonly toolInvocationRegistry: ToolInvocationRegistry
62
+ @inject(ToolInvocationRegistry) private readonly toolInvocationRegistry: ToolInvocationRegistry,
63
+ @inject(ILogger) private readonly logger: ILogger
61
64
  ) { }
62
65
 
63
- parseChatRequest(request: ChatRequest, location: ChatAgentLocation): ParsedChatRequest {
66
+ async parseChatRequest(request: ChatRequest, location: ChatAgentLocation, context: ChatContext): Promise<ParsedChatRequest> {
67
+ // Parse the request into parts
68
+ const { parts, toolRequests } = this.parseParts(request, location);
69
+
70
+ // Resolve all variables and add them to the variable parts.
71
+ // Parse resolved variable texts again for tool requests.
72
+ // These are not added to parts as they are not visible in the initial chat message.
73
+ // However, they need to be added to the result to be considered by the executing agent.
74
+ const variableCache = createAIResolveVariableCache();
75
+ for (const part of parts) {
76
+ if (part instanceof ParsedChatRequestVariablePart) {
77
+ const resolvedVariable = await this.variableService.resolveVariable(
78
+ { variable: part.variableName, arg: part.variableArg },
79
+ context,
80
+ variableCache
81
+ );
82
+ if (resolvedVariable) {
83
+ part.resolution = resolvedVariable;
84
+ // Resolve tool requests in resolved variables
85
+ this.parseFunctionsFromVariableText(resolvedVariable.value, toolRequests);
86
+ } else {
87
+ this.logger.warn(`Failed to resolve variable ${part.variableName} for ${location}`);
88
+ }
89
+ }
90
+ }
91
+
92
+ // Get resolved variables from variable cache after all variables have been resolved.
93
+ // We want to return all recursilvely resolved variables, thus use the whole cache.
94
+ const resolvedVariables = await getAllResolvedAIVariables(variableCache);
95
+
96
+ return { request, parts, toolRequests, variables: resolvedVariables };
97
+ }
98
+
99
+ protected parseParts(request: ChatRequest, location: ChatAgentLocation): {
100
+ parts: ParsedChatRequestPart[];
101
+ toolRequests: Map<string, ToolRequest>;
102
+ variables: Map<string, AIVariable>;
103
+ } {
64
104
  const parts: ParsedChatRequestPart[] = [];
65
105
  const variables = new Map<string, AIVariable>();
66
106
  const toolRequests = new Map<string, ToolRequest>();
@@ -72,7 +112,7 @@ export class ChatRequestParserImpl {
72
112
 
73
113
  if (previousChar.match(/\s/) || i === 0) {
74
114
  if (char === chatFunctionLeader) {
75
- const functionPart = this.tryParseFunction(
115
+ const functionPart = this.tryToParseFunction(
76
116
  message.slice(i),
77
117
  i
78
118
  );
@@ -107,8 +147,7 @@ export class ChatRequestParserImpl {
107
147
  if (i !== 0) {
108
148
  // Insert a part for all the text we passed over, then insert the new parsed part
109
149
  const previousPart = parts.at(-1);
110
- const previousPartEnd =
111
- previousPart?.range.endExclusive ?? 0;
150
+ const previousPartEnd = previousPart?.range.endExclusive ?? 0;
112
151
  parts.push(
113
152
  new ParsedChatRequestTextPart(
114
153
  offsetRange(previousPartEnd, i),
@@ -131,8 +170,25 @@ export class ChatRequestParserImpl {
131
170
  )
132
171
  );
133
172
  }
173
+ return { parts, toolRequests, variables };
174
+ }
175
+
176
+ /**
177
+ * Parse text for tool requests and add them to the given map
178
+ */
179
+ private parseFunctionsFromVariableText(text: string, toolRequests: Map<string, ToolRequest>): void {
180
+ for (let i = 0; i < text.length; i++) {
181
+ const char = text.charAt(i);
134
182
 
135
- return { request, parts, toolRequests, variables };
183
+ // Check for function markers at start of words
184
+ if (char === chatFunctionLeader) {
185
+ const functionPart = this.tryToParseFunction(text.slice(i), i);
186
+ if (functionPart) {
187
+ // Add the found tool request to the given map
188
+ toolRequests.set(functionPart.toolRequest.id, functionPart.toolRequest);
189
+ }
190
+ }
191
+ }
136
192
  }
137
193
 
138
194
  private tryToParseAgent(
@@ -201,8 +257,9 @@ export class ChatRequestParserImpl {
201
257
  return new ParsedChatRequestVariablePart(varRange, name, variableArg);
202
258
  }
203
259
 
204
- private tryParseFunction(message: string, offset: number): ParsedChatRequestFunctionPart | undefined {
205
- const nextFunctionMatch = message.match(functionReg);
260
+ private tryToParseFunction(message: string, offset: number): ParsedChatRequestFunctionPart | undefined {
261
+ // Support both the and chat and prompt formats for functions
262
+ const nextFunctionMatch = message.match(functionPromptFormatReg) || message.match(functionReg);
206
263
  if (!nextFunctionMatch) {
207
264
  return;
208
265
  }
@@ -35,7 +35,7 @@ import {
35
35
  ChatContext,
36
36
  } from './chat-model';
37
37
  import { ChatRequestParser } from './chat-request-parser';
38
- import { ParsedChatRequest, ParsedChatRequestAgentPart, ParsedChatRequestVariablePart } from './parsed-chat-request';
38
+ import { ParsedChatRequest, ParsedChatRequestAgentPart } from './parsed-chat-request';
39
39
 
40
40
  export interface ChatRequestInvocation {
41
41
  /**
@@ -191,7 +191,9 @@ export class ChatServiceImpl implements ChatService {
191
191
  }
192
192
  session.title = request.text;
193
193
 
194
- const parsedRequest = this.chatRequestParser.parseChatRequest(request, session.model.location);
194
+ const resolutionContext: ChatSessionContext = { model: session.model };
195
+ const resolvedContext = await this.resolveChatContext(session.model.context.getVariables(), resolutionContext);
196
+ const parsedRequest = await this.chatRequestParser.parseChatRequest(request, session.model.location, resolvedContext);
195
197
  const agent = this.getAgent(parsedRequest, session);
196
198
 
197
199
  if (agent === undefined) {
@@ -205,25 +207,9 @@ export class ChatServiceImpl implements ChatService {
205
207
  };
206
208
  }
207
209
 
208
- const resolutionContext: ChatSessionContext = { model: session.model };
209
- const resolvedContext = await this.resolveChatContext(session.model.context.getVariables(), resolutionContext);
210
210
  const requestModel = session.model.addRequest(parsedRequest, agent?.id, resolvedContext);
211
211
  resolutionContext.request = requestModel;
212
212
 
213
- for (const part of parsedRequest.parts) {
214
- if (part instanceof ParsedChatRequestVariablePart) {
215
- const resolvedVariable = await this.variableService.resolveVariable(
216
- { variable: part.variableName, arg: part.variableArg },
217
- resolutionContext
218
- );
219
- if (resolvedVariable) {
220
- part.resolution = resolvedVariable;
221
- } else {
222
- this.logger.warn(`Failed to resolve variable ${part.variableName} for ${session.model.location}`);
223
- }
224
- }
225
- }
226
-
227
213
  let resolveResponseCreated: (responseModel: ChatResponseModel) => void;
228
214
  let resolveResponseCompleted: (responseModel: ChatResponseModel) => void;
229
215
  const invocation: ChatRequestInvocation = {
@@ -259,6 +245,7 @@ export class ChatServiceImpl implements ChatService {
259
245
  resolutionRequests: readonly AIVariableResolutionRequest[],
260
246
  context: ChatSessionContext,
261
247
  ): Promise<ChatContext> {
248
+ // TODO use a common cache to resolve variables and return recursively resolved variables?
262
249
  const resolvedVariables = await Promise.all(
263
250
  resolutionRequests.map(async contextVariable => {
264
251
  const resolvedVariable = await this.variableService.resolveVariable(contextVariable, context);
@@ -317,5 +304,9 @@ export class ChatServiceImpl implements ChatService {
317
304
 
318
305
  deleteChangeSetElement(sessionId: string, index: number): void {
319
306
  this.getSession(sessionId)?.model.changeSet?.removeElements(index);
307
+ const elements = this.getSession(sessionId)?.model.changeSet?.getElements();
308
+ if (elements?.length === 0) {
309
+ this.deleteChangeSet(sessionId);
310
+ }
320
311
  }
321
312
  }
@@ -20,7 +20,7 @@
20
20
  // Partially copied from https://github.com/microsoft/vscode/blob/a2cab7255c0df424027be05d58e1b7b941f4ea60/src/vs/workbench/contrib/chat/common/chatParserTypes.ts
21
21
  // Partially copied from https://github.com/microsoft/vscode/blob/a2cab7255c0df424027be05d58e1b7b941f4ea60/src/vs/editor/common/core/offsetRange.ts
22
22
 
23
- import { AIVariable, ResolvedAIVariable, ToolRequest, toolRequestToPromptText } from '@theia/ai-core';
23
+ import { ResolvedAIVariable, ToolRequest, toolRequestToPromptText } from '@theia/ai-core';
24
24
  import { ChatRequest } from './chat-model';
25
25
 
26
26
  export const chatVariableLeader = '#';
@@ -41,7 +41,7 @@ export interface ParsedChatRequest {
41
41
  readonly request: ChatRequest;
42
42
  readonly parts: ParsedChatRequestPart[];
43
43
  readonly toolRequests: Map<string, ToolRequest>;
44
- readonly variables: Map<string, AIVariable>;
44
+ readonly variables: ResolvedAIVariable[];
45
45
  }
46
46
 
47
47
  export interface ParsedChatRequestPart {