@theia/ai-history 1.62.0-next.3 → 1.63.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/lib/browser/ai-history-contribution.d.ts +9 -1
  2. package/lib/browser/ai-history-contribution.d.ts.map +1 -1
  3. package/lib/browser/ai-history-contribution.js +102 -4
  4. package/lib/browser/ai-history-contribution.js.map +1 -1
  5. package/lib/browser/ai-history-exchange-card.d.ts +11 -0
  6. package/lib/browser/ai-history-exchange-card.d.ts.map +1 -0
  7. package/lib/browser/ai-history-exchange-card.js +132 -0
  8. package/lib/browser/ai-history-exchange-card.js.map +1 -0
  9. package/lib/browser/ai-history-frontend-module.d.ts.map +1 -1
  10. package/lib/browser/ai-history-frontend-module.js +0 -4
  11. package/lib/browser/ai-history-frontend-module.js.map +1 -1
  12. package/lib/browser/ai-history-widget.d.ts +17 -5
  13. package/lib/browser/ai-history-widget.d.ts.map +1 -1
  14. package/lib/browser/ai-history-widget.js +50 -30
  15. package/lib/browser/ai-history-widget.js.map +1 -1
  16. package/lib/common/index.d.ts +0 -1
  17. package/lib/common/index.d.ts.map +1 -1
  18. package/lib/common/index.js +0 -4
  19. package/lib/common/index.js.map +1 -1
  20. package/lib/package.spec.d.ts +1 -0
  21. package/lib/package.spec.d.ts.map +1 -0
  22. package/lib/package.spec.js +26 -0
  23. package/lib/package.spec.js.map +1 -0
  24. package/package.json +9 -8
  25. package/src/browser/ai-history-contribution.ts +107 -3
  26. package/src/browser/ai-history-exchange-card.tsx +243 -0
  27. package/src/browser/ai-history-frontend-module.ts +0 -5
  28. package/src/browser/ai-history-widget.tsx +74 -31
  29. package/src/browser/style/ai-history.css +145 -60
  30. package/src/common/index.ts +0 -1
  31. package/src/package.spec.ts +28 -0
  32. package/lib/browser/ai-history-communication-card.d.ts +0 -8
  33. package/lib/browser/ai-history-communication-card.d.ts.map +0 -1
  34. package/lib/browser/ai-history-communication-card.js +0 -71
  35. package/lib/browser/ai-history-communication-card.js.map +0 -1
  36. package/lib/common/communication-recording-service.d.ts +0 -18
  37. package/lib/common/communication-recording-service.d.ts.map +0 -1
  38. package/lib/common/communication-recording-service.js +0 -74
  39. package/lib/common/communication-recording-service.js.map +0 -1
  40. package/lib/common/communication-recording-service.spec.d.ts +0 -2
  41. package/lib/common/communication-recording-service.spec.d.ts.map +0 -1
  42. package/lib/common/communication-recording-service.spec.js +0 -43
  43. package/lib/common/communication-recording-service.spec.js.map +0 -1
  44. package/src/browser/ai-history-communication-card.tsx +0 -103
  45. package/src/common/communication-recording-service.spec.ts +0 -63
  46. package/src/common/communication-recording-service.ts +0 -97
@@ -7,11 +7,19 @@ export declare const AI_HISTORY_TOGGLE_COMMAND_ID = "aiHistory:toggle";
7
7
  export declare const OPEN_AI_HISTORY_VIEW: Command;
8
8
  export declare const AI_HISTORY_VIEW_SORT_CHRONOLOGICALLY: Command;
9
9
  export declare const AI_HISTORY_VIEW_SORT_REVERSE_CHRONOLOGICALLY: Command;
10
+ export declare const AI_HISTORY_VIEW_TOGGLE_COMPACT: Command;
11
+ export declare const AI_HISTORY_VIEW_TOGGLE_RAW: Command;
12
+ export declare const AI_HISTORY_VIEW_TOGGLE_RENDER_NEWLINES: Command;
13
+ export declare const AI_HISTORY_VIEW_TOGGLE_HIDE_NEWLINES: Command;
10
14
  export declare const AI_HISTORY_VIEW_CLEAR: Command;
11
15
  export declare class AIHistoryViewContribution extends AIViewContribution<AIHistoryView> implements TabBarToolbarContribution {
12
- private recordingService;
16
+ private languageModelService;
13
17
  protected readonly chronologicalChangedEmitter: Emitter<void>;
14
18
  protected readonly chronologicalStateChanged: import("@theia/core").Event<void>;
19
+ protected readonly compactViewChangedEmitter: Emitter<void>;
20
+ protected readonly compactViewStateChanged: import("@theia/core").Event<void>;
21
+ protected readonly renderNewlinesChangedEmitter: Emitter<void>;
22
+ protected readonly renderNewlinesStateChanged: import("@theia/core").Event<void>;
15
23
  constructor();
16
24
  initializeLayout(_app: FrontendApplication): Promise<void>;
17
25
  registerCommands(registry: CommandRegistry): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-history-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAW,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAGjH,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,SAG/B,CAAC;AAEH,eAAO,MAAM,oCAAoC,SAI/C,CAAC;AAEH,eAAO,MAAM,4CAA4C,SAIvD,CAAC;AAEH,eAAO,MAAM,qBAAqB,SAIhC,CAAC;AAEH,qBACa,yBAA0B,SAAQ,kBAAkB,CAAC,aAAa,CAAE,YAAW,yBAAyB;IAC1E,OAAO,CAAC,gBAAgB,CAAgC;IAE/F,SAAS,CAAC,QAAQ,CAAC,2BAA2B,gBAAuB;IACrE,SAAS,CAAC,QAAQ,CAAC,yBAAyB,oCAA0C;;IAchF,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAgCnD,YAAY,IAAI,IAAI;IAI3B,SAAS,CAAC,iBAAiB,CACvB,MAAM,GAAE,OAA6B,EACrC,SAAS,GAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAoB,GAC3D,OAAO,GAAG,KAAK;IAIlB,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CAsB9D"}
1
+ {"version":3,"file":"ai-history-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAW,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAIjH,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,oBAAoB,SAG/B,CAAC;AAEH,eAAO,MAAM,oCAAoC,SAI/C,CAAC;AAEH,eAAO,MAAM,4CAA4C,SAIvD,CAAC;AAEH,eAAO,MAAM,8BAA8B,SAIzC,CAAC;AAEH,eAAO,MAAM,0BAA0B,SAIrC,CAAC;AAEH,eAAO,MAAM,sCAAsC,SAIjD,CAAC;AAEH,eAAO,MAAM,oCAAoC,SAI/C,CAAC;AAEH,eAAO,MAAM,qBAAqB,SAIhC,CAAC;AAEH,qBACa,yBAA0B,SAAQ,kBAAkB,CAAC,aAAa,CAAE,YAAW,yBAAyB;IACnF,OAAO,CAAC,oBAAoB,CAAuB;IAEjF,SAAS,CAAC,QAAQ,CAAC,2BAA2B,gBAAuB;IACrE,SAAS,CAAC,QAAQ,CAAC,yBAAyB,oCAA0C;IAEtF,SAAS,CAAC,QAAQ,CAAC,yBAAyB,gBAAuB;IACnE,SAAS,CAAC,QAAQ,CAAC,uBAAuB,oCAAwC;IAElF,SAAS,CAAC,QAAQ,CAAC,4BAA4B,gBAAuB;IACtE,SAAS,CAAC,QAAQ,CAAC,0BAA0B,oCAA2C;;IAclF,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAoEnD,YAAY,IAAI,IAAI;IAI3B,SAAS,CAAC,iBAAiB,CACvB,MAAM,GAAE,OAA6B,EACrC,SAAS,GAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAoB,GAC3D,OAAO,GAAG,KAAK;IAIlB,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CA2D9D"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AIHistoryViewContribution = exports.AI_HISTORY_VIEW_CLEAR = exports.AI_HISTORY_VIEW_SORT_REVERSE_CHRONOLOGICALLY = exports.AI_HISTORY_VIEW_SORT_CHRONOLOGICALLY = exports.OPEN_AI_HISTORY_VIEW = exports.AI_HISTORY_TOGGLE_COMMAND_ID = void 0;
3
+ exports.AIHistoryViewContribution = exports.AI_HISTORY_VIEW_CLEAR = exports.AI_HISTORY_VIEW_TOGGLE_HIDE_NEWLINES = exports.AI_HISTORY_VIEW_TOGGLE_RENDER_NEWLINES = exports.AI_HISTORY_VIEW_TOGGLE_RAW = exports.AI_HISTORY_VIEW_TOGGLE_COMPACT = exports.AI_HISTORY_VIEW_SORT_REVERSE_CHRONOLOGICALLY = exports.AI_HISTORY_VIEW_SORT_CHRONOLOGICALLY = exports.OPEN_AI_HISTORY_VIEW = exports.AI_HISTORY_TOGGLE_COMMAND_ID = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  // *****************************************************************************
6
6
  // Copyright (C) 2024 EclipseSource GmbH.
@@ -23,6 +23,7 @@ const inversify_1 = require("@theia/core/shared/inversify");
23
23
  const ai_history_widget_1 = require("./ai-history-widget");
24
24
  const core_1 = require("@theia/core");
25
25
  const ai_core_1 = require("@theia/ai-core");
26
+ const chat_view_widget_1 = require("@theia/ai-chat-ui/lib/browser/chat-view-widget");
26
27
  exports.AI_HISTORY_TOGGLE_COMMAND_ID = 'aiHistory:toggle';
27
28
  exports.OPEN_AI_HISTORY_VIEW = core_1.Command.toLocalizedCommand({
28
29
  id: 'aiHistory:open',
@@ -38,6 +39,26 @@ exports.AI_HISTORY_VIEW_SORT_REVERSE_CHRONOLOGICALLY = core_1.Command.toLocalize
38
39
  label: 'AI History: Sort reverse chronologically',
39
40
  iconClass: (0, browser_1.codicon)('arrow-up')
40
41
  });
42
+ exports.AI_HISTORY_VIEW_TOGGLE_COMPACT = core_1.Command.toLocalizedCommand({
43
+ id: 'aiHistory:toggleCompact',
44
+ label: 'AI History: Toggle compact view',
45
+ iconClass: (0, browser_1.codicon)('list-flat')
46
+ });
47
+ exports.AI_HISTORY_VIEW_TOGGLE_RAW = core_1.Command.toLocalizedCommand({
48
+ id: 'aiHistory:toggleRaw',
49
+ label: 'AI History: Toggle raw view',
50
+ iconClass: (0, browser_1.codicon)('list-tree')
51
+ });
52
+ exports.AI_HISTORY_VIEW_TOGGLE_RENDER_NEWLINES = core_1.Command.toLocalizedCommand({
53
+ id: 'aiHistory:toggleRenderNewlines',
54
+ label: 'AI History: Interpret newlines',
55
+ iconClass: (0, browser_1.codicon)('newline')
56
+ });
57
+ exports.AI_HISTORY_VIEW_TOGGLE_HIDE_NEWLINES = core_1.Command.toLocalizedCommand({
58
+ id: 'aiHistory:toggleHideNewlines',
59
+ label: 'AI History: Stop interpreting newlines',
60
+ iconClass: (0, browser_1.codicon)('no-newline')
61
+ });
41
62
  exports.AI_HISTORY_VIEW_CLEAR = core_1.Command.toLocalizedCommand({
42
63
  id: 'aiHistory:clear',
43
64
  label: 'AI History: Clear History',
@@ -56,6 +77,10 @@ let AIHistoryViewContribution = class AIHistoryViewContribution extends browser_
56
77
  });
57
78
  this.chronologicalChangedEmitter = new core_1.Emitter();
58
79
  this.chronologicalStateChanged = this.chronologicalChangedEmitter.event;
80
+ this.compactViewChangedEmitter = new core_1.Emitter();
81
+ this.compactViewStateChanged = this.compactViewChangedEmitter.event;
82
+ this.renderNewlinesChangedEmitter = new core_1.Emitter();
83
+ this.renderNewlinesStateChanged = this.renderNewlinesChangedEmitter.event;
59
84
  }
60
85
  async initializeLayout(_app) {
61
86
  await this.openView();
@@ -83,6 +108,42 @@ let AIHistoryViewContribution = class AIHistoryViewContribution extends browser_
83
108
  return true;
84
109
  })
85
110
  });
111
+ registry.registerCommand(exports.AI_HISTORY_VIEW_TOGGLE_COMPACT, {
112
+ isEnabled: widget => this.withHistoryWidget(widget),
113
+ isVisible: widget => this.withHistoryWidget(widget, historyView => !historyView.isCompactView),
114
+ execute: widget => this.withHistoryWidget(widget, historyView => {
115
+ historyView.toggleCompactView();
116
+ this.compactViewChangedEmitter.fire();
117
+ return true;
118
+ })
119
+ });
120
+ registry.registerCommand(exports.AI_HISTORY_VIEW_TOGGLE_RAW, {
121
+ isEnabled: widget => this.withHistoryWidget(widget),
122
+ isVisible: widget => this.withHistoryWidget(widget, historyView => historyView.isCompactView),
123
+ execute: widget => this.withHistoryWidget(widget, historyView => {
124
+ historyView.toggleCompactView();
125
+ this.compactViewChangedEmitter.fire();
126
+ return true;
127
+ })
128
+ });
129
+ registry.registerCommand(exports.AI_HISTORY_VIEW_TOGGLE_RENDER_NEWLINES, {
130
+ isEnabled: widget => this.withHistoryWidget(widget),
131
+ isVisible: widget => this.withHistoryWidget(widget, historyView => !historyView.isRenderNewlines),
132
+ execute: widget => this.withHistoryWidget(widget, historyView => {
133
+ historyView.toggleRenderNewlines();
134
+ this.renderNewlinesChangedEmitter.fire();
135
+ return true;
136
+ })
137
+ });
138
+ registry.registerCommand(exports.AI_HISTORY_VIEW_TOGGLE_HIDE_NEWLINES, {
139
+ isEnabled: widget => this.withHistoryWidget(widget),
140
+ isVisible: widget => this.withHistoryWidget(widget, historyView => historyView.isRenderNewlines),
141
+ execute: widget => this.withHistoryWidget(widget, historyView => {
142
+ historyView.toggleRenderNewlines();
143
+ this.renderNewlinesChangedEmitter.fire();
144
+ return true;
145
+ })
146
+ });
86
147
  registry.registerCommand(exports.AI_HISTORY_VIEW_CLEAR, {
87
148
  isEnabled: widget => this.withHistoryWidget(widget),
88
149
  isVisible: widget => this.withHistoryWidget(widget),
@@ -93,7 +154,7 @@ let AIHistoryViewContribution = class AIHistoryViewContribution extends browser_
93
154
  });
94
155
  }
95
156
  clearHistory() {
96
- this.recordingService.clearHistory();
157
+ this.languageModelService.sessions = [];
97
158
  }
98
159
  withHistoryWidget(widget = this.tryGetWidget(), predicate = () => true) {
99
160
  return widget instanceof ai_history_widget_1.AIHistoryView ? predicate(widget) : false;
@@ -113,19 +174,56 @@ let AIHistoryViewContribution = class AIHistoryViewContribution extends browser_
113
174
  isVisible: widget => this.withHistoryWidget(widget),
114
175
  onDidChange: this.chronologicalStateChanged
115
176
  });
177
+ registry.registerItem({
178
+ id: exports.AI_HISTORY_VIEW_TOGGLE_COMPACT.id,
179
+ command: exports.AI_HISTORY_VIEW_TOGGLE_COMPACT.id,
180
+ tooltip: core_1.nls.localize('theia/ai/history/toggleCompact/tooltip', 'Show compact view'),
181
+ isVisible: widget => this.withHistoryWidget(widget, historyView => !historyView.isCompactView),
182
+ onDidChange: this.compactViewStateChanged
183
+ });
184
+ registry.registerItem({
185
+ id: exports.AI_HISTORY_VIEW_TOGGLE_RAW.id,
186
+ command: exports.AI_HISTORY_VIEW_TOGGLE_RAW.id,
187
+ tooltip: core_1.nls.localize('theia/ai/history/toggleRaw/tooltip', 'Show raw view'),
188
+ isVisible: widget => this.withHistoryWidget(widget, historyView => historyView.isCompactView),
189
+ onDidChange: this.compactViewStateChanged
190
+ });
191
+ registry.registerItem({
192
+ id: exports.AI_HISTORY_VIEW_TOGGLE_RENDER_NEWLINES.id,
193
+ command: exports.AI_HISTORY_VIEW_TOGGLE_RENDER_NEWLINES.id,
194
+ tooltip: core_1.nls.localize('theia/ai/history/toggleRenderNewlines/tooltip', 'Interpret newlines'),
195
+ isVisible: widget => this.withHistoryWidget(widget, historyView => !historyView.isRenderNewlines),
196
+ onDidChange: this.renderNewlinesStateChanged
197
+ });
198
+ registry.registerItem({
199
+ id: exports.AI_HISTORY_VIEW_TOGGLE_HIDE_NEWLINES.id,
200
+ command: exports.AI_HISTORY_VIEW_TOGGLE_HIDE_NEWLINES.id,
201
+ tooltip: core_1.nls.localize('theia/ai/history/toggleHideNewlines/tooltip', 'Stop interpreting newlines'),
202
+ isVisible: widget => this.withHistoryWidget(widget, historyView => historyView.isRenderNewlines),
203
+ onDidChange: this.renderNewlinesStateChanged
204
+ });
116
205
  registry.registerItem({
117
206
  id: exports.AI_HISTORY_VIEW_CLEAR.id,
118
207
  command: exports.AI_HISTORY_VIEW_CLEAR.id,
119
208
  tooltip: core_1.nls.localize('theia/ai/history/clear/tooltip', 'Clear History of all agents'),
120
209
  isVisible: widget => this.withHistoryWidget(widget)
121
210
  });
211
+ // Register the AI History view command for the chat view
212
+ registry.registerItem({
213
+ id: 'chat-view.' + exports.OPEN_AI_HISTORY_VIEW.id,
214
+ command: exports.OPEN_AI_HISTORY_VIEW.id,
215
+ tooltip: core_1.nls.localize('theia/ai/history/open-history-tooltip', 'Open AI history...'),
216
+ group: 'ai-settings',
217
+ priority: 1,
218
+ isVisible: widget => widget instanceof chat_view_widget_1.ChatViewWidget
219
+ });
122
220
  }
123
221
  };
124
222
  exports.AIHistoryViewContribution = AIHistoryViewContribution;
125
223
  tslib_1.__decorate([
126
- (0, inversify_1.inject)(ai_core_1.CommunicationRecordingService),
224
+ (0, inversify_1.inject)(ai_core_1.LanguageModelService),
127
225
  tslib_1.__metadata("design:type", Object)
128
- ], AIHistoryViewContribution.prototype, "recordingService", void 0);
226
+ ], AIHistoryViewContribution.prototype, "languageModelService", void 0);
129
227
  exports.AIHistoryViewContribution = AIHistoryViewContribution = tslib_1.__decorate([
130
228
  (0, inversify_1.injectable)(),
131
229
  tslib_1.__metadata("design:paramtypes", [])
@@ -1 +1 @@
1
- {"version":3,"file":"ai-history-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-history-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-history-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-history-contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { LanguageModelExchange } from '@theia/ai-core/lib/common/language-model-interaction-model';
3
+ import * as React from '@theia/core/shared/react';
4
+ export interface ExchangeCardProps {
5
+ exchange: LanguageModelExchange;
6
+ selectedAgentId?: string;
7
+ compactView?: boolean;
8
+ renderNewlines?: boolean;
9
+ }
10
+ export declare const ExchangeCard: React.FC<ExchangeCardProps>;
11
+ //# sourceMappingURL=ai-history-exchange-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-history-exchange-card.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-exchange-card.tsx"],"names":[],"mappings":";AAeA,OAAO,EAEH,qBAAqB,EAGxB,MAAM,4DAA4D,CAAC;AAEpE,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAqDlD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6CpD,CAAC"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExchangeCard = void 0;
4
+ const core_1 = require("@theia/core");
5
+ const React = require("@theia/core/shared/react");
6
+ const getTextFromResponse = (response) => {
7
+ // Handle monitored stream response
8
+ if ('parts' in response) {
9
+ let result = '';
10
+ for (const chunk of response.parts) {
11
+ if ('content' in chunk && chunk.content) {
12
+ result += chunk.content;
13
+ }
14
+ }
15
+ return result;
16
+ }
17
+ // Handle text response
18
+ if ('text' in response) {
19
+ return response.text;
20
+ }
21
+ // Handle parsed response
22
+ if ('content' in response) {
23
+ return response.content;
24
+ }
25
+ return JSON.stringify(response);
26
+ };
27
+ const renderTextWithNewlines = (text) => text.split(/\\n|\n/).map((line, i) => (React.createElement(React.Fragment, { key: i },
28
+ i > 0 && React.createElement("br", null),
29
+ line)));
30
+ const formatJson = (data) => {
31
+ try {
32
+ return JSON.stringify(data, undefined, 2);
33
+ }
34
+ catch (error) {
35
+ console.error('Error formatting JSON:', error);
36
+ return 'Error formatting data';
37
+ }
38
+ };
39
+ const formatTimestamp = (timestamp) => timestamp ? new Date(timestamp).toLocaleString(undefined, {
40
+ year: 'numeric',
41
+ month: 'short',
42
+ day: 'numeric',
43
+ hour: '2-digit',
44
+ minute: '2-digit',
45
+ second: '2-digit'
46
+ }) : 'N/A';
47
+ const ExchangeCard = ({ exchange, selectedAgentId, compactView = true, renderNewlines = false }) => {
48
+ const earliestTimestamp = exchange.requests.reduce((earliest, req) => {
49
+ const timestamp = req.metadata.timestamp || 0;
50
+ return timestamp && (!earliest || timestamp < earliest) ? timestamp : earliest;
51
+ }, 0);
52
+ return (React.createElement("div", { className: "theia-card exchange-card", role: "article", "aria-label": `Exchange ${exchange.id}` },
53
+ React.createElement("div", { className: 'theia-card-meta' },
54
+ React.createElement("span", { className: 'theia-card-request-id' },
55
+ core_1.nls.localize('theia/ai/history/exchange-card/exchangeId', 'ID'),
56
+ ": ",
57
+ exchange.id),
58
+ exchange.metadata.agent && (React.createElement("span", { className: 'theia-card-agent-id' },
59
+ core_1.nls.localize('theia/ai/history/exchange-card/agentId', 'Agent'),
60
+ ": ",
61
+ exchange.metadata.agent))),
62
+ React.createElement("div", { className: 'theia-card-content' },
63
+ React.createElement("div", { className: 'requests-container' }, exchange.requests.map((request, index) => (React.createElement(RequestCard, { key: request.id, request: request, index: index, totalRequests: exchange.requests.length, selectedAgentId: selectedAgentId, compactView: compactView, renderNewlines: renderNewlines }))))),
64
+ React.createElement("div", { className: 'theia-card-meta' }, earliestTimestamp > 0 && (React.createElement("span", { className: 'theia-card-timestamp' },
65
+ core_1.nls.localize('theia/ai/history/exchange-card/timestamp', 'Started'),
66
+ ": ",
67
+ formatTimestamp(earliestTimestamp))))));
68
+ };
69
+ exports.ExchangeCard = ExchangeCard;
70
+ const RequestCard = ({ request, index, totalRequests, selectedAgentId, compactView = true, renderNewlines = false }) => {
71
+ const isFromDifferentAgent = selectedAgentId &&
72
+ request.metadata.agent &&
73
+ request.metadata.agent !== selectedAgentId;
74
+ const isStreamResponse = 'parts' in request.response;
75
+ const getRequestContent = () => {
76
+ if (compactView) {
77
+ const content = formatJson(request.request.messages);
78
+ return (React.createElement("div", { className: "compact-response" },
79
+ React.createElement("pre", { className: `formatted-json ${renderNewlines ? 'render-newlines' : ''}` }, renderNewlines ? renderTextWithNewlines(content) : content)));
80
+ }
81
+ else {
82
+ const content = formatJson(request.request);
83
+ return (React.createElement("pre", { className: `formatted-json ${renderNewlines ? 'render-newlines' : ''}` }, renderNewlines ? renderTextWithNewlines(content) : content));
84
+ }
85
+ };
86
+ const getResponseContent = () => {
87
+ if (compactView) {
88
+ const content = getTextFromResponse(request.response);
89
+ return (React.createElement("div", { className: "compact-response" },
90
+ React.createElement("pre", { className: `formatted-json ${renderNewlines ? 'render-newlines' : ''}` }, renderNewlines ? renderTextWithNewlines(content) : content)));
91
+ }
92
+ else if (isStreamResponse) {
93
+ const streamResponse = request.response;
94
+ return streamResponse.parts.map((part, i) => (React.createElement("div", { key: `part-${i}`, className: "stream-part" },
95
+ React.createElement("pre", { className: `formatted-json ${renderNewlines ? 'render-newlines' : ''}` }, renderNewlines ? renderTextWithNewlines(JSON.stringify(part, undefined, 2)) : JSON.stringify(part, undefined, 2)))));
96
+ }
97
+ else {
98
+ const content = formatJson(request.response);
99
+ return (React.createElement("pre", { className: `formatted-json ${renderNewlines ? 'render-newlines' : ''}` }, renderNewlines ? renderTextWithNewlines(content) : content));
100
+ }
101
+ };
102
+ return (React.createElement("div", { className: `request-card ${isFromDifferentAgent ? 'different-agent-opacity' : ''}` },
103
+ React.createElement("div", { className: 'request-header' },
104
+ totalRequests > 1 && (React.createElement("h3", null,
105
+ core_1.nls.localize('theia/ai/history/request-card/title', 'Request'),
106
+ " ",
107
+ index + 1)),
108
+ React.createElement("div", { className: 'request-info' },
109
+ React.createElement("span", { className: 'request-id' },
110
+ "ID: ",
111
+ request.id),
112
+ request.metadata.agent && (React.createElement("span", { className: `request-agent ${isFromDifferentAgent ? 'different-agent-name' : ''}` },
113
+ core_1.nls.localize('theia/ai/history/request-card/agent', 'Agent'),
114
+ ": ",
115
+ request.metadata.agent)),
116
+ React.createElement("span", { className: 'request-model' },
117
+ core_1.nls.localize('theia/ai/history/request-card/model', 'Model'),
118
+ ": ",
119
+ request.languageModel))),
120
+ React.createElement("div", { className: 'request-content-container' },
121
+ React.createElement("details", null,
122
+ React.createElement("summary", null, core_1.nls.localize('theia/ai/history/request-card/request', 'Request')),
123
+ React.createElement("div", { className: 'request-content' }, getRequestContent())),
124
+ React.createElement("details", null,
125
+ React.createElement("summary", null, core_1.nls.localize('theia/ai/history/request-card/response', 'Response')),
126
+ React.createElement("div", { className: 'response-content' }, getResponseContent()))),
127
+ React.createElement("div", { className: 'request-meta' }, request.metadata.timestamp && (React.createElement("span", { className: 'request-timestamp' },
128
+ core_1.nls.localize('theia/ai/history/request-card/timestamp', 'Timestamp'),
129
+ ": ",
130
+ formatTimestamp(request.metadata.timestamp))))));
131
+ };
132
+ //# sourceMappingURL=ai-history-exchange-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-history-exchange-card.js","sourceRoot":"","sources":["../../src/browser/ai-history-exchange-card.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-history-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAK/D,OAAO,wCAAwC,CAAC;;AAGhD,wBAYG"}
1
+ {"version":3,"file":"ai-history-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-frontend-module.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D,OAAO,wCAAwC,CAAC;;AAGhD,wBASG"}
@@ -15,17 +15,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  //
16
16
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
17
17
  // *****************************************************************************
18
- const ai_core_1 = require("@theia/ai-core");
19
18
  const inversify_1 = require("@theia/core/shared/inversify");
20
- const communication_recording_service_1 = require("../common/communication-recording-service");
21
19
  const browser_1 = require("@theia/core/lib/browser");
22
20
  const ai_history_contribution_1 = require("./ai-history-contribution");
23
21
  const ai_history_widget_1 = require("./ai-history-widget");
24
22
  require("../../src/browser/style/ai-history.css");
25
23
  const tab_bar_toolbar_1 = require("@theia/core/lib/browser/shell/tab-bar-toolbar");
26
24
  exports.default = new inversify_1.ContainerModule(bind => {
27
- bind(communication_recording_service_1.DefaultCommunicationRecordingService).toSelf().inSingletonScope();
28
- bind(ai_core_1.CommunicationRecordingService).toService(communication_recording_service_1.DefaultCommunicationRecordingService);
29
25
  (0, browser_1.bindViewContribution)(bind, ai_history_contribution_1.AIHistoryViewContribution);
30
26
  bind(ai_history_widget_1.AIHistoryView).toSelf();
31
27
  bind(browser_1.WidgetFactory).toDynamicValue(context => ({
@@ -1 +1 @@
1
- {"version":3,"file":"ai-history-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-history-frontend-module.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,4CAA+D;AAC/D,4DAA+D;AAC/D,+FAAiG;AACjG,qDAA8E;AAC9E,uEAAsE;AACtE,2DAAoD;AACpD,kDAAgD;AAChD,mFAA0F;AAE1F,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,sEAAoC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvE,IAAI,CAAC,uCAA6B,CAAC,CAAC,SAAS,CAAC,sEAAoC,CAAC,CAAC;IAEpF,IAAA,8BAAoB,EAAC,IAAI,EAAE,mDAAyB,CAAC,CAAC;IAEtD,IAAI,CAAC,iCAAa,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,EAAE,EAAE,iCAAa,CAAC,EAAE;QACpB,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAgB,iCAAa,CAAC;KAC1E,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvB,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,mDAAyB,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ai-history-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-history-frontend-module.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,4DAA+D;AAC/D,qDAA8E;AAC9E,uEAAsE;AACtE,2DAAoD;AACpD,kDAAgD;AAChD,mFAA0F;AAE1F,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAA,8BAAoB,EAAC,IAAI,EAAE,mDAAyB,CAAC,CAAC;IAEtD,IAAI,CAAC,iCAAa,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,EAAE,EAAE,iCAAa,CAAC,EAAE;QACpB,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAgB,iCAAa,CAAC;KAC1E,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvB,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,mDAAyB,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
@@ -1,18 +1,21 @@
1
1
  /// <reference types="react" />
2
- import { Agent, AgentService, CommunicationRecordingService, CommunicationRequestEntry, CommunicationResponseEntry } from '@theia/ai-core';
2
+ import { Agent, AgentService, LanguageModelService, SessionEvent } from '@theia/ai-core';
3
+ import { LanguageModelExchange } from '@theia/ai-core/lib/common/language-model-interaction-model';
3
4
  import { ReactWidget, StatefulWidget } from '@theia/core/lib/browser';
4
5
  import * as React from '@theia/core/shared/react';
5
6
  declare namespace AIHistoryView {
6
7
  interface State {
7
8
  chronological: boolean;
9
+ compactView: boolean;
10
+ renderNewlines: boolean;
11
+ selectedAgentId?: string;
8
12
  }
9
13
  }
10
14
  export declare class AIHistoryView extends ReactWidget implements StatefulWidget {
11
- protected recordingService: CommunicationRecordingService;
15
+ protected languageModelService: LanguageModelService;
12
16
  protected readonly agentService: AgentService;
13
17
  static ID: string;
14
18
  static LABEL: string;
15
- protected selectedAgent?: Agent;
16
19
  protected _state: AIHistoryView.State;
17
20
  constructor();
18
21
  protected get state(): AIHistoryView.State;
@@ -21,12 +24,21 @@ export declare class AIHistoryView extends ReactWidget implements StatefulWidget
21
24
  restoreState(oldState: object & Partial<AIHistoryView.State>): void;
22
25
  protected init(): void;
23
26
  protected selectAgent(agent: Agent | undefined): void;
24
- protected historyContentUpdated(entry: CommunicationRequestEntry | CommunicationResponseEntry): void;
27
+ protected historyContentUpdated(event: SessionEvent): void;
25
28
  render(): React.ReactNode;
26
29
  protected renderHistory(): React.ReactNode;
27
- protected onClick(e: React.MouseEvent<HTMLDivElement>, agent: Agent): void;
30
+ /**
31
+ * Get all exchanges for a specific agent.
32
+ * Includes all exchanges in which the agent is involved, either as the main exchange or as a sub-request.
33
+ * @param agentId The agent ID to filter by
34
+ */
35
+ protected getExchangesByAgent(agentId: string): LanguageModelExchange[];
28
36
  sortHistory(chronological: boolean): void;
37
+ toggleCompactView(): void;
38
+ toggleRenderNewlines(): void;
29
39
  get isChronological(): boolean;
40
+ get isCompactView(): boolean;
41
+ get isRenderNewlines(): boolean;
30
42
  }
31
43
  export {};
32
44
  //# sourceMappingURL=ai-history-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-history-widget.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC3I,OAAO,EAAW,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAKlD,kBAAU,aAAa,CAAC;IACpB,UAAiB,KAAK;QAClB,aAAa,EAAE,OAAO,CAAC;KAC1B;CACJ;AAED,qBACa,aAAc,SAAQ,WAAY,YAAW,cAAc;IAEpE,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAE1D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAE9C,OAAc,EAAE,SAAuB;IACvC,MAAM,CAAC,KAAK,SAA2E;IAEvF,SAAS,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;IAEhC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAA4B;;IAWjE,SAAS,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,CAEzC;IAED,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAG7C;IAED,UAAU,IAAI,MAAM;IAIpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;IASnE,SAAS,CAAC,IAAI,IAAI,IAAI;IAQtB,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI;IAKrD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,GAAG,0BAA0B,GAAG,IAAI;IAMpG,MAAM,IAAI,KAAK,CAAC,SAAS;IA6BzB,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IAgB1C,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKnE,WAAW,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAIhD,IAAI,eAAe,IAAI,OAAO,CAE7B;CACJ"}
1
+ {"version":3,"file":"ai-history-widget.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AACnG,OAAO,EAAW,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAKlD,kBAAU,aAAa,CAAC;IACpB,UAAiB,KAAK;QAClB,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,OAAO,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC5B;CACJ;AAED,qBACa,aAAc,SAAQ,WAAY,YAAW,cAAc;IAEpE,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAErD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAE9C,OAAc,EAAE,SAAuB;IACvC,MAAM,CAAC,KAAK,SAA2E;IAEvF,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAqE;;IAW1G,SAAS,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,CAEzC;IAED,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAG7C;IAED,UAAU,IAAI,MAAM;IAIpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;IAenE,SAAS,CAAC,IAAI,IAAI,IAAI;IAMtB,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI;IAIrD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAI1D,MAAM,IAAI,KAAK,CAAC,SAAS;IA4BzB,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IAgC1C;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAShE,WAAW,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAIzC,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAInC,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;CACJ"}
@@ -22,13 +22,13 @@ const ai_core_1 = require("@theia/ai-core");
22
22
  const browser_1 = require("@theia/core/lib/browser");
23
23
  const inversify_1 = require("@theia/core/shared/inversify");
24
24
  const React = require("@theia/core/shared/react");
25
- const ai_history_communication_card_1 = require("./ai-history-communication-card");
25
+ const ai_history_exchange_card_1 = require("./ai-history-exchange-card");
26
26
  const select_component_1 = require("@theia/core/lib/browser/widgets/select-component");
27
27
  const core_1 = require("@theia/core");
28
28
  let AIHistoryView = AIHistoryView_1 = class AIHistoryView extends browser_1.ReactWidget {
29
29
  constructor() {
30
30
  super();
31
- this._state = { chronological: false };
31
+ this._state = { chronological: false, compactView: true, renderNewlines: true };
32
32
  this.id = AIHistoryView_1.ID;
33
33
  this.title.label = AIHistoryView_1.LABEL;
34
34
  this.title.caption = AIHistoryView_1.LABEL;
@@ -47,33 +47,31 @@ let AIHistoryView = AIHistoryView_1 = class AIHistoryView extends browser_1.Reac
47
47
  }
48
48
  restoreState(oldState) {
49
49
  const copy = (0, core_1.deepClone)(this.state);
50
- if (oldState.chronological) {
50
+ if (oldState.chronological !== undefined) {
51
51
  copy.chronological = oldState.chronological;
52
52
  }
53
+ if (oldState.compactView !== undefined) {
54
+ copy.compactView = oldState.compactView;
55
+ }
56
+ if (oldState.renderNewlines !== undefined) {
57
+ copy.renderNewlines = oldState.renderNewlines;
58
+ }
53
59
  this.state = copy;
54
60
  }
55
61
  init() {
56
62
  this.update();
57
- this.toDispose.push(this.recordingService.onDidRecordRequest(entry => this.historyContentUpdated(entry)));
58
- this.toDispose.push(this.recordingService.onDidRecordResponse(entry => this.historyContentUpdated(entry)));
59
- this.toDispose.push(this.recordingService.onStructuralChange(() => this.update()));
63
+ this.toDispose.push(this.languageModelService.onSessionChanged((event) => this.historyContentUpdated(event)));
60
64
  this.selectAgent(this.agentService.getAllAgents()[0]);
61
65
  }
62
66
  selectAgent(agent) {
63
- this.selectedAgent = agent;
64
- this.update();
67
+ this.state = { ...this.state, selectedAgentId: agent === null || agent === void 0 ? void 0 : agent.id };
65
68
  }
66
- historyContentUpdated(entry) {
67
- var _a;
68
- if (entry.agentId === ((_a = this.selectedAgent) === null || _a === void 0 ? void 0 : _a.id)) {
69
- this.update();
70
- }
69
+ historyContentUpdated(event) {
70
+ this.update();
71
71
  }
72
72
  render() {
73
- var _a;
74
73
  const selectionChange = (value) => {
75
- this.selectedAgent = this.agentService.getAllAgents().find(agent => agent.id === value.value);
76
- this.update();
74
+ this.selectAgent(this.agentService.getAllAgents().find(agent => agent.id === value.value));
77
75
  };
78
76
  const agents = this.agentService.getAllAgents();
79
77
  if (agents.length === 0) {
@@ -85,40 +83,62 @@ let AIHistoryView = AIHistoryView_1 = class AIHistoryView extends browser_1.Reac
85
83
  value: agent.id,
86
84
  label: agent.name,
87
85
  description: agent.description || ''
88
- })), onChange: selectionChange, defaultValue: (_a = this.selectedAgent) === null || _a === void 0 ? void 0 : _a.id }),
86
+ })), onChange: selectionChange, defaultValue: this.state.selectedAgentId }),
89
87
  React.createElement("div", { className: 'agent-history' }, this.renderHistory())));
90
88
  }
91
89
  renderHistory() {
92
- if (!this.selectedAgent) {
90
+ if (!this.state.selectedAgentId) {
93
91
  return React.createElement("div", { className: 'theia-card no-content' }, core_1.nls.localize('theia/ai/history/view/noAgentSelected', 'No agent selected.'));
94
92
  }
95
- const history = [...this.recordingService.getHistory(this.selectedAgent.id)];
96
- if (history.length === 0) {
97
- return React.createElement("div", { className: 'theia-card no-content' }, core_1.nls.localize('theia/ai/history/view/noHistoryForAgent', 'No history available for the selected agent \'{0}\'', this.selectedAgent.name));
93
+ const exchanges = this.getExchangesByAgent(this.state.selectedAgentId);
94
+ if (exchanges.length === 0) {
95
+ const selectedAgent = this.agentService.getAllAgents().find(agent => agent.id === this.state.selectedAgentId);
96
+ return React.createElement("div", { className: 'theia-card no-content' }, core_1.nls.localize('theia/ai/history/view/noHistoryForAgent', 'No history available for the selected agent \'{0}\'', (selectedAgent === null || selectedAgent === void 0 ? void 0 : selectedAgent.name) || this.state.selectedAgentId));
98
97
  }
99
- if (!this.state.chronological) {
100
- history.reverse();
101
- }
102
- return history.map(entry => React.createElement(ai_history_communication_card_1.CommunicationCard, { key: entry.requestId, entry: entry }));
98
+ // Sort exchanges by timestamp (using the first sub-request's timestamp)
99
+ const sortedExchanges = [...exchanges].sort((a, b) => {
100
+ var _a, _b;
101
+ const aTimestamp = ((_a = a.requests[0]) === null || _a === void 0 ? void 0 : _a.metadata.timestamp) || 0;
102
+ const bTimestamp = ((_b = b.requests[0]) === null || _b === void 0 ? void 0 : _b.metadata.timestamp) || 0;
103
+ return this.state.chronological ? aTimestamp - bTimestamp : bTimestamp - aTimestamp;
104
+ });
105
+ return sortedExchanges.map(exchange => (React.createElement(ai_history_exchange_card_1.ExchangeCard, { key: exchange.id, exchange: exchange, selectedAgentId: this.state.selectedAgentId, compactView: this.state.compactView, renderNewlines: this.state.renderNewlines })));
103
106
  }
104
- onClick(e, agent) {
105
- e.stopPropagation();
106
- this.selectAgent(agent);
107
+ /**
108
+ * Get all exchanges for a specific agent.
109
+ * Includes all exchanges in which the agent is involved, either as the main exchange or as a sub-request.
110
+ * @param agentId The agent ID to filter by
111
+ */
112
+ getExchangesByAgent(agentId) {
113
+ return this.languageModelService.sessions.flatMap(session => session.exchanges.filter(exchange => exchange.metadata.agent === agentId ||
114
+ exchange.requests.some(request => request.metadata.agent === agentId)));
107
115
  }
108
116
  sortHistory(chronological) {
109
117
  this.state = { ...(0, core_1.deepClone)(this.state), chronological: chronological };
110
118
  }
119
+ toggleCompactView() {
120
+ this.state = { ...(0, core_1.deepClone)(this.state), compactView: !this.state.compactView };
121
+ }
122
+ toggleRenderNewlines() {
123
+ this.state = { ...(0, core_1.deepClone)(this.state), renderNewlines: !this.state.renderNewlines };
124
+ }
111
125
  get isChronological() {
112
126
  return this.state.chronological === true;
113
127
  }
128
+ get isCompactView() {
129
+ return this.state.compactView === true;
130
+ }
131
+ get isRenderNewlines() {
132
+ return this.state.renderNewlines === true;
133
+ }
114
134
  };
115
135
  exports.AIHistoryView = AIHistoryView;
116
136
  AIHistoryView.ID = 'ai-history-widget';
117
137
  AIHistoryView.LABEL = core_1.nls.localize('theia/ai/history/view/label', 'AI Agent History [Alpha]');
118
138
  tslib_1.__decorate([
119
- (0, inversify_1.inject)(ai_core_1.CommunicationRecordingService),
139
+ (0, inversify_1.inject)(ai_core_1.LanguageModelService),
120
140
  tslib_1.__metadata("design:type", Object)
121
- ], AIHistoryView.prototype, "recordingService", void 0);
141
+ ], AIHistoryView.prototype, "languageModelService", void 0);
122
142
  tslib_1.__decorate([
123
143
  (0, inversify_1.inject)(ai_core_1.AgentService),
124
144
  tslib_1.__metadata("design:type", Object)