@theia/ai-chat 1.67.0-next.56 → 1.67.0-next.86

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 (253) hide show
  1. package/lib/browser/agent-delegation-tool.d.ts +25 -0
  2. package/lib/browser/agent-delegation-tool.d.ts.map +1 -0
  3. package/lib/browser/agent-delegation-tool.js +196 -0
  4. package/lib/browser/agent-delegation-tool.js.map +1 -0
  5. package/lib/browser/ai-chat-frontend-contribution.d.ts +11 -0
  6. package/lib/browser/ai-chat-frontend-contribution.d.ts.map +1 -0
  7. package/lib/browser/ai-chat-frontend-contribution.js +56 -0
  8. package/lib/browser/ai-chat-frontend-contribution.js.map +1 -0
  9. package/lib/browser/ai-chat-frontend-module.d.ts +4 -0
  10. package/lib/browser/ai-chat-frontend-module.d.ts.map +1 -0
  11. package/lib/browser/ai-chat-frontend-module.js +143 -0
  12. package/lib/browser/ai-chat-frontend-module.js.map +1 -0
  13. package/lib/browser/change-set-decorator-service.d.ts +24 -0
  14. package/lib/browser/change-set-decorator-service.d.ts.map +1 -0
  15. package/lib/browser/change-set-decorator-service.js +66 -0
  16. package/lib/browser/change-set-decorator-service.js.map +1 -0
  17. package/lib/browser/change-set-file-element-deserializer.d.ts +7 -0
  18. package/lib/browser/change-set-file-element-deserializer.d.ts.map +1 -0
  19. package/lib/browser/change-set-file-element-deserializer.js +61 -0
  20. package/lib/browser/change-set-file-element-deserializer.js.map +1 -0
  21. package/lib/browser/change-set-file-element.d.ts +122 -0
  22. package/lib/browser/change-set-file-element.d.ts.map +1 -0
  23. package/lib/browser/change-set-file-element.js +435 -0
  24. package/lib/browser/change-set-file-element.js.map +1 -0
  25. package/lib/browser/change-set-file-resource.d.ts +4 -0
  26. package/lib/browser/change-set-file-resource.d.ts.map +1 -0
  27. package/lib/browser/change-set-file-resource.js +24 -0
  28. package/lib/browser/change-set-file-resource.js.map +1 -0
  29. package/lib/browser/change-set-file-service.d.ts +32 -0
  30. package/lib/browser/change-set-file-service.d.ts.map +1 -0
  31. package/lib/browser/change-set-file-service.js +161 -0
  32. package/lib/browser/change-set-file-service.js.map +1 -0
  33. package/lib/browser/change-set-variable.d.ts +11 -0
  34. package/lib/browser/change-set-variable.d.ts.map +1 -0
  35. package/lib/browser/change-set-variable.js +64 -0
  36. package/lib/browser/change-set-variable.js.map +1 -0
  37. package/lib/browser/chat-session-store-impl.d.ts +36 -0
  38. package/lib/browser/chat-session-store-impl.d.ts.map +1 -0
  39. package/lib/browser/chat-session-store-impl.js +287 -0
  40. package/lib/browser/chat-session-store-impl.js.map +1 -0
  41. package/lib/browser/chat-tool-preference-bindings.d.ts +34 -0
  42. package/lib/browser/chat-tool-preference-bindings.d.ts.map +1 -0
  43. package/lib/browser/chat-tool-preference-bindings.js +122 -0
  44. package/lib/browser/chat-tool-preference-bindings.js.map +1 -0
  45. package/lib/browser/chat-tool-request-service.d.ts +21 -0
  46. package/lib/browser/chat-tool-request-service.d.ts.map +1 -0
  47. package/lib/browser/chat-tool-request-service.js +90 -0
  48. package/lib/browser/chat-tool-request-service.js.map +1 -0
  49. package/lib/browser/context-file-validation-service.d.ts +15 -0
  50. package/lib/browser/context-file-validation-service.d.ts.map +1 -0
  51. package/lib/browser/context-file-validation-service.js +26 -0
  52. package/lib/browser/context-file-validation-service.js.map +1 -0
  53. package/lib/browser/context-file-variable-label-provider.d.ts +14 -0
  54. package/lib/browser/context-file-variable-label-provider.d.ts.map +1 -0
  55. package/lib/browser/context-file-variable-label-provider.js +63 -0
  56. package/lib/browser/context-file-variable-label-provider.js.map +1 -0
  57. package/lib/browser/context-variable-label-provider.d.ts +9 -0
  58. package/lib/browser/context-variable-label-provider.d.ts.map +1 -0
  59. package/lib/browser/context-variable-label-provider.js +55 -0
  60. package/lib/browser/context-variable-label-provider.js.map +1 -0
  61. package/lib/browser/custom-agent-factory.d.ts +4 -0
  62. package/lib/browser/custom-agent-factory.d.ts.map +1 -0
  63. package/lib/browser/custom-agent-factory.js +20 -0
  64. package/lib/browser/custom-agent-factory.js.map +1 -0
  65. package/lib/browser/custom-agent-frontend-application-contribution.d.ts +13 -0
  66. package/lib/browser/custom-agent-frontend-application-contribution.d.ts.map +1 -0
  67. package/lib/browser/custom-agent-frontend-application-contribution.js +83 -0
  68. package/lib/browser/custom-agent-frontend-application-contribution.js.map +1 -0
  69. package/lib/browser/delegation-response-content.d.ts +20 -0
  70. package/lib/browser/delegation-response-content.d.ts.map +1 -0
  71. package/lib/browser/delegation-response-content.js +47 -0
  72. package/lib/browser/delegation-response-content.js.map +1 -0
  73. package/lib/browser/file-chat-variable-contribution.d.ts +32 -0
  74. package/lib/browser/file-chat-variable-contribution.d.ts.map +1 -0
  75. package/lib/browser/file-chat-variable-contribution.js +241 -0
  76. package/lib/browser/file-chat-variable-contribution.js.map +1 -0
  77. package/lib/browser/frontend-chat-service.d.ts +15 -0
  78. package/lib/browser/frontend-chat-service.d.ts.map +1 -0
  79. package/lib/browser/frontend-chat-service.js +72 -0
  80. package/lib/browser/frontend-chat-service.js.map +1 -0
  81. package/lib/browser/image-context-variable-contribution.d.ts +27 -0
  82. package/lib/browser/image-context-variable-contribution.d.ts.map +1 -0
  83. package/lib/browser/image-context-variable-contribution.js +149 -0
  84. package/lib/browser/image-context-variable-contribution.js.map +1 -0
  85. package/lib/browser/task-context-service.d.ts +46 -0
  86. package/lib/browser/task-context-service.d.ts.map +1 -0
  87. package/lib/browser/task-context-service.js +256 -0
  88. package/lib/browser/task-context-service.js.map +1 -0
  89. package/lib/browser/task-context-storage-service.d.ts +19 -0
  90. package/lib/browser/task-context-storage-service.d.ts.map +1 -0
  91. package/lib/browser/task-context-storage-service.js +80 -0
  92. package/lib/browser/task-context-storage-service.js.map +1 -0
  93. package/lib/browser/task-context-variable-contribution.d.ts +20 -0
  94. package/lib/browser/task-context-variable-contribution.d.ts.map +1 -0
  95. package/lib/browser/task-context-variable-contribution.js +101 -0
  96. package/lib/browser/task-context-variable-contribution.js.map +1 -0
  97. package/lib/browser/task-context-variable-label-provider.d.ts +21 -0
  98. package/lib/browser/task-context-variable-label-provider.d.ts.map +1 -0
  99. package/lib/browser/task-context-variable-label-provider.js +83 -0
  100. package/lib/browser/task-context-variable-label-provider.js.map +1 -0
  101. package/lib/browser/task-context-variable.d.ts +3 -0
  102. package/lib/browser/task-context-variable.d.ts.map +1 -0
  103. package/lib/browser/task-context-variable.js +33 -0
  104. package/lib/browser/task-context-variable.js.map +1 -0
  105. package/lib/common/ai-chat-preferences.d.ts +5 -0
  106. package/lib/common/ai-chat-preferences.d.ts.map +1 -0
  107. package/lib/common/ai-chat-preferences.js +40 -0
  108. package/lib/common/ai-chat-preferences.js.map +1 -0
  109. package/lib/common/change-set-element-deserializer.d.ts +30 -0
  110. package/lib/common/change-set-element-deserializer.d.ts.map +1 -0
  111. package/lib/common/change-set-element-deserializer.js +81 -0
  112. package/lib/common/change-set-element-deserializer.js.map +1 -0
  113. package/lib/common/change-set.d.ts +85 -0
  114. package/lib/common/change-set.d.ts.map +1 -0
  115. package/lib/common/change-set.js +133 -0
  116. package/lib/common/change-set.js.map +1 -0
  117. package/lib/common/chat-agent-service.d.ts +46 -0
  118. package/lib/common/chat-agent-service.d.ts.map +1 -0
  119. package/lib/common/chat-agent-service.js +79 -0
  120. package/lib/common/chat-agent-service.js.map +1 -0
  121. package/lib/common/chat-agents-variable-contribution.d.ts +17 -0
  122. package/lib/common/chat-agents-variable-contribution.d.ts.map +1 -0
  123. package/lib/common/chat-agents-variable-contribution.js +67 -0
  124. package/lib/common/chat-agents-variable-contribution.js.map +1 -0
  125. package/lib/common/chat-agents.d.ts +138 -0
  126. package/lib/common/chat-agents.d.ts.map +1 -0
  127. package/lib/common/chat-agents.js +428 -0
  128. package/lib/common/chat-agents.js.map +1 -0
  129. package/lib/common/chat-auto-save.spec.d.ts +2 -0
  130. package/lib/common/chat-auto-save.spec.d.ts.map +1 -0
  131. package/lib/common/chat-auto-save.spec.js +304 -0
  132. package/lib/common/chat-auto-save.spec.js.map +1 -0
  133. package/lib/common/chat-content-deserializer.d.ts +161 -0
  134. package/lib/common/chat-content-deserializer.d.ts.map +1 -0
  135. package/lib/common/chat-content-deserializer.js +166 -0
  136. package/lib/common/chat-content-deserializer.js.map +1 -0
  137. package/lib/common/chat-content-deserializer.spec.d.ts +2 -0
  138. package/lib/common/chat-content-deserializer.spec.d.ts.map +1 -0
  139. package/lib/common/chat-content-deserializer.spec.js +307 -0
  140. package/lib/common/chat-content-deserializer.spec.js.map +1 -0
  141. package/lib/common/chat-model-serialization.d.ts +110 -0
  142. package/lib/common/chat-model-serialization.d.ts.map +1 -0
  143. package/lib/common/chat-model-serialization.js +20 -0
  144. package/lib/common/chat-model-serialization.js.map +1 -0
  145. package/lib/common/chat-model-serialization.spec.d.ts +2 -0
  146. package/lib/common/chat-model-serialization.spec.d.ts.map +1 -0
  147. package/lib/common/chat-model-serialization.spec.js +278 -0
  148. package/lib/common/chat-model-serialization.spec.js.map +1 -0
  149. package/lib/common/chat-model-util.d.ts +7 -0
  150. package/lib/common/chat-model-util.d.ts.map +1 -0
  151. package/lib/common/chat-model-util.js +50 -0
  152. package/lib/common/chat-model-util.js.map +1 -0
  153. package/lib/common/chat-model.d.ts +923 -0
  154. package/lib/common/chat-model.d.ts.map +1 -0
  155. package/lib/common/chat-model.js +1791 -0
  156. package/lib/common/chat-model.js.map +1 -0
  157. package/lib/common/chat-request-parser.d.ts +38 -0
  158. package/lib/common/chat-request-parser.d.ts.map +1 -0
  159. package/lib/common/chat-request-parser.js +230 -0
  160. package/lib/common/chat-request-parser.js.map +1 -0
  161. package/lib/common/chat-request-parser.spec.d.ts +2 -0
  162. package/lib/common/chat-request-parser.spec.d.ts.map +1 -0
  163. package/lib/common/chat-request-parser.spec.js +235 -0
  164. package/lib/common/chat-request-parser.spec.js.map +1 -0
  165. package/lib/common/chat-service-deletion.spec.d.ts +2 -0
  166. package/lib/common/chat-service-deletion.spec.d.ts.map +1 -0
  167. package/lib/common/chat-service-deletion.spec.js +221 -0
  168. package/lib/common/chat-service-deletion.spec.js.map +1 -0
  169. package/lib/common/chat-service.d.ts +153 -0
  170. package/lib/common/chat-service.d.ts.map +1 -0
  171. package/lib/common/chat-service.js +474 -0
  172. package/lib/common/chat-service.js.map +1 -0
  173. package/lib/common/chat-session-naming-prompt-template.d.ts +3 -0
  174. package/lib/common/chat-session-naming-prompt-template.d.ts.map +1 -0
  175. package/lib/common/chat-session-naming-prompt-template.js +31 -0
  176. package/lib/common/chat-session-naming-prompt-template.js.map +1 -0
  177. package/lib/common/chat-session-naming-service.d.ts +26 -0
  178. package/lib/common/chat-session-naming-service.d.ts.map +1 -0
  179. package/lib/common/chat-session-naming-service.js +119 -0
  180. package/lib/common/chat-session-naming-service.js.map +1 -0
  181. package/lib/common/chat-session-store.d.ts +43 -0
  182. package/lib/common/chat-session-store.d.ts.map +1 -0
  183. package/lib/common/chat-session-store.js +20 -0
  184. package/lib/common/chat-session-store.js.map +1 -0
  185. package/lib/common/chat-session-summary-agent-prompt.d.ts +8 -0
  186. package/lib/common/chat-session-summary-agent-prompt.d.ts.map +1 -0
  187. package/lib/common/chat-session-summary-agent-prompt.js +33 -0
  188. package/lib/common/chat-session-summary-agent-prompt.js.map +1 -0
  189. package/lib/common/chat-session-summary-agent.d.ts +16 -0
  190. package/lib/common/chat-session-summary-agent.d.ts.map +1 -0
  191. package/lib/common/chat-session-summary-agent.js +48 -0
  192. package/lib/common/chat-session-summary-agent.js.map +1 -0
  193. package/lib/common/chat-string-utils.d.ts +3 -0
  194. package/lib/common/chat-string-utils.d.ts.map +1 -0
  195. package/lib/common/chat-string-utils.js +27 -0
  196. package/lib/common/chat-string-utils.js.map +1 -0
  197. package/lib/common/chat-tool-preferences.d.ts +23 -0
  198. package/lib/common/chat-tool-preferences.d.ts.map +1 -0
  199. package/lib/common/chat-tool-preferences.js +68 -0
  200. package/lib/common/chat-tool-preferences.js.map +1 -0
  201. package/lib/common/chat-tool-request-service.d.ts +18 -0
  202. package/lib/common/chat-tool-request-service.d.ts.map +1 -0
  203. package/lib/common/chat-tool-request-service.js +52 -0
  204. package/lib/common/chat-tool-request-service.js.map +1 -0
  205. package/lib/common/context-details-variable.d.ts +9 -0
  206. package/lib/common/context-details-variable.d.ts.map +1 -0
  207. package/lib/common/context-details-variable.js +57 -0
  208. package/lib/common/context-details-variable.js.map +1 -0
  209. package/lib/common/context-summary-variable.d.ts +9 -0
  210. package/lib/common/context-summary-variable.d.ts.map +1 -0
  211. package/lib/common/context-summary-variable.js +57 -0
  212. package/lib/common/context-summary-variable.js.map +1 -0
  213. package/lib/common/context-variables.d.ts +4 -0
  214. package/lib/common/context-variables.d.ts.map +1 -0
  215. package/lib/common/context-variables.js +22 -0
  216. package/lib/common/context-variables.js.map +1 -0
  217. package/lib/common/custom-chat-agent.d.ts +10 -0
  218. package/lib/common/custom-chat-agent.d.ts.map +1 -0
  219. package/lib/common/custom-chat-agent.js +40 -0
  220. package/lib/common/custom-chat-agent.js.map +1 -0
  221. package/lib/common/image-context-variable.d.ts +29 -0
  222. package/lib/common/image-context-variable.d.ts.map +1 -0
  223. package/lib/common/image-context-variable.js +114 -0
  224. package/lib/common/image-context-variable.js.map +1 -0
  225. package/lib/common/index.d.ts +13 -0
  226. package/lib/common/index.d.ts.map +1 -0
  227. package/lib/common/index.js +31 -0
  228. package/lib/common/index.js.map +1 -0
  229. package/lib/common/parse-contents-with-incomplete-parts.spec.d.ts +2 -0
  230. package/lib/common/parse-contents-with-incomplete-parts.spec.d.ts.map +1 -0
  231. package/lib/common/parse-contents-with-incomplete-parts.spec.js +103 -0
  232. package/lib/common/parse-contents-with-incomplete-parts.spec.js.map +1 -0
  233. package/lib/common/parse-contents.d.ts +12 -0
  234. package/lib/common/parse-contents.d.ts.map +1 -0
  235. package/lib/common/parse-contents.js +107 -0
  236. package/lib/common/parse-contents.js.map +1 -0
  237. package/lib/common/parse-contents.spec.d.ts +10 -0
  238. package/lib/common/parse-contents.spec.d.ts.map +1 -0
  239. package/lib/common/parse-contents.spec.js +146 -0
  240. package/lib/common/parse-contents.spec.js.map +1 -0
  241. package/lib/common/parsed-chat-request.d.ts +66 -0
  242. package/lib/common/parsed-chat-request.d.ts.map +1 -0
  243. package/lib/common/parsed-chat-request.js +83 -0
  244. package/lib/common/parsed-chat-request.js.map +1 -0
  245. package/lib/common/response-content-matcher.d.ts +69 -0
  246. package/lib/common/response-content-matcher.d.ts.map +1 -0
  247. package/lib/common/response-content-matcher.js +97 -0
  248. package/lib/common/response-content-matcher.js.map +1 -0
  249. package/lib/node/ai-chat-backend-module.d.ts +4 -0
  250. package/lib/node/ai-chat-backend-module.d.ts.map +1 -0
  251. package/lib/node/ai-chat-backend-module.js +26 -0
  252. package/lib/node/ai-chat-backend-module.js.map +1 -0
  253. package/package.json +9 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-service.d.ts","sourceRoot":"","sources":["../../src/common/chat-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2024 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
+ /*---------------------------------------------------------------------------------------------
18
+ * Copyright (c) Microsoft Corporation. All rights reserved.
19
+ * Licensed under the MIT License. See License.txt in the project root for license information.
20
+ *--------------------------------------------------------------------------------------------*/
21
+ // Partially copied from https://github.com/microsoft/vscode/blob/a2cab7255c0df424027be05d58e1b7b941f4ea60/src/vs/workbench/contrib/chat/common/chatService.ts
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.ChatServiceImpl = exports.ChatServiceFactory = exports.ChatService = exports.PinChatAgent = exports.FallbackChatAgentId = exports.DefaultChatAgentId = exports.isSessionDeletedEvent = exports.isSessionCreatedEvent = exports.isActiveSessionChangedEvent = void 0;
24
+ const tslib_1 = require("tslib");
25
+ const ai_core_1 = require("@theia/ai-core");
26
+ const core_1 = require("@theia/core");
27
+ const promise_util_1 = require("@theia/core/lib/common/promise-util");
28
+ const inversify_1 = require("@theia/core/shared/inversify");
29
+ const chat_agent_service_1 = require("./chat-agent-service");
30
+ const chat_agents_1 = require("./chat-agents");
31
+ const chat_model_1 = require("./chat-model");
32
+ const chat_request_parser_1 = require("./chat-request-parser");
33
+ const chat_session_naming_service_1 = require("./chat-session-naming-service");
34
+ const parsed_chat_request_1 = require("./parsed-chat-request");
35
+ const chat_session_store_1 = require("./chat-session-store");
36
+ const chat_content_deserializer_1 = require("./chat-content-deserializer");
37
+ const change_set_element_deserializer_1 = require("./change-set-element-deserializer");
38
+ const debounce = require("@theia/core/shared/lodash.debounce");
39
+ function isActiveSessionChangedEvent(obj) {
40
+ // eslint-disable-next-line no-null/no-null
41
+ return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'activeChange';
42
+ }
43
+ exports.isActiveSessionChangedEvent = isActiveSessionChangedEvent;
44
+ function isSessionCreatedEvent(obj) {
45
+ // eslint-disable-next-line no-null/no-null
46
+ return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'created';
47
+ }
48
+ exports.isSessionCreatedEvent = isSessionCreatedEvent;
49
+ function isSessionDeletedEvent(obj) {
50
+ // eslint-disable-next-line no-null/no-null
51
+ return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'deleted';
52
+ }
53
+ exports.isSessionDeletedEvent = isSessionDeletedEvent;
54
+ /**
55
+ * The default chat agent to invoke
56
+ */
57
+ exports.DefaultChatAgentId = Symbol('DefaultChatAgentId');
58
+ /**
59
+ * In case no fitting chat agent is available, this one will be used (if it is itself available)
60
+ */
61
+ exports.FallbackChatAgentId = Symbol('FallbackChatAgentId');
62
+ exports.PinChatAgent = Symbol('PinChatAgent');
63
+ exports.ChatService = Symbol('ChatService');
64
+ exports.ChatServiceFactory = Symbol('ChatServiceFactory');
65
+ let ChatServiceImpl = class ChatServiceImpl {
66
+ constructor() {
67
+ this.onSessionEventEmitter = new core_1.Emitter();
68
+ this.onSessionEvent = this.onSessionEventEmitter.event;
69
+ this._sessions = [];
70
+ }
71
+ getSessions() {
72
+ return [...this._sessions];
73
+ }
74
+ getSession(id) {
75
+ return this._sessions.find(session => session.id === id);
76
+ }
77
+ createSession(location = chat_agents_1.ChatAgentLocation.Panel, options, pinnedAgent) {
78
+ const model = new chat_model_1.MutableChatModel(location);
79
+ const session = {
80
+ id: model.id,
81
+ lastInteraction: new Date(),
82
+ model,
83
+ isActive: true,
84
+ pinnedAgent
85
+ };
86
+ this._sessions.push(session);
87
+ this.setupAutoSaveForSession(session);
88
+ this.setActiveSession(session.id, options);
89
+ this.onSessionEventEmitter.fire({ type: 'created', sessionId: session.id });
90
+ return session;
91
+ }
92
+ async deleteSession(sessionId) {
93
+ var _a;
94
+ const sessionIndex = this._sessions.findIndex(candidate => candidate.id === sessionId);
95
+ // If session is in memory, remove it
96
+ if (sessionIndex !== -1) {
97
+ const session = this._sessions[sessionIndex];
98
+ // If the removed session is the active one, set the newest one as active
99
+ if (session.isActive) {
100
+ this.setActiveSession((_a = this._sessions[this._sessions.length - 1]) === null || _a === void 0 ? void 0 : _a.id);
101
+ }
102
+ session.model.dispose();
103
+ this._sessions.splice(sessionIndex, 1);
104
+ this.onSessionEventEmitter.fire({ type: 'deleted', sessionId: sessionId });
105
+ }
106
+ // Always delete from persistent storage
107
+ if (this.sessionStore) {
108
+ try {
109
+ await this.sessionStore.deleteSession(sessionId);
110
+ }
111
+ catch (error) {
112
+ this.logger.error('Failed to delete session from storage', { sessionId, error });
113
+ }
114
+ }
115
+ }
116
+ getActiveSession() {
117
+ const activeSessions = this._sessions.filter(candidate => candidate.isActive);
118
+ if (activeSessions.length > 1) {
119
+ throw new Error('More than one session marked as active. This indicates an error in ChatService.');
120
+ }
121
+ return activeSessions.at(0);
122
+ }
123
+ setActiveSession(sessionId, options) {
124
+ this._sessions.forEach(session => {
125
+ session.isActive = session.id === sessionId;
126
+ });
127
+ this.onSessionEventEmitter.fire({ type: 'activeChange', sessionId: sessionId, ...options });
128
+ }
129
+ async sendRequest(sessionId, request) {
130
+ var _a;
131
+ const session = this.getSession(sessionId);
132
+ if (!session) {
133
+ return undefined;
134
+ }
135
+ this.cancelIncompleteRequests(session);
136
+ const resolutionContext = { model: session.model };
137
+ const resolvedContext = await this.resolveChatContext((_a = request.variables) !== null && _a !== void 0 ? _a : session.model.context.getVariables(), resolutionContext);
138
+ const parsedRequest = await this.chatRequestParser.parseChatRequest(request, session.model.location, resolvedContext);
139
+ const agent = this.getAgent(parsedRequest, session);
140
+ session.pinnedAgent = agent;
141
+ if (agent === undefined) {
142
+ const error = 'No ChatAgents available to handle request!';
143
+ this.logger.error(error);
144
+ const chatResponseModel = new chat_model_1.ErrorChatResponseModel((0, core_1.generateUuid)(), new Error(error));
145
+ return {
146
+ requestCompleted: Promise.reject(error),
147
+ responseCreated: Promise.reject(error),
148
+ responseCompleted: Promise.resolve(chatResponseModel),
149
+ };
150
+ }
151
+ const requestModel = session.model.addRequest(parsedRequest, agent === null || agent === void 0 ? void 0 : agent.id, resolvedContext);
152
+ this.updateSessionMetadata(session, requestModel);
153
+ resolutionContext.request = requestModel;
154
+ const responseCompletionDeferred = new promise_util_1.Deferred();
155
+ const invocation = {
156
+ requestCompleted: Promise.resolve(requestModel),
157
+ responseCreated: Promise.resolve(requestModel.response),
158
+ responseCompleted: responseCompletionDeferred.promise,
159
+ };
160
+ requestModel.response.onDidChange(() => {
161
+ if (requestModel.response.isComplete) {
162
+ responseCompletionDeferred.resolve(requestModel.response);
163
+ }
164
+ if (requestModel.response.isError) {
165
+ responseCompletionDeferred.resolve(requestModel.response);
166
+ }
167
+ });
168
+ agent.invoke(requestModel).catch(error => requestModel.response.error(error));
169
+ return invocation;
170
+ }
171
+ cancelIncompleteRequests(session) {
172
+ for (const pastRequest of session.model.getRequests()) {
173
+ if (!pastRequest.response.isComplete) {
174
+ pastRequest.cancel();
175
+ }
176
+ }
177
+ }
178
+ updateSessionMetadata(session, request) {
179
+ var _a;
180
+ session.lastInteraction = new Date();
181
+ if (session.title) {
182
+ return;
183
+ }
184
+ const requestText = (_a = request.request.displayText) !== null && _a !== void 0 ? _a : request.request.text;
185
+ session.title = requestText;
186
+ if (this.chatSessionNamingService) {
187
+ const otherSessionNames = this._sessions.map(s => s.title).filter((title) => title !== undefined);
188
+ const namingService = this.chatSessionNamingService;
189
+ let didGenerateName = false;
190
+ request.response.onDidChange(() => {
191
+ if (request.response.isComplete && !didGenerateName) {
192
+ namingService.generateChatSessionName(session, otherSessionNames).then(name => {
193
+ if (name && session.title === requestText) {
194
+ session.title = name;
195
+ // Trigger persistence when title changes
196
+ this.saveSession(session.id);
197
+ }
198
+ didGenerateName = true;
199
+ }).catch(error => this.logger.error('Failed to generate chat session name', error));
200
+ }
201
+ });
202
+ }
203
+ }
204
+ async resolveChatContext(resolutionRequests, context) {
205
+ // TODO use a common cache to resolve variables and return recursively resolved variables?
206
+ const resolvedVariables = await Promise.all(resolutionRequests.map(async (contextVariable) => this.variableService.resolveVariable(contextVariable, context)))
207
+ .then(results => results.filter(ai_core_1.ResolvedAIContextVariable.is));
208
+ return { variables: resolvedVariables };
209
+ }
210
+ async cancelRequest(sessionId, requestId) {
211
+ var _a, _b;
212
+ return (_b = (_a = this.getSession(sessionId)) === null || _a === void 0 ? void 0 : _a.model.getRequest(requestId)) === null || _b === void 0 ? void 0 : _b.response.cancel();
213
+ }
214
+ getAgent(parsedRequest, session) {
215
+ const agent = this.initialAgentSelection(parsedRequest);
216
+ if (!this.isPinChatAgentEnabled()) {
217
+ return agent;
218
+ }
219
+ return this.getPinnedAgent(parsedRequest, session, agent);
220
+ }
221
+ /**
222
+ * Determines if chat agent pinning is enabled.
223
+ * Can be overridden by subclasses to provide different logic (e.g., using preferences).
224
+ */
225
+ isPinChatAgentEnabled() {
226
+ return this.pinChatAgent !== false;
227
+ }
228
+ /**
229
+ * Check if an agent is pinned, and use it if no other agent is mentioned.
230
+ */
231
+ getPinnedAgent(parsedRequest, session, agent) {
232
+ const mentionedAgentPart = this.getMentionedAgent(parsedRequest);
233
+ const mentionedAgent = mentionedAgentPart ? this.chatAgentService.getAgent(mentionedAgentPart.agentId) : undefined;
234
+ if (mentionedAgent) {
235
+ return mentionedAgent;
236
+ }
237
+ else if (session.pinnedAgent) {
238
+ // If we have a valid pinned agent, use it (pinned agent may become stale
239
+ // if it was disabled; so we always need to recheck)
240
+ const pinnedAgent = this.chatAgentService.getAgent(session.pinnedAgent.id);
241
+ if (pinnedAgent) {
242
+ return pinnedAgent;
243
+ }
244
+ }
245
+ return agent;
246
+ }
247
+ initialAgentSelection(parsedRequest) {
248
+ var _a;
249
+ const agentPart = this.getMentionedAgent(parsedRequest);
250
+ if (agentPart) {
251
+ return this.chatAgentService.getAgent(agentPart.agentId);
252
+ }
253
+ let chatAgent = undefined;
254
+ if (this.defaultChatAgentId) {
255
+ chatAgent = this.chatAgentService.getAgent(this.defaultChatAgentId.id);
256
+ }
257
+ if (!chatAgent && this.fallbackChatAgentId) {
258
+ chatAgent = this.chatAgentService.getAgent(this.fallbackChatAgentId.id);
259
+ }
260
+ if (chatAgent) {
261
+ return chatAgent;
262
+ }
263
+ this.logger.warn('Neither the default chat agent nor the fallback chat agent are configured or available. Falling back to the first registered agent');
264
+ return (_a = this.chatAgentService.getAgents()[0]) !== null && _a !== void 0 ? _a : undefined;
265
+ }
266
+ getMentionedAgent(parsedRequest) {
267
+ return parsedRequest.parts.find(p => p instanceof parsed_chat_request_1.ParsedChatRequestAgentPart);
268
+ }
269
+ deleteChangeSet(sessionId) {
270
+ var _a;
271
+ const model = (_a = this.getSession(sessionId)) === null || _a === void 0 ? void 0 : _a.model;
272
+ model === null || model === void 0 ? void 0 : model.changeSet.setElements();
273
+ }
274
+ deleteChangeSetElement(sessionId, uri) {
275
+ var _a;
276
+ (_a = this.getSession(sessionId)) === null || _a === void 0 ? void 0 : _a.model.changeSet.removeElements(uri);
277
+ }
278
+ saveSession(sessionId) {
279
+ var _a;
280
+ if (!this.sessionStore) {
281
+ this.logger.debug('Session store not available, skipping save');
282
+ return;
283
+ }
284
+ const session = this.getSession(sessionId);
285
+ if (!session) {
286
+ this.logger.debug('Session not found, skipping save', { sessionId });
287
+ return;
288
+ }
289
+ // Don't save empty sessions
290
+ if (session.model.isEmpty()) {
291
+ this.logger.debug('Session is empty, skipping save', { sessionId });
292
+ return;
293
+ }
294
+ // Store session with title and pinned agent info
295
+ this.sessionStore.storeSessions({ model: session.model, title: session.title, pinnedAgentId: (_a = session.pinnedAgent) === null || _a === void 0 ? void 0 : _a.id }).catch(error => {
296
+ this.logger.error('Failed to store chat sessions', error);
297
+ });
298
+ }
299
+ /**
300
+ * Set up auto-save for a session by listening to model changes.
301
+ */
302
+ setupAutoSaveForSession(session) {
303
+ const debouncedSave = debounce(() => this.saveSession(session.id), 500, { maxWait: 5000 });
304
+ session.model.onDidChange(_event => {
305
+ debouncedSave();
306
+ });
307
+ }
308
+ async getOrRestoreSession(sessionId) {
309
+ const existing = this.getSession(sessionId);
310
+ if (existing) {
311
+ this.logger.debug('Session already loaded', { sessionId });
312
+ return existing;
313
+ }
314
+ if (!this.sessionStore) {
315
+ this.logger.debug('Session store not available, cannot restore', { sessionId });
316
+ return undefined;
317
+ }
318
+ this.logger.debug('Restoring session from storage', { sessionId });
319
+ const serialized = await this.sessionStore.readSession(sessionId);
320
+ if (!serialized) {
321
+ this.logger.warn('Session not found in storage', { sessionId });
322
+ return undefined;
323
+ }
324
+ this.logger.debug('Session loaded from storage', {
325
+ sessionId,
326
+ requestCount: serialized.model.requests.length,
327
+ responseCount: serialized.model.responses.length,
328
+ version: serialized.version
329
+ });
330
+ const model = new chat_model_1.MutableChatModel(serialized.model);
331
+ await this.restoreSessionData(model, serialized.model);
332
+ // Determine pinned agent
333
+ const pinnedAgent = serialized.pinnedAgentId
334
+ ? this.chatAgentService.getAgent(serialized.pinnedAgentId)
335
+ : undefined;
336
+ // Register as session
337
+ const session = {
338
+ id: sessionId,
339
+ title: serialized.title,
340
+ lastInteraction: new Date(serialized.saveDate),
341
+ model,
342
+ isActive: false,
343
+ pinnedAgent
344
+ };
345
+ this._sessions.push(session);
346
+ this.setupAutoSaveForSession(session);
347
+ this.onSessionEventEmitter.fire({ type: 'created', sessionId: session.id });
348
+ this.logger.debug('Session successfully restored and registered', { sessionId, title: session.title });
349
+ return session;
350
+ }
351
+ async getPersistedSessions() {
352
+ if (!this.sessionStore) {
353
+ return {};
354
+ }
355
+ return this.sessionStore.getSessionIndex();
356
+ }
357
+ /**
358
+ * Deserialize response content and restore changesets.
359
+ * Called after basic chat model structure was created.
360
+ */
361
+ async restoreSessionData(model, data) {
362
+ var _a;
363
+ this.logger.debug('Restoring dynamic session data', { sessionId: data.sessionId, requestCount: data.requests.length });
364
+ // Process each request for response content and changeset restoration
365
+ // IMPORTANT: Use getAllRequests() to include alternatives, not just active requests
366
+ const requests = model.getAllRequests();
367
+ for (let i = 0; i < requests.length; i++) {
368
+ const requestModel = requests[i];
369
+ this.logger.debug('Restore response content', { requestId: requestModel.id, index: i });
370
+ // Restore response content using deserializer registry
371
+ const respData = data.responses.find(r => r.requestId === requestModel.id);
372
+ if (respData && respData.content.length > 0) {
373
+ const restoredContent = await Promise.all(respData.content.map(contentData => this.deserializerRegistry.deserialize(contentData)));
374
+ restoredContent.forEach(content => requestModel.response.response.addContent(content));
375
+ this.logger.debug('Restored response content', {
376
+ requestId: requestModel.id,
377
+ contentCount: restoredContent.length
378
+ });
379
+ }
380
+ // Restore changeset elements
381
+ const serializedChangeSet = (_a = data.requests.find(r => r.id === requestModel.id)) === null || _a === void 0 ? void 0 : _a.changeSet;
382
+ if (serializedChangeSet && serializedChangeSet.elements && serializedChangeSet.elements.length > 0) {
383
+ // Create a changeset if one doesn't exist
384
+ if (!requestModel.changeSet) {
385
+ requestModel.changeSet = new chat_model_1.ChangeSetImpl();
386
+ }
387
+ await this.restoreChangeSetElements(requestModel, serializedChangeSet.elements, data.sessionId);
388
+ // Restore changeset title
389
+ if (serializedChangeSet.title) {
390
+ requestModel.changeSet.setTitle(serializedChangeSet.title);
391
+ }
392
+ this.logger.debug('Restored changeset', {
393
+ requestId: requestModel.id,
394
+ elementCount: serializedChangeSet.elements.length
395
+ });
396
+ }
397
+ }
398
+ this.logger.debug('Restoring dynamic session data complete', { sessionId: data.sessionId });
399
+ }
400
+ async restoreChangeSetElements(requestModel, elements, sessionId) {
401
+ this.logger.debug('Restoring changeset elements', { requestId: requestModel.id, elementCount: elements.length });
402
+ const context = {
403
+ chatSessionId: sessionId,
404
+ requestId: requestModel.id
405
+ };
406
+ const restoredElements = [];
407
+ for (const elem of elements) {
408
+ const restoredElement = await this.changeSetElementDeserializerRegistry.deserialize(elem, context);
409
+ restoredElements.push(restoredElement);
410
+ }
411
+ // Add elements to the request's changeset
412
+ if (requestModel.changeSet) {
413
+ requestModel.changeSet.addElements(...restoredElements);
414
+ this.logger.debug('Changeset elements restored', { requestId: requestModel.id, elementCount: restoredElements.length });
415
+ }
416
+ else {
417
+ this.logger.warn('Request has no changeset, cannot restore elements', { requestId: requestModel.id });
418
+ }
419
+ }
420
+ };
421
+ exports.ChatServiceImpl = ChatServiceImpl;
422
+ tslib_1.__decorate([
423
+ (0, inversify_1.inject)(chat_agent_service_1.ChatAgentService),
424
+ tslib_1.__metadata("design:type", Object)
425
+ ], ChatServiceImpl.prototype, "chatAgentService", void 0);
426
+ tslib_1.__decorate([
427
+ (0, inversify_1.inject)(exports.DefaultChatAgentId),
428
+ (0, inversify_1.optional)(),
429
+ tslib_1.__metadata("design:type", Object)
430
+ ], ChatServiceImpl.prototype, "defaultChatAgentId", void 0);
431
+ tslib_1.__decorate([
432
+ (0, inversify_1.inject)(exports.FallbackChatAgentId),
433
+ (0, inversify_1.optional)(),
434
+ tslib_1.__metadata("design:type", Object)
435
+ ], ChatServiceImpl.prototype, "fallbackChatAgentId", void 0);
436
+ tslib_1.__decorate([
437
+ (0, inversify_1.inject)(chat_session_naming_service_1.ChatSessionNamingService),
438
+ (0, inversify_1.optional)(),
439
+ tslib_1.__metadata("design:type", Object)
440
+ ], ChatServiceImpl.prototype, "chatSessionNamingService", void 0);
441
+ tslib_1.__decorate([
442
+ (0, inversify_1.inject)(exports.PinChatAgent),
443
+ (0, inversify_1.optional)(),
444
+ tslib_1.__metadata("design:type", Object)
445
+ ], ChatServiceImpl.prototype, "pinChatAgent", void 0);
446
+ tslib_1.__decorate([
447
+ (0, inversify_1.inject)(chat_request_parser_1.ChatRequestParser),
448
+ tslib_1.__metadata("design:type", Object)
449
+ ], ChatServiceImpl.prototype, "chatRequestParser", void 0);
450
+ tslib_1.__decorate([
451
+ (0, inversify_1.inject)(ai_core_1.AIVariableService),
452
+ tslib_1.__metadata("design:type", Object)
453
+ ], ChatServiceImpl.prototype, "variableService", void 0);
454
+ tslib_1.__decorate([
455
+ (0, inversify_1.inject)(core_1.ILogger),
456
+ tslib_1.__metadata("design:type", Object)
457
+ ], ChatServiceImpl.prototype, "logger", void 0);
458
+ tslib_1.__decorate([
459
+ (0, inversify_1.inject)(chat_session_store_1.ChatSessionStore),
460
+ (0, inversify_1.optional)(),
461
+ tslib_1.__metadata("design:type", Object)
462
+ ], ChatServiceImpl.prototype, "sessionStore", void 0);
463
+ tslib_1.__decorate([
464
+ (0, inversify_1.inject)(chat_content_deserializer_1.ChatContentDeserializerRegistry),
465
+ tslib_1.__metadata("design:type", Object)
466
+ ], ChatServiceImpl.prototype, "deserializerRegistry", void 0);
467
+ tslib_1.__decorate([
468
+ (0, inversify_1.inject)(change_set_element_deserializer_1.ChangeSetElementDeserializerRegistry),
469
+ tslib_1.__metadata("design:type", Object)
470
+ ], ChatServiceImpl.prototype, "changeSetElementDeserializerRegistry", void 0);
471
+ exports.ChatServiceImpl = ChatServiceImpl = tslib_1.__decorate([
472
+ (0, inversify_1.injectable)()
473
+ ], ChatServiceImpl);
474
+ //# sourceMappingURL=chat-service.js.map
@@ -0,0 +1 @@
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,sCAAkE;AAClE,sEAA+D;AAC/D,4DAA4E;AAE5E,6DAAwD;AACxD,+CAAiF;AACjF,6CAWsB;AACtB,+DAA0D;AAC1D,+EAAyE;AACzE,+DAAsF;AACtF,6DAA0E;AAC1E,2EAA8E;AAC9E,uFAA0H;AAE1H,+DAAgE;AAgChE,SAAgB,2BAA2B,CAAC,GAAY;IACpD,2CAA2C;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC;AACnG,CAAC;AAHD,kEAGC;AAOD,SAAgB,qBAAqB,CAAC,GAAY;IAC9C,2CAA2C;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC;AAC9F,CAAC;AAHD,sDAGC;AAOD,SAAgB,qBAAqB,CAAC,GAAY;IAC9C,2CAA2C;IAC3C,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC;AAC9F,CAAC;AAHD,sDAGC;AAMD;;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;AACpC,QAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAsCxD,IAAM,eAAe,GAArB,MAAM,eAAe;IAArB;QACgB,0BAAqB,GAAG,IAAI,cAAO,EAAyE,CAAC;QAChI,mBAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAmCxC,cAAS,GAA0B,EAAE,CAAC;IAwZpD,CAAC;IAtZG,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,eAAe,EAAE,IAAI,IAAI,EAAE;YAC3B,KAAK;YACL,QAAQ,EAAE,IAAI;YACd,WAAW;SACd,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QAEvF,qCAAqC;QACrC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC7C,yEAAyE;YACzE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAI,CAAC,gBAAgB,CAAC,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACrF,CAAC;QACL,CAAC;IACL,CAAC;IAED,gBAAgB;QACZ,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9E,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;QAAC,CAAC;QACtI,OAAO,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,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,qBAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAChG,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;QAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAEvC,MAAM,iBAAiB,GAAuB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACvE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAA,OAAO,CAAC,SAAS,mCAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACpI,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;QACpD,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QAE5B,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,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAClD,iBAAiB,CAAC,OAAO,GAAG,YAAY,CAAC;QAEzC,MAAM,0BAA0B,GAAG,IAAI,uBAAQ,EAAqB,CAAC;QACrE,MAAM,UAAU,GAA0B;YACtC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;YAC/C,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;YACvD,iBAAiB,EAAE,0BAA0B,CAAC,OAAO;SACxD,CAAC;QAEF,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACnC,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACnC,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAChC,0BAA0B,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC9D,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9E,OAAO,UAAU,CAAC;IACtB,CAAC;IAES,wBAAwB,CAAC,OAA4B;QAC3D,KAAK,MAAM,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACnC,WAAW,CAAC,MAAM,EAAE,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;IAES,qBAAqB,CAAC,OAA4B,EAAE,OAAgC;;QAC1F,OAAO,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QACD,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,OAAO,CAAC,WAAW,mCAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACxE,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;QAC5B,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;YACnH,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC;YACpD,IAAI,eAAe,GAAG,KAAK,CAAC;YAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;gBAC9B,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,eAAe,EAAE,CAAC;oBAClD,aAAa,CAAC,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAC1E,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;4BACxC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;4BACrB,yCAAyC;4BACzC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACjC,CAAC;wBACD,eAAe,GAAG,IAAI,CAAC;oBAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC,CAAC;gBACxF,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAES,KAAK,CAAC,kBAAkB,CAC9B,kBAA0D,EAC1D,OAA2B;QAE3B,0FAA0F;QAC1F,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAC,eAAe,EAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;aACvJ,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,mCAAyB,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,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;IAED,QAAQ,CAAC,aAAgC,EAAE,OAAoB;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACO,qBAAqB;QAC3B,OAAO,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC;IACvC,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,aAAgC,EAAE,OAAoB,EAAE,KAA4B;QACzG,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnH,IAAI,cAAc,EAAE,CAAC;YACjB,OAAO,cAAc,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7B,yEAAyE;YACzE,oDAAoD;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC3E,IAAI,WAAW,EAAE,CAAC;gBACd,OAAO,WAAW,CAAC;YACvB,CAAC;QACL,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,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,0CAAE,KAAK,CAAC;QAChD,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,sBAAsB,CAAC,SAAiB,EAAE,GAAQ;;QAC9C,MAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,0CAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAES,WAAW,CAAC,SAAiB;;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACrE,OAAO;QACX,CAAC;QAED,4BAA4B;QAC5B,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACpE,OAAO;QACX,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,YAAY,CAAC,aAAa,CAC3B,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,MAAA,OAAO,CAAC,WAAW,0CAAE,EAAE,EAAE,CACzF,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACO,uBAAuB,CAAC,OAA4B;QAC1D,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC/B,aAAa,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3D,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAChE,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC7C,SAAS;YACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;YAC9C,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;YAChD,OAAO,EAAE,UAAU,CAAC,OAAO;SAC9B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,6BAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAEvD,yBAAyB;QACzB,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa;YACxC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;YAC1D,CAAC,CAAC,SAAS,CAAC;QAEhB,sBAAsB;QACtB,MAAM,OAAO,GAAwB;YACjC,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,eAAe,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC9C,KAAK;YACL,QAAQ,EAAE,KAAK;YACf,WAAW;SACd,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvG,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,oBAAoB;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,kBAAkB,CAAC,KAAuB,EAAE,IAAyB;;QACjF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEvH,sEAAsE;QACtE,oFAAoF;QACpF,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAExF,uDAAuD;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;YAC3E,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CACzE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,CACrD,CAAC,CAAC;gBACH,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;oBAC3C,SAAS,EAAE,YAAY,CAAC,EAAE;oBAC1B,YAAY,EAAE,eAAe,CAAC,MAAM;iBACvC,CAAC,CAAC;YACP,CAAC;YAED,6BAA6B;YAC7B,MAAM,mBAAmB,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,0CAAE,SAAS,CAAC;YACzF,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjG,0CAA0C;gBAC1C,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;oBAC1B,YAAY,CAAC,SAAS,GAAG,IAAI,0BAAa,EAAE,CAAC;gBACjD,CAAC;gBACD,MAAM,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEhG,0BAA0B;gBAC1B,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC;oBAC5B,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC/D,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;oBACpC,SAAS,EAAE,YAAY,CAAC,EAAE;oBAC1B,YAAY,EAAE,mBAAmB,CAAC,QAAQ,CAAC,MAAM;iBACpD,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAChG,CAAC;IAES,KAAK,CAAC,wBAAwB,CACpC,YAAqC,EACrC,QAAwC,EACxC,SAAiB;QAEjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjH,MAAM,OAAO,GAAoC;YAC7C,aAAa,EAAE,SAAS;YACxB,SAAS,EAAE,YAAY,CAAC,EAAE;SAC7B,CAAC;QAEF,MAAM,gBAAgB,GAAuB,EAAE,CAAC;QAEhD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,oCAAoC,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnG,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;QAED,0CAA0C;QAC1C,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YACzB,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5H,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1G,CAAC;IACL,CAAC;CACJ,CAAA;AA7bY,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,sDAAwB,CAAC;IAAE,IAAA,oBAAQ,GAAE;;iEAC4B;AAG/D;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;AAGhB;IADT,IAAA,kBAAM,EAAC,qCAAgB,CAAC;IAAE,IAAA,oBAAQ,GAAE;;qDACgB;AAG3C;IADT,IAAA,kBAAM,EAAC,2DAA+B,CAAC;;6DACwB;AAGtD;IADT,IAAA,kBAAM,EAAC,sEAAoC,CAAC;;6EACwC;0BAnC5E,eAAe;IAD3B,IAAA,sBAAU,GAAE;GACA,eAAe,CA6b3B"}
@@ -0,0 +1,3 @@
1
+ import { PromptVariantSet } from '@theia/ai-core';
2
+ export declare const CHAT_SESSION_NAMING_PROMPT: PromptVariantSet;
3
+ //# sourceMappingURL=chat-session-naming-prompt-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-session-naming-prompt-template.d.ts","sourceRoot":"","sources":["../../src/common/chat-session-naming-prompt-template.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,eAAO,MAAM,0BAA0B,EAAE,gBAgBxC,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/tslint/config */
3
+ // *****************************************************************************
4
+ // Copyright (C) 2025 EclipseSource GmbH and others.
5
+ //
6
+ // This file is licensed under the MIT License.
7
+ // See LICENSE-MIT.txt in the project root for license information.
8
+ // https://opensource.org/license/mit.
9
+ //
10
+ // SPDX-License-Identifier: MIT
11
+ // *****************************************************************************
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CHAT_SESSION_NAMING_PROMPT = void 0;
14
+ exports.CHAT_SESSION_NAMING_PROMPT = {
15
+ id: 'chat-session-naming-system',
16
+ defaultVariant: {
17
+ id: 'chat-session-naming-system-default',
18
+ template: '{{!-- This prompt is licensed under the MIT License (https://opensource.org/license/mit).\n' +
19
+ 'Made improvements or adaptations to this prompt template? We\'d love for you to share it with the community! Contribute back here: ' +
20
+ 'https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}\n\n' +
21
+ 'Provide a short and descriptive name for the given AI chat conversation of an AI-powered tool based on the conversation below.\n\n' +
22
+ 'The purpose of the name is for users to recognize the chat conversation easily in a list of conversations. ' +
23
+ 'Use the same language for the chat conversation name as used in the provided conversation, if in doubt default to English. ' +
24
+ 'Start the chat conversation name with an upper-case letter. ' +
25
+ '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' +
26
+ 'IMPORTANT: Your answer MUST ONLY CONTAIN THE PROPOSED NAME and must not be preceded or followed by any other text.' +
27
+ '\n\nOther session names:\n{{listOfSessionNames}}' +
28
+ '\n\nConversation:\n{{conversation}}',
29
+ }
30
+ };
31
+ //# sourceMappingURL=chat-session-naming-prompt-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-session-naming-prompt-template.js","sourceRoot":"","sources":["../../src/common/chat-session-naming-prompt-template.ts"],"names":[],"mappings":";AAAA,qDAAqD;AACrD,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,+CAA+C;AAC/C,mEAAmE;AACnE,sCAAsC;AACtC,EAAE;AACF,+BAA+B;AAC/B,gFAAgF;;;AAInE,QAAA,0BAA0B,GAAqB;IACxD,EAAE,EAAE,4BAA4B;IAChC,cAAc,EAAE;QACZ,EAAE,EAAE,oCAAoC;QACxC,QAAQ,EAAE,6FAA6F;YACnG,qIAAqI;YACrI,uGAAuG;YACvG,oIAAoI;YACpI,6GAA6G;YAC7G,6HAA6H;YAC7H,8DAA8D;YAC9D,4JAA4J;YAC5J,oHAAoH;YACpH,kDAAkD;YAClD,qCAAqC;KAC5C;CACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Agent, AgentService, LanguageModelRegistry, LanguageModelRequirement, LanguageModelService, PromptService } 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
+ prompts: import("@theia/ai-core").PromptVariantSet[];
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 readonly languageModelService: LanguageModelService;
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,EAEZ,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,aAAa,EAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,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,SAAyB;IAClC,EAAE,SAA6B;IAC/B,IAAI,SAA6B;IACjC,WAAW,SAA+G;IAC1H,SAAS,UAAM;IACf,OAAO,8CAAgC;IACvC,yBAAyB,EAAE,wBAAwB,EAAE,CAGlD;IACH,sBAAsB;;;;QAWpB;IACF,SAAS,UAAM;IAGf,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAGrD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAG9D,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEjC,uBAAuB,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAsCjG"}