@theia/ai-chat 1.66.0-next.67 → 1.66.0-next.80

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 (83) hide show
  1. package/lib/browser/agent-delegation-tool.d.ts.map +1 -1
  2. package/lib/browser/agent-delegation-tool.js +4 -2
  3. package/lib/browser/agent-delegation-tool.js.map +1 -1
  4. package/lib/browser/ai-chat-frontend-module.d.ts.map +1 -1
  5. package/lib/browser/ai-chat-frontend-module.js +15 -0
  6. package/lib/browser/ai-chat-frontend-module.js.map +1 -1
  7. package/lib/browser/change-set-file-element-deserializer.d.ts +7 -0
  8. package/lib/browser/change-set-file-element-deserializer.d.ts.map +1 -0
  9. package/lib/browser/change-set-file-element-deserializer.js +61 -0
  10. package/lib/browser/change-set-file-element-deserializer.js.map +1 -0
  11. package/lib/browser/change-set-file-element.d.ts +2 -0
  12. package/lib/browser/change-set-file-element.d.ts.map +1 -1
  13. package/lib/browser/change-set-file-element.js +17 -0
  14. package/lib/browser/change-set-file-element.js.map +1 -1
  15. package/lib/browser/chat-session-store-impl.d.ts +36 -0
  16. package/lib/browser/chat-session-store-impl.d.ts.map +1 -0
  17. package/lib/browser/chat-session-store-impl.js +287 -0
  18. package/lib/browser/chat-session-store-impl.js.map +1 -0
  19. package/lib/common/change-set-element-deserializer.d.ts +30 -0
  20. package/lib/common/change-set-element-deserializer.d.ts.map +1 -0
  21. package/lib/common/change-set-element-deserializer.js +81 -0
  22. package/lib/common/change-set-element-deserializer.js.map +1 -0
  23. package/lib/common/change-set.d.ts +7 -0
  24. package/lib/common/change-set.d.ts.map +1 -1
  25. package/lib/common/change-set.js.map +1 -1
  26. package/lib/common/chat-auto-save.spec.d.ts +2 -0
  27. package/lib/common/chat-auto-save.spec.d.ts.map +1 -0
  28. package/lib/common/chat-auto-save.spec.js +304 -0
  29. package/lib/common/chat-auto-save.spec.js.map +1 -0
  30. package/lib/common/chat-content-deserializer.d.ts +161 -0
  31. package/lib/common/chat-content-deserializer.d.ts.map +1 -0
  32. package/lib/common/chat-content-deserializer.js +166 -0
  33. package/lib/common/chat-content-deserializer.js.map +1 -0
  34. package/lib/common/chat-content-deserializer.spec.d.ts +2 -0
  35. package/lib/common/chat-content-deserializer.spec.d.ts.map +1 -0
  36. package/lib/common/chat-content-deserializer.spec.js +307 -0
  37. package/lib/common/chat-content-deserializer.spec.js.map +1 -0
  38. package/lib/common/chat-model-serialization.d.ts +110 -0
  39. package/lib/common/chat-model-serialization.d.ts.map +1 -0
  40. package/lib/common/chat-model-serialization.js +20 -0
  41. package/lib/common/chat-model-serialization.js.map +1 -0
  42. package/lib/common/chat-model-serialization.spec.d.ts +2 -0
  43. package/lib/common/chat-model-serialization.spec.d.ts.map +1 -0
  44. package/lib/common/chat-model-serialization.spec.js +278 -0
  45. package/lib/common/chat-model-serialization.spec.js.map +1 -0
  46. package/lib/common/chat-model.d.ts +163 -14
  47. package/lib/common/chat-model.d.ts.map +1 -1
  48. package/lib/common/chat-model.js +444 -36
  49. package/lib/common/chat-model.js.map +1 -1
  50. package/lib/common/chat-service-deletion.spec.d.ts +2 -0
  51. package/lib/common/chat-service-deletion.spec.d.ts.map +1 -0
  52. package/lib/common/chat-service-deletion.spec.js +221 -0
  53. package/lib/common/chat-service-deletion.spec.js.map +1 -0
  54. package/lib/common/chat-service.d.ts +30 -2
  55. package/lib/common/chat-service.d.ts.map +1 -1
  56. package/lib/common/chat-service.js +182 -10
  57. package/lib/common/chat-service.js.map +1 -1
  58. package/lib/common/chat-session-store.d.ts +43 -0
  59. package/lib/common/chat-session-store.d.ts.map +1 -0
  60. package/lib/common/chat-session-store.js +20 -0
  61. package/lib/common/chat-session-store.js.map +1 -0
  62. package/lib/common/index.d.ts +3 -0
  63. package/lib/common/index.d.ts.map +1 -1
  64. package/lib/common/index.js +3 -0
  65. package/lib/common/index.js.map +1 -1
  66. package/package.json +9 -9
  67. package/src/browser/agent-delegation-tool.ts +4 -2
  68. package/src/browser/ai-chat-frontend-module.ts +27 -0
  69. package/src/browser/change-set-file-element-deserializer.ts +62 -0
  70. package/src/browser/change-set-file-element.ts +19 -0
  71. package/src/browser/chat-session-store-impl.ts +326 -0
  72. package/src/common/change-set-element-deserializer.ts +90 -0
  73. package/src/common/change-set.ts +8 -0
  74. package/src/common/chat-auto-save.spec.ts +372 -0
  75. package/src/common/chat-content-deserializer.spec.ts +375 -0
  76. package/src/common/chat-content-deserializer.ts +327 -0
  77. package/src/common/chat-model-serialization.spec.ts +343 -0
  78. package/src/common/chat-model-serialization.ts +133 -0
  79. package/src/common/chat-model.ts +644 -41
  80. package/src/common/chat-service-deletion.spec.ts +269 -0
  81. package/src/common/chat-service.ts +227 -10
  82. package/src/common/chat-session-store.ts +63 -0
  83. package/src/common/index.ts +3 -0
@@ -32,6 +32,10 @@ const chat_model_1 = require("./chat-model");
32
32
  const chat_request_parser_1 = require("./chat-request-parser");
33
33
  const chat_session_naming_service_1 = require("./chat-session-naming-service");
34
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");
35
39
  function isActiveSessionChangedEvent(obj) {
36
40
  // eslint-disable-next-line no-null/no-null
37
41
  return typeof obj === 'object' && obj !== null && 'type' in obj && obj.type === 'activeChange';
@@ -74,29 +78,40 @@ let ChatServiceImpl = class ChatServiceImpl {
74
78
  const model = new chat_model_1.MutableChatModel(location);
75
79
  const session = {
76
80
  id: model.id,
81
+ lastInteraction: new Date(),
77
82
  model,
78
83
  isActive: true,
79
84
  pinnedAgent
80
85
  };
81
86
  this._sessions.push(session);
87
+ this.setupAutoSaveForSession(session);
82
88
  this.setActiveSession(session.id, options);
83
89
  this.onSessionEventEmitter.fire({ type: 'created', sessionId: session.id });
84
90
  return session;
85
91
  }
86
- deleteSession(sessionId) {
92
+ async deleteSession(sessionId) {
87
93
  var _a;
88
94
  const sessionIndex = this._sessions.findIndex(candidate => candidate.id === sessionId);
89
- if (sessionIndex === -1) {
90
- return;
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 });
91
105
  }
92
- const session = this._sessions[sessionIndex];
93
- // If the removed session is the active one, set the newest one as active
94
- if (session.isActive) {
95
- this.setActiveSession((_a = this._sessions[this._sessions.length - 1]) === null || _a === void 0 ? void 0 : _a.id);
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
+ }
96
114
  }
97
- session.model.dispose();
98
- this._sessions.splice(sessionIndex, 1);
99
- this.onSessionEventEmitter.fire({ type: 'deleted', sessionId: sessionId });
100
115
  }
101
116
  getActiveSession() {
102
117
  const activeSessions = this._sessions.filter(candidate => candidate.isActive);
@@ -177,6 +192,8 @@ let ChatServiceImpl = class ChatServiceImpl {
177
192
  namingService.generateChatSessionName(session, otherSessionNames).then(name => {
178
193
  if (name && session.title === requestText) {
179
194
  session.title = name;
195
+ // Trigger persistence when title changes
196
+ this.saveSession(session.id);
180
197
  }
181
198
  didGenerateName = true;
182
199
  }).catch(error => this.logger.error('Failed to generate chat session name', error));
@@ -258,6 +275,148 @@ let ChatServiceImpl = class ChatServiceImpl {
258
275
  var _a;
259
276
  (_a = this.getSession(sessionId)) === null || _a === void 0 ? void 0 : _a.model.changeSet.removeElements(uri);
260
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
+ }
261
420
  };
262
421
  exports.ChatServiceImpl = ChatServiceImpl;
263
422
  tslib_1.__decorate([
@@ -296,6 +455,19 @@ tslib_1.__decorate([
296
455
  (0, inversify_1.inject)(core_1.ILogger),
297
456
  tslib_1.__metadata("design:type", Object)
298
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);
299
471
  exports.ChatServiceImpl = ChatServiceImpl = tslib_1.__decorate([
300
472
  (0, inversify_1.injectable)()
301
473
  ], 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,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,43 @@
1
+ import { ChatModel } from './chat-model';
2
+ import { SerializedChatData } from './chat-model-serialization';
3
+ import { ChatAgentLocation } from './chat-agents';
4
+ export declare const ChatSessionStore: unique symbol;
5
+ export interface ChatModelWithMetadata {
6
+ model: ChatModel;
7
+ title?: string;
8
+ pinnedAgentId?: string;
9
+ }
10
+ export interface ChatSessionStore {
11
+ /**
12
+ * Stores the handed over sessions.
13
+ *
14
+ * Might overwrite existing sessions when maximum storage capacity is exceeded.
15
+ */
16
+ storeSessions(...sessions: Array<ChatModel | ChatModelWithMetadata>): Promise<void>;
17
+ /**
18
+ * Read specified session
19
+ */
20
+ readSession(sessionId: string): Promise<SerializedChatData | undefined>;
21
+ /**
22
+ * Delete specified session
23
+ */
24
+ deleteSession(sessionId: string): Promise<void>;
25
+ /**
26
+ * Deletes all sessions
27
+ */
28
+ clearAllSessions(): Promise<void>;
29
+ /**
30
+ * Get index of all stored sessions
31
+ */
32
+ getSessionIndex(): Promise<ChatSessionIndex>;
33
+ }
34
+ export interface ChatSessionIndex {
35
+ [sessionId: string]: ChatSessionMetadata;
36
+ }
37
+ export interface ChatSessionMetadata {
38
+ sessionId: string;
39
+ title: string;
40
+ saveDate: number;
41
+ location: ChatAgentLocation;
42
+ }
43
+ //# sourceMappingURL=chat-session-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-session-store.d.ts","sourceRoot":"","sources":["../../src/common/chat-session-store.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,eAAO,MAAM,gBAAgB,eAA6B,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;;OAIG;IACH,aAAa,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IACxE;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC;;OAEG;IACH,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC7B,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;CAC/B"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ChatSessionStore = void 0;
19
+ exports.ChatSessionStore = Symbol('ChatSessionStore');
20
+ //# sourceMappingURL=chat-session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-session-store.js","sourceRoot":"","sources":["../../src/common/chat-session-store.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;;;AAMnE,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC"}
@@ -1,9 +1,12 @@
1
1
  export * from './chat-agents';
2
2
  export * from './chat-agent-service';
3
3
  export * from './chat-model';
4
+ export * from './chat-model-serialization';
5
+ export * from './chat-content-deserializer';
4
6
  export * from './chat-model-util';
5
7
  export * from './chat-request-parser';
6
8
  export * from './chat-service';
9
+ export * from './chat-session-store';
7
10
  export * from './custom-chat-agent';
8
11
  export * from './parsed-chat-request';
9
12
  export * from './context-variables';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAeA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAeA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
@@ -19,9 +19,12 @@ const tslib_1 = require("tslib");
19
19
  tslib_1.__exportStar(require("./chat-agents"), exports);
20
20
  tslib_1.__exportStar(require("./chat-agent-service"), exports);
21
21
  tslib_1.__exportStar(require("./chat-model"), exports);
22
+ tslib_1.__exportStar(require("./chat-model-serialization"), exports);
23
+ tslib_1.__exportStar(require("./chat-content-deserializer"), exports);
22
24
  tslib_1.__exportStar(require("./chat-model-util"), exports);
23
25
  tslib_1.__exportStar(require("./chat-request-parser"), exports);
24
26
  tslib_1.__exportStar(require("./chat-service"), exports);
27
+ tslib_1.__exportStar(require("./chat-session-store"), exports);
25
28
  tslib_1.__exportStar(require("./custom-chat-agent"), exports);
26
29
  tslib_1.__exportStar(require("./parsed-chat-request"), exports);
27
30
  tslib_1.__exportStar(require("./context-variables"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.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,wDAA8B;AAC9B,+DAAqC;AACrC,uDAA6B;AAC7B,4DAAkC;AAClC,gEAAsC;AACtC,yDAA+B;AAC/B,8DAAoC;AACpC,gEAAsC;AACtC,8DAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.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,wDAA8B;AAC9B,+DAAqC;AACrC,uDAA6B;AAC7B,qEAA2C;AAC3C,sEAA4C;AAC5C,4DAAkC;AAClC,gEAAsC;AACtC,yDAA+B;AAC/B,+DAAqC;AACrC,8DAAoC;AACpC,gEAAsC;AACtC,8DAAoC"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@theia/ai-chat",
3
- "version": "1.66.0-next.67+6fae23c43",
3
+ "version": "1.66.0-next.80+623c098dc",
4
4
  "description": "Theia - AI Chat Extension",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.66.0-next.67+6fae23c43",
7
- "@theia/core": "1.66.0-next.67+6fae23c43",
8
- "@theia/editor": "1.66.0-next.67+6fae23c43",
9
- "@theia/file-search": "1.66.0-next.67+6fae23c43",
10
- "@theia/filesystem": "1.66.0-next.67+6fae23c43",
11
- "@theia/monaco": "1.66.0-next.67+6fae23c43",
6
+ "@theia/ai-core": "1.66.0-next.80+623c098dc",
7
+ "@theia/core": "1.66.0-next.80+623c098dc",
8
+ "@theia/editor": "1.66.0-next.80+623c098dc",
9
+ "@theia/file-search": "1.66.0-next.80+623c098dc",
10
+ "@theia/filesystem": "1.66.0-next.80+623c098dc",
11
+ "@theia/monaco": "1.66.0-next.80+623c098dc",
12
12
  "@theia/monaco-editor-core": "1.96.302",
13
- "@theia/workspace": "1.66.0-next.67+6fae23c43",
13
+ "@theia/workspace": "1.66.0-next.80+623c098dc",
14
14
  "js-yaml": "^4.1.0",
15
15
  "tslib": "^2.6.2"
16
16
  },
@@ -54,5 +54,5 @@
54
54
  "nyc": {
55
55
  "extends": "../../configs/nyc.json"
56
56
  },
57
- "gitHead": "6fae23c43f4e850ef4dd6f7c85aa0422077f70e2"
57
+ "gitHead": "623c098dc2e331499458d2bdcc67792919335d9c"
58
58
  }
@@ -172,9 +172,11 @@ export class AgentDelegationTool implements ToolProvider {
172
172
  const result = await response.responseCompleted;
173
173
  const stringResult = result.response.asString();
174
174
 
175
- // Clean up the session after completion
175
+ // Clean up the session after completion (no need to await)
176
176
  const chatService = this.getChatService();
177
- chatService.deleteSession(newSession.id);
177
+ chatService.deleteSession(newSession.id).catch(error => {
178
+ console.error('Failed to delete delegated session', error);
179
+ });
178
180
 
179
181
  // Return the raw text to the top-level Agent, as a tool result
180
182
  return stringResult;
@@ -59,10 +59,37 @@ import { ImageContextVariableContribution } from './image-context-variable-contr
59
59
  import { AgentDelegationTool } from './agent-delegation-tool';
60
60
  import { ToolConfirmationManager } from './chat-tool-preference-bindings';
61
61
  import { bindChatToolPreferences } from '../common/chat-tool-preferences';
62
+ import { ChatSessionStore } from '../common/chat-session-store';
63
+ import { ChatSessionStoreImpl } from './chat-session-store-impl';
64
+ import {
65
+ ChatContentDeserializerContribution,
66
+ ChatContentDeserializerRegistry,
67
+ ChatContentDeserializerRegistryImpl,
68
+ DefaultChatContentDeserializerContribution
69
+ } from '../common/chat-content-deserializer';
70
+ import {
71
+ ChangeSetElementDeserializerContribution,
72
+ ChangeSetElementDeserializerRegistry,
73
+ ChangeSetElementDeserializerRegistryImpl
74
+ } from '../common/change-set-element-deserializer';
75
+ import { ChangeSetFileElementDeserializerContribution } from './change-set-file-element-deserializer';
62
76
 
63
77
  export default new ContainerModule(bind => {
64
78
  bindContributionProvider(bind, ChatAgent);
65
79
 
80
+ bind(ChatContentDeserializerRegistryImpl).toSelf().inSingletonScope();
81
+ bind(ChatContentDeserializerRegistry).toService(ChatContentDeserializerRegistryImpl);
82
+ bindContributionProvider(bind, ChatContentDeserializerContribution);
83
+ bind(ChatContentDeserializerContribution).to(DefaultChatContentDeserializerContribution).inSingletonScope();
84
+
85
+ bind(ChangeSetElementDeserializerRegistryImpl).toSelf().inSingletonScope();
86
+ bind(ChangeSetElementDeserializerRegistry).toService(ChangeSetElementDeserializerRegistryImpl);
87
+ bindContributionProvider(bind, ChangeSetElementDeserializerContribution);
88
+ bind(ChangeSetElementDeserializerContribution).to(ChangeSetFileElementDeserializerContribution).inSingletonScope();
89
+
90
+ bind(ChatSessionStoreImpl).toSelf().inSingletonScope();
91
+ bind(ChatSessionStore).toService(ChatSessionStoreImpl);
92
+
66
93
  bind(FrontendChatToolRequestService).toSelf().inSingletonScope();
67
94
  bind(ChatToolRequestService).toService(FrontendChatToolRequestService);
68
95
 
@@ -0,0 +1,62 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { inject, injectable } from '@theia/core/shared/inversify';
18
+ import { URI } from '@theia/core';
19
+ import { ChangeSetElement } from '../common/change-set';
20
+ import { ChangeSetElementDeserializerContribution, ChangeSetElementDeserializerRegistry, ChangeSetDeserializationContext } from '../common/change-set-element-deserializer';
21
+ import { SerializableChangeSetElement, SerializableChangeSetFileElementData } from '../common/chat-model-serialization';
22
+ import { ChangeSetElementArgs, ChangeSetFileElementFactory } from './change-set-file-element';
23
+
24
+ @injectable()
25
+ export class ChangeSetFileElementDeserializerContribution implements ChangeSetElementDeserializerContribution {
26
+
27
+ @inject(ChangeSetFileElementFactory)
28
+ protected readonly fileElementFactory: ChangeSetFileElementFactory;
29
+
30
+ registerDeserializers(registry: ChangeSetElementDeserializerRegistry): void {
31
+ registry.register({
32
+ kind: 'file',
33
+ deserialize: async (serialized: SerializableChangeSetElement, context: ChangeSetDeserializationContext): Promise<ChangeSetElement> => {
34
+ const fileData = serialized.data as SerializableChangeSetFileElementData | undefined;
35
+
36
+ // Create ChangeSetElementArgs with all the necessary data
37
+ const args: ChangeSetElementArgs = {
38
+ uri: new URI(serialized.uri),
39
+ chatSessionId: context.chatSessionId,
40
+ requestId: context.requestId,
41
+ name: serialized.name,
42
+ icon: serialized.icon,
43
+ additionalInfo: serialized.additionalInfo,
44
+ state: serialized.state,
45
+ type: serialized.type,
46
+ data: serialized.data,
47
+ targetState: fileData?.targetState,
48
+ originalState: fileData?.originalState,
49
+ replacements: fileData?.replacements
50
+ };
51
+
52
+ // Create the element using the factory
53
+ const element = this.fileElementFactory(args);
54
+
55
+ // Ensure it's initialized before returning
56
+ await element.ensureInitialized();
57
+
58
+ return element;
59
+ }
60
+ });
61
+ }
62
+ }
@@ -33,6 +33,7 @@ import { MonacoTextModelService } from '@theia/monaco/lib/browser/monaco-text-mo
33
33
  import { insertFinalNewline } from '@theia/monaco/lib/browser/monaco-utilities';
34
34
  import { MonacoEditorModel } from '@theia/monaco/lib/browser/monaco-editor-model';
35
35
  import { ChangeSetElement } from '../common';
36
+ import { SerializableChangeSetElement } from '../common/chat-model-serialization';
36
37
  import { createChangeSetFileUri } from './change-set-file-resource';
37
38
  import { ChangeSetFileService } from './change-set-file-service';
38
39
  import { Deferred } from '@theia/core/lib/common/promise-util';
@@ -464,6 +465,24 @@ export class ChangeSetFileElement implements ChangeSetElement {
464
465
  return !!answer;
465
466
  }
466
467
 
468
+ toSerializable(): SerializableChangeSetElement {
469
+ return {
470
+ kind: 'file',
471
+ uri: this.uri.toString(),
472
+ name: this.name,
473
+ icon: this.icon,
474
+ additionalInfo: this.additionalInfo,
475
+ state: this.state,
476
+ type: this.type,
477
+ data: {
478
+ ...this.data,
479
+ targetState: this.elementProps.targetState,
480
+ originalState: this._originalContent,
481
+ replacements: this.replacements
482
+ }
483
+ };
484
+ }
485
+
467
486
  dispose(): void {
468
487
  this.toDispose.dispose();
469
488
  }