@theia/ai-chat-ui 1.55.0 → 1.56.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 (32) hide show
  1. package/lib/browser/ai-chat-ui-contribution.js +1 -1
  2. package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
  3. package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
  4. package/lib/browser/ai-chat-ui-frontend-module.js +2 -0
  5. package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
  6. package/lib/browser/chat-input-widget.js +34 -22
  7. package/lib/browser/chat-input-widget.js.map +1 -1
  8. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +3 -2
  9. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -1
  10. package/lib/browser/chat-response-renderer/markdown-part-renderer.js +5 -3
  11. package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -1
  12. package/lib/browser/chat-response-renderer/question-part-renderer.d.ts +10 -0
  13. package/lib/browser/chat-response-renderer/question-part-renderer.d.ts.map +1 -0
  14. package/lib/browser/chat-response-renderer/question-part-renderer.js +43 -0
  15. package/lib/browser/chat-response-renderer/question-part-renderer.js.map +1 -0
  16. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +2 -0
  17. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -1
  18. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +30 -10
  19. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
  20. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +4 -0
  21. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
  22. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +80 -13
  23. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
  24. package/package.json +11 -11
  25. package/src/browser/ai-chat-ui-contribution.ts +1 -1
  26. package/src/browser/ai-chat-ui-frontend-module.ts +2 -0
  27. package/src/browser/chat-input-widget.tsx +35 -20
  28. package/src/browser/chat-response-renderer/markdown-part-renderer.tsx +5 -3
  29. package/src/browser/chat-response-renderer/question-part-renderer.tsx +59 -0
  30. package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +38 -9
  31. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +134 -11
  32. package/src/browser/style/index.css +58 -1
@@ -26,6 +26,7 @@ const React = require("@theia/core/shared/react");
26
26
  const chat_node_toolbar_action_contribution_1 = require("../chat-node-toolbar-action-contribution");
27
27
  const chat_response_part_renderer_1 = require("../chat-response-part-renderer");
28
28
  const markdown_part_renderer_1 = require("../chat-response-renderer/markdown-part-renderer");
29
+ const ai_core_1 = require("@theia/ai-core");
29
30
  const isRequestNode = (node) => 'request' in node;
30
31
  exports.isRequestNode = isRequestNode;
31
32
  const isResponseNode = (node) => 'response' in node;
@@ -184,21 +185,34 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
184
185
  this.renderDetail(node)));
185
186
  }
186
187
  renderAgent(node) {
188
+ var _a;
187
189
  const inProgress = (0, exports.isResponseNode)(node) && !node.response.isComplete && !node.response.isCanceled && !node.response.isError;
190
+ const waitingForInput = (0, exports.isResponseNode)(node) && node.response.isWaitingForInput;
188
191
  const toolbarContributions = !inProgress
189
192
  ? this.chatNodeToolbarActionContributions.getContributions()
190
193
  .flatMap(c => c.getToolbarActions(node))
191
194
  .filter(action => this.commandRegistry.isEnabled(action.commandId, node))
192
195
  .sort((a, b) => { var _a, _b; return ((_a = a.priority) !== null && _a !== void 0 ? _a : 0) - ((_b = b.priority) !== null && _b !== void 0 ? _b : 0); })
193
196
  : [];
197
+ const agentLabel = React.createRef();
198
+ const agentDescription = (_a = this.getAgent(node)) === null || _a === void 0 ? void 0 : _a.description;
194
199
  return React.createElement(React.Fragment, null,
195
200
  React.createElement("div", { className: 'theia-ChatNodeHeader' },
196
201
  React.createElement("div", { className: `theia-AgentAvatar ${this.getAgentIconClassName(node)}` }),
197
- React.createElement("h3", { className: 'theia-AgentLabel' }, this.getAgentLabel(node)),
202
+ React.createElement("h3", { ref: agentLabel, className: 'theia-AgentLabel', onMouseEnter: () => {
203
+ if (agentDescription) {
204
+ this.hoverService.requestHover({
205
+ content: agentDescription,
206
+ target: agentLabel.current,
207
+ position: 'right'
208
+ });
209
+ }
210
+ } }, this.getAgentLabel(node)),
198
211
  inProgress && React.createElement("span", { className: 'theia-ChatContentInProgress' }, "Generating"),
212
+ inProgress && waitingForInput && React.createElement("span", { className: 'theia-ChatContentInProgress' }, "Waiting for input"),
199
213
  React.createElement("div", { className: 'theia-ChatNodeToolbar' }, !inProgress &&
200
214
  toolbarContributions.length > 0 &&
201
- toolbarContributions.map(action => React.createElement("span", { className: `theia-ChatNodeToolbarAction ${action.icon}`, title: action.tooltip, onClick: e => {
215
+ toolbarContributions.map(action => React.createElement("span", { key: action.commandId, className: `theia-ChatNodeToolbarAction ${action.icon}`, title: action.tooltip, onClick: e => {
202
216
  e.stopPropagation();
203
217
  this.commandRegistry.executeCommand(action.commandId, node);
204
218
  }, onKeyDown: e => {
@@ -209,13 +223,18 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
209
223
  }, role: 'button' })))));
210
224
  }
211
225
  getAgentLabel(node) {
212
- var _a;
226
+ var _a, _b;
213
227
  if ((0, exports.isRequestNode)(node)) {
214
228
  // TODO find user name
215
229
  return 'You';
216
230
  }
217
- const agent = node.response.agentId ? this.chatAgentService.getAgent(node.response.agentId) : undefined;
218
- return (_a = agent === null || agent === void 0 ? void 0 : agent.name) !== null && _a !== void 0 ? _a : 'AI';
231
+ return (_b = (_a = this.getAgent(node)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'AI';
232
+ }
233
+ getAgent(node) {
234
+ if ((0, exports.isRequestNode)(node)) {
235
+ return undefined;
236
+ }
237
+ return node.response.agentId ? this.chatAgentService.getAgent(node.response.agentId) : undefined;
219
238
  }
220
239
  getAgentIconClassName(node) {
221
240
  var _a;
@@ -235,14 +254,23 @@ let ChatViewTreeWidget = ChatViewTreeWidget_1 = class ChatViewTreeWidget extends
235
254
  ;
236
255
  }
237
256
  renderChatRequest(node) {
238
- return React.createElement(ChatRequestRender, { node: node });
257
+ return React.createElement(ChatRequestRender, { node: node, hoverService: this.hoverService, chatAgentService: this.chatAgentService, variableService: this.variableService });
239
258
  }
240
259
  renderChatResponse(node) {
241
260
  return (React.createElement("div", { className: 'theia-ResponseNode' },
242
261
  !node.response.isComplete
243
262
  && node.response.response.content.length === 0
244
- && node.response.progressMessages.map((c, i) => React.createElement(ProgressMessage, { ...c, key: `${node.id}-progress-${i}` })),
245
- node.response.response.content.map((c, i) => React.createElement("div", { className: 'theia-ResponseNode-Content', key: `${node.id}-content-${i}` }, this.getChatResponsePartRenderer(c, node)))));
263
+ && node.response.progressMessages
264
+ .filter(c => c.show === 'untilFirstContent')
265
+ .map((c, i) => React.createElement(ProgressMessage, { ...c, key: `${node.id}-progress-untilFirstContent-${i}` })),
266
+ node.response.response.content.map((c, i) => React.createElement("div", { className: 'theia-ResponseNode-Content', key: `${node.id}-content-${i}` }, this.getChatResponsePartRenderer(c, node))),
267
+ !node.response.isComplete
268
+ && node.response.progressMessages
269
+ .filter(c => c.show === 'whileIncomplete')
270
+ .map((c, i) => React.createElement(ProgressMessage, { ...c, key: `${node.id}-progress-whileIncomplete-${i}` })),
271
+ node.response.progressMessages
272
+ .filter(c => c.show === 'forever')
273
+ .map((c, i) => React.createElement(ProgressMessage, { ...c, key: `${node.id}-progress-afterComplete-${i}` }))));
246
274
  }
247
275
  getChatResponsePartRenderer(content, node) {
248
276
  const renderer = this.chatResponsePartRenderers.getContributions().reduce((prev, current) => {
@@ -284,10 +312,18 @@ tslib_1.__decorate([
284
312
  (0, inversify_1.inject)(ai_chat_1.ChatAgentService),
285
313
  tslib_1.__metadata("design:type", Object)
286
314
  ], ChatViewTreeWidget.prototype, "chatAgentService", void 0);
315
+ tslib_1.__decorate([
316
+ (0, inversify_1.inject)(ai_core_1.AIVariableService),
317
+ tslib_1.__metadata("design:type", Object)
318
+ ], ChatViewTreeWidget.prototype, "variableService", void 0);
287
319
  tslib_1.__decorate([
288
320
  (0, inversify_1.inject)(core_1.CommandRegistry),
289
321
  tslib_1.__metadata("design:type", core_1.CommandRegistry)
290
322
  ], ChatViewTreeWidget.prototype, "commandRegistry", void 0);
323
+ tslib_1.__decorate([
324
+ (0, inversify_1.inject)(browser_1.HoverService),
325
+ tslib_1.__metadata("design:type", browser_1.HoverService)
326
+ ], ChatViewTreeWidget.prototype, "hoverService", void 0);
291
327
  tslib_1.__decorate([
292
328
  (0, inversify_1.postConstruct)(),
293
329
  tslib_1.__metadata("design:type", Function),
@@ -301,11 +337,42 @@ exports.ChatViewTreeWidget = ChatViewTreeWidget = ChatViewTreeWidget_1 = tslib_1
301
337
  tslib_1.__param(2, (0, inversify_1.inject)(browser_1.ContextMenuRenderer)),
302
338
  tslib_1.__metadata("design:paramtypes", [Object, Object, browser_1.ContextMenuRenderer])
303
339
  ], ChatViewTreeWidget);
304
- const ChatRequestRender = ({ node }) => {
305
- var _a;
306
- const text = (_a = node.request.request.displayText) !== null && _a !== void 0 ? _a : node.request.request.text;
307
- const ref = (0, markdown_part_renderer_1.useMarkdownRendering)(text);
308
- return React.createElement("div", { className: 'theia-RequestNode', ref: ref });
340
+ const ChatRequestRender = ({ node, hoverService, chatAgentService, variableService }) => {
341
+ const parts = node.request.message.parts;
342
+ return (React.createElement("div", { className: "theia-RequestNode" },
343
+ React.createElement("p", null, parts.map((part, index) => {
344
+ var _a, _b;
345
+ if (part instanceof ai_chat_1.ParsedChatRequestAgentPart || part instanceof ai_chat_1.ParsedChatRequestVariablePart) {
346
+ let description = undefined;
347
+ let className = '';
348
+ if (part instanceof ai_chat_1.ParsedChatRequestAgentPart) {
349
+ description = (_a = chatAgentService.getAgent(part.agentId)) === null || _a === void 0 ? void 0 : _a.description;
350
+ className = 'theia-RequestNode-AgentLabel';
351
+ }
352
+ else if (part instanceof ai_chat_1.ParsedChatRequestVariablePart) {
353
+ description = (_b = variableService.getVariable(part.variableName)) === null || _b === void 0 ? void 0 : _b.description;
354
+ className = 'theia-RequestNode-VariableLabel';
355
+ }
356
+ return (React.createElement(HoverableLabel, { key: index, text: part.text, description: description, hoverService: hoverService, className: className }));
357
+ }
358
+ else {
359
+ // maintain the leading and trailing spaces with explicit ` `, otherwise they would get trimmed by the markdown renderer
360
+ const ref = (0, markdown_part_renderer_1.useMarkdownRendering)(part.text.replace(/^\s|\s$/g, ' '), true);
361
+ return (React.createElement("span", { key: index, ref: ref }));
362
+ }
363
+ }))));
364
+ };
365
+ const HoverableLabel = ({ text, description, hoverService, className }) => {
366
+ const spanRef = React.createRef();
367
+ return (React.createElement("span", { className: className, ref: spanRef, onMouseEnter: () => {
368
+ if (description) {
369
+ hoverService.requestHover({
370
+ content: description,
371
+ target: spanRef.current,
372
+ position: 'right'
373
+ });
374
+ }
375
+ } }, text));
309
376
  };
310
377
  const ProgressMessage = (c) => (React.createElement("div", { className: 'theia-ResponseNode-ProgressMessage' },
311
378
  React.createElement(Indicator, { ...c }),
@@ -1 +1 @@
1
- {"version":3,"file":"chat-view-tree-widget.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"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,4CAOwB;AACxB,sCAAoE;AACpE,qDAYiC;AACjC,4DAKsC;AACtC,kDAAkD;AAElD,oGAA6F;AAC7F,gFAA0E;AAC1E,6FAAwF;AAMjF,MAAM,aAAa,GAAG,CAAC,IAAc,EAAuB,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC;AAA3E,QAAA,aAAa,iBAA8D;AAMjF,MAAM,cAAc,GAAG,CAAC,IAAc,EAAwB,EAAE,CAAC,UAAU,IAAI,IAAI,CAAC;AAA9E,QAAA,cAAc,kBAAgE;AAE3F,SAAS,UAAU,CAAC,CAAsB;;IACtC,OAAO,aAAG,CAAC,KAAK,CAAC,OAAO,MAAK,MAAA,iBAAO,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,0CAAE,OAAO,CAAA,CAAC;AACnF,CAAC;AAGM,IAAM,kBAAkB,0BAAxB,MAAM,kBAAmB,SAAQ,oBAAU;IAoB9C,IAAI,iBAAiB,CAAC,iBAA0B;QAC5C,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC;IACrD,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,YACuB,KAAgB,EAChB,KAAgB,EACN,mBAAwC;QAErE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAlBnC,uBAAkB,GAAG,IAAI,CAAC;QAE1B,cAAS,GAAG,KAAK,CAAC;QAkBxB,IAAI,CAAC,EAAE,GAAG,oBAAkB,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAE5B,KAAK,CAAC,IAAI,GAAG;YACT,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,EAAE;SACM,CAAC;IAC3B,CAAC;IAGkB,IAAI;QACnB,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,IAAI,CAAC,EAAE,GAAG,oBAAkB,CAAC,EAAE,GAAG,gBAAgB,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAEM,UAAU,CAAC,OAAgB;QAC9B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAEkB,UAAU,CAAC,KAAgB;QAC1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACxC,CAAC;IAEO,qBAAqB;QACzB,OAAO,6BAAK,SAAS,EAAE,oBAAoB;YACvC,6BAAK,SAAS,EAAC,4BAA4B,EAAC,GAAG,EAAE,kBAAkB;gBAC/D,6BAAK,SAAS,EAAC,iBAAiB;oBAC5B,8BAAM,SAAS,EAAC,gBAAgB,uDAA8C;oBAC9E,6BAAK,SAAS,EAAC,eAAe;wBAC1B;4BAAG,6EAAqD,CAAI,CAC1D;oBACN,6BAAK,SAAS,EAAC,eAAe;wBAC1B,yEAA8C,CAC5C;oBACN,6BAAK,SAAS,EAAC,iBAAiB;wBAC5B;;4BACK,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,wBAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC;;4BAC1D,kDAA4B;wCAAa;wBAClE;4BACI;;gCAA0B,4DAAsC;oCAAM;4BACtE;;gCAA8D,2BAAG,IAAI,EAAC,qCAAqC,EAAC,MAAM,EAAC,QAAQ,wBAAsB;wDACnH,CAC7B;wBACL,kMAA6J,CAC3J;oBAEN,6BAAK,SAAS,EAAC,eAAe;wBAC1B,yEAA8C,CAC5C;oBACN,6BAAK,SAAS,EAAC,iBAAiB;wBAC5B,iIAAsG;wBACtG;4BACI,kDAAwB;4BACxB,iFAAuD;4BACvD;;gCACI;oCACI,uDAA6B;oCAC7B,uDAA6B;oCAC7B,qDAA2B;oCAC3B,0DAAgC,CAC/B,CACJ;4BACL,gCAAK,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAM;4BACrE,gCAAK,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,sBAAsB,CAAC,CAAM,CAChF;wBACL;;4BAAO,2BAAG,IAAI,EAAC,qCAAqC,EAAC,MAAM,EAAC,QAAQ,wBAAsB;qDAA0B,CAClH,CACJ,CACJ,CACH,CAAC;IACZ,CAAC;IAEO,gBAAgB,CAAC,KAAa,EAAE,aAAqB;QACzD,OAAO,2BACH,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,aAAa,CAAC,EACjE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,aAAa,CAAC,IAClF,KAAK,CACN,CAAC;IACT,CAAC;IAEO,gBAAgB,CAAC,OAAyB;QAC9C,OAAO;YACH,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAyB;YAC5C,OAAO;SACV,CAAC;IACN,CAAC;IAEO,iBAAiB,CAAC,QAA2B;QACjD,OAAO;YACH,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAyB;YAC5C,QAAQ;SACX,CAAC;IACN,CAAC;IAED;;;OAGG;IACI,cAAc,CAAC,SAAoB;QACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;YACzE,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,CACf,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YAC1B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACpE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;YAC/E,CAAC;QACL,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAEkB,cAAc;QAC7B,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,SAAoB;QAChD,IAAI,2BAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,KAAK,GAAe,EAAE,CAAC;YAC7B,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAEkB,UAAU,CACzB,IAAc,EACd,KAAgB;QAEhB,IAAI,CAAC,kBAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,CAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,IAAI,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,IAAI,CAAC,EAAE;YAC/B,6BAAK,SAAS,EAAC,gBAAgB,EAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CACtB,CACO,CAAC;IACtB,CAAC;IAEO,WAAW,CAAC,IAAgC;QAChD,MAAM,UAAU,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5H,MAAM,oBAAoB,GAAG,CAAC,UAAU;YACpC,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,gBAAgB,EAAE;iBACvD,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;iBACvC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBACxE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAC,OAAA,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,CAAC,CAAC,QAAQ,mCAAI,CAAC,CAAC,CAAA,EAAA,CAAC;YAC1D,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,oBAAC,KAAK,CAAC,QAAQ;YAClB,6BAAK,SAAS,EAAC,sBAAsB;gBACjC,6BAAK,SAAS,EAAE,qBAAqB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAQ;gBAC/E,4BAAI,SAAS,EAAC,kBAAkB,IAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAM;gBAC/D,UAAU,IAAI,8BAAM,SAAS,EAAC,6BAA6B,iBAAkB;gBAC9E,6BAAK,SAAS,EAAC,uBAAuB,IACjC,CAAC,UAAU;oBACR,oBAAoB,CAAC,MAAM,GAAG,CAAC;oBAC/B,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAC9B,8BACI,SAAS,EAAE,+BAA+B,MAAM,CAAC,IAAI,EAAE,EACvD,KAAK,EAAE,MAAM,CAAC,OAAO,EACrB,OAAO,EAAE,CAAC,CAAC,EAAE;4BACT,CAAC,CAAC,eAAe,EAAE,CAAC;4BACpB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBAChE,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,EAAE;4BACX,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gCAChB,CAAC,CAAC,eAAe,EAAE,CAAC;gCACpB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;4BAChE,CAAC;wBACL,CAAC,EACD,IAAI,EAAC,QAAQ,GACT,CACX,CACH,CACJ,CACO,CAAC;IACtB,CAAC;IAEO,aAAa,CAAC,IAAgC;;QAClD,IAAI,IAAA,qBAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YACtB,sBAAsB;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxG,OAAO,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,mCAAI,IAAI,CAAC;IAC/B,CAAC;IAEO,qBAAqB,CAAC,IAAgC;;QAC1D,IAAI,IAAA,qBAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAA,iBAAO,EAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxG,OAAO,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,mCAAI,IAAA,iBAAO,EAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAEO,YAAY,CAAC,IAAgC;QACjD,IAAI,IAAA,qBAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,IAAA,sBAAc,EAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAAA,CAAC;IACN,CAAC;IAEO,iBAAiB,CAAC,IAAiB;QACvC,OAAO,oBAAC,iBAAiB,IAAC,IAAI,EAAE,IAAI,GAAI,CAAC;IAC7C,CAAC;IAEO,kBAAkB,CAAC,IAAkB;QACzC,OAAO,CACH,6BAAK,SAAS,EAAE,oBAAoB;YAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;mBACnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;mBAC3C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3C,oBAAC,eAAe,OAAK,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,aAAa,CAAC,EAAE,GAAI,CAC9D;YACJ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzC,6BAAK,SAAS,EAAC,4BAA4B,EAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,YAAY,CAAC,EAAE,IAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAO,CAChI,CACC,CACT,CAAC;IACN,CAAC;IAEO,2BAA2B,CAAC,OAA4B,EAAE,IAAkB;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,CAAC,MAAM,CACrE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,IAAI,CAAC;QAClB,CAAC,EACD,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO,4DAAmC,CAAC;QAC/C,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAES,iBAAiB,CAAC,IAA0B,EAAE,KAAoC;QACxF,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC5B,QAAQ,EAAE,oBAAkB,CAAC,YAAY;YACzC,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;YAC9C,IAAI,EAAE,CAAC,IAAI,CAAC;SACf,CAAC,CAAC;QACH,KAAK,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC;;AApTQ,gDAAkB;AACX,qBAAE,GAAG,kBAAkB,AAArB,CAAsB;AACxB,+BAAY,GAAG,CAAC,wBAAwB,CAAC,AAA7B,CAA8B;AAGvC;IADlB,IAAA,kBAAM,EAAC,2BAAoB,CAAC;IAAE,IAAA,iBAAK,EAAC,sDAAwB,CAAC;;qEACoD;AAG/F;IADlB,IAAA,kBAAM,EAAC,2BAAoB,CAAC;IAAE,IAAA,iBAAK,EAAC,yEAAiC,CAAC;;8EACwC;AAGrG;IADT,IAAA,kBAAM,EAAC,0BAAgB,CAAC;;4DACoB;AAGrC;IADP,IAAA,kBAAM,EAAC,sBAAe,CAAC;sCACC,sBAAe;2DAAC;AAmCtB;IADlB,IAAA,yBAAa,GAAE;;;;8CAMf;6BAtDQ,kBAAkB;IAD9B,IAAA,sBAAU,GAAE;IA+BJ,mBAAA,IAAA,kBAAM,EAAC,mBAAS,CAAC,CAAA;IACjB,mBAAA,IAAA,kBAAM,EAAC,mBAAS,CAAC,CAAA;IACjB,mBAAA,IAAA,kBAAM,EAAC,6BAAmB,CAAC,CAAA;6DAAsB,6BAAmB;GAhChE,kBAAkB,CAqT9B;AAED,MAAM,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAyB,EAAE,EAAE;;IAC1D,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,mCAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3E,MAAM,GAAG,GAAG,IAAA,6CAAoB,EAAC,IAAI,CAAC,CAAC;IAEvC,OAAO,6BAAK,SAAS,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAG,GAAQ,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,CAAsB,EAAE,EAAE,CAAC,CAChD,6BAAK,SAAS,EAAC,oCAAoC;IAC/C,oBAAC,SAAS,OAAK,CAAC,GAAI;;IAAE,CAAC,CAAC,OAAO,CAC7B,CACT,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,eAAoC,EAAE,EAAE,CAAC,CACxD,8BAAM,SAAS,EAAC,8CAA8C;IACzD,eAAe,CAAC,MAAM,KAAK,YAAY;QACpC,2BAAG,SAAS,EAAE,wBAAwB,GAAG,eAAe,CAAC,MAAM,GAAM;IAExE,eAAe,CAAC,MAAM,KAAK,WAAW;QACnC,2BAAG,SAAS,EAAE,cAAc,GAAG,eAAe,CAAC,MAAM,GAAM;IAE9D,eAAe,CAAC,MAAM,KAAK,QAAQ;QAChC,2BAAG,SAAS,EAAE,gBAAgB,GAAG,eAAe,CAAC,MAAM,GAAM,CAE9D,CACV,CAAC"}
1
+ {"version":3,"file":"chat-view-tree-widget.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/chat-view-tree-widget.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@theia/ai-chat-ui",
3
- "version": "1.55.0",
3
+ "version": "1.56.0",
4
4
  "description": "Theia - AI Chat UI Extension",
5
5
  "dependencies": {
6
- "@theia/ai-chat": "1.55.0",
7
- "@theia/ai-core": "1.55.0",
8
- "@theia/core": "1.55.0",
9
- "@theia/editor": "1.55.0",
10
- "@theia/editor-preview": "1.55.0",
11
- "@theia/filesystem": "1.55.0",
12
- "@theia/monaco": "1.55.0",
6
+ "@theia/ai-chat": "1.56.0",
7
+ "@theia/ai-core": "1.56.0",
8
+ "@theia/core": "1.56.0",
9
+ "@theia/editor": "1.56.0",
10
+ "@theia/editor-preview": "1.56.0",
11
+ "@theia/filesystem": "1.56.0",
12
+ "@theia/monaco": "1.56.0",
13
13
  "@theia/monaco-editor-core": "1.83.101",
14
- "@theia/workspace": "1.55.0",
14
+ "@theia/workspace": "1.56.0",
15
15
  "minimatch": "^5.1.0",
16
16
  "tslib": "^2.6.2",
17
17
  "uuid": "^9.0.1"
@@ -50,10 +50,10 @@
50
50
  "watch": "theiaext watch"
51
51
  },
52
52
  "devDependencies": {
53
- "@theia/ext-scripts": "1.55.0"
53
+ "@theia/ext-scripts": "1.56.0"
54
54
  },
55
55
  "nyc": {
56
56
  "extends": "../../configs/nyc.json"
57
57
  },
58
- "gitHead": "0e7a523b8e798679d2e098709c63bd7060e54c8a"
58
+ "gitHead": "3b4498f8f1c66be688847418fcc35595282671dc"
59
59
  }
@@ -52,7 +52,7 @@ export class AIChatContribution extends AbstractViewContribution<ChatViewWidget>
52
52
  rank: 100
53
53
  },
54
54
  toggleCommandId: AI_CHAT_TOGGLE_COMMAND_ID,
55
- toggleKeybinding: 'ctrlcmd+shift+e'
55
+ toggleKeybinding: 'ctrlcmd+alt+i'
56
56
  });
57
57
  }
58
58
 
@@ -36,6 +36,7 @@ import { ChatViewLanguageContribution } from './chat-view-language-contribution'
36
36
  import { ChatViewWidget } from './chat-view-widget';
37
37
  import { ChatViewWidgetToolbarContribution } from './chat-view-widget-toolbar-contribution';
38
38
  import { EditorPreviewManager } from '@theia/editor-preview/lib/browser/editor-preview-manager';
39
+ import { QuestionPartRenderer } from './chat-response-renderer/question-part-renderer';
39
40
 
40
41
  export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
41
42
  bindViewContribution(bind, AIChatContribution);
@@ -66,6 +67,7 @@ export default new ContainerModule((bind, _unbind, _isBound, rebind) => {
66
67
  bind(ChatResponsePartRenderer).to(CommandPartRenderer).inSingletonScope();
67
68
  bind(ChatResponsePartRenderer).to(ToolCallPartRenderer).inSingletonScope();
68
69
  bind(ChatResponsePartRenderer).to(ErrorPartRenderer).inSingletonScope();
70
+ bind(ChatResponsePartRenderer).to(QuestionPartRenderer).inSingletonScope();
69
71
  [CommandContribution, MenuContribution].forEach(serviceIdentifier =>
70
72
  bind(serviceIdentifier).to(ChatViewMenuContribution).inSingletonScope()
71
73
  );
@@ -126,6 +126,9 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
126
126
  const lastRequest = allRequests.length === 0 ? undefined : allRequests[allRequests.length - 1];
127
127
 
128
128
  const createInputElement = async () => {
129
+ const paddingTop = 8;
130
+ const lineHeight = 20;
131
+ const maxHeight = 240;
129
132
  const resource = await props.untitledResourceResolver.createUntitledResource('', CHAT_VIEW_LANGUAGE_EXTENSION);
130
133
  const editor = await props.editorProvider.createInline(resource.uri, editorContainerRef.current!, {
131
134
  language: CHAT_VIEW_LANGUAGE_EXTENSION,
@@ -133,7 +136,7 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
133
136
  codeLens: false,
134
137
  inlayHints: { enabled: 'off' },
135
138
  hover: { enabled: false },
136
- autoSizing: true,
139
+ autoSizing: false, // we handle the sizing ourselves
137
140
  scrollBeyondLastLine: false,
138
141
  scrollBeyondLastColumn: 0,
139
142
  minHeight: 1,
@@ -144,8 +147,8 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
144
147
  scrollbar: { horizontal: 'hidden' },
145
148
  automaticLayout: true,
146
149
  lineNumbers: 'off',
147
- lineHeight: 20,
148
- padding: { top: 8 },
150
+ lineHeight,
151
+ padding: { top: paddingTop },
149
152
  suggest: {
150
153
  showIcons: true,
151
154
  showSnippets: false,
@@ -158,8 +161,23 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
158
161
  stickyScroll: { enabled: false },
159
162
  });
160
163
 
161
- editor.getControl().onDidChangeModelContent(() => {
162
- layout();
164
+ if (editorContainerRef.current) {
165
+ editorContainerRef.current.style.height = (lineHeight + (2 * paddingTop)) + 'px';
166
+ }
167
+
168
+ const updateEditorHeight = () => {
169
+ if (editorContainerRef.current) {
170
+ const contentHeight = editor.getControl().getContentHeight() + paddingTop;
171
+ editorContainerRef.current.style.height = `${Math.min(contentHeight, maxHeight)}px`;
172
+ }
173
+ };
174
+ editor.getControl().onDidChangeModelContent(updateEditorHeight);
175
+ const resizeObserver = new ResizeObserver(updateEditorHeight);
176
+ if (editorContainerRef.current) {
177
+ resizeObserver.observe(editorContainerRef.current);
178
+ }
179
+ editor.getControl().onDidDispose(() => {
180
+ resizeObserver.disconnect();
163
181
  });
164
182
 
165
183
  editor.getControl().onContextMenu(e =>
@@ -193,19 +211,6 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
193
211
  if (editorRef.current) {
194
212
  editorRef.current.document.textEditorModel.setValue('');
195
213
  }
196
- };
197
-
198
- function layout(): void {
199
- if (editorRef.current === undefined) {
200
- return;
201
- }
202
- const hiddenClass = 'hidden';
203
- const editor = editorRef.current;
204
- if (editor.document.textEditorModel.getValue().length > 0) {
205
- placeholderRef.current?.classList.add(hiddenClass);
206
- } else {
207
- placeholderRef.current?.classList.remove(hiddenClass);
208
- }
209
214
  }
210
215
 
211
216
  const onKeyDown = React.useCallback((event: React.KeyboardEvent) => {
@@ -218,10 +223,20 @@ const ChatInput: React.FunctionComponent<ChatInputProperties> = (props: ChatInpu
218
223
  }
219
224
  }, [props.isEnabled]);
220
225
 
226
+ const handleInputFocus = () => {
227
+ placeholderRef.current?.classList.add('hidden');
228
+ };
229
+
230
+ const handleInputBlur = () => {
231
+ if (!editorRef.current?.getControl().getValue()) {
232
+ placeholderRef.current?.classList.remove('hidden');
233
+ }
234
+ };
235
+
221
236
  return <div className='theia-ChatInput'>
222
237
  <div className='theia-ChatInput-Editor-Box'>
223
- <div className='theia-ChatInput-Editor' ref={editorContainerRef} onKeyDown={onKeyDown}>
224
- <div ref={placeholderRef} className='theia-ChatInput-Editor-Placeholder'>Enter your question</div>
238
+ <div className='theia-ChatInput-Editor' ref={editorContainerRef} onKeyDown={onKeyDown} onFocus={handleInputFocus} onBlur={handleInputBlur}>
239
+ <div ref={placeholderRef} className='theia-ChatInput-Editor-Placeholder'>Ask a question</div>
225
240
  </div>
226
241
  </div>
227
242
  <div className="theia-ChatInputOptions">
@@ -61,21 +61,23 @@ const MarkdownRender = ({ response }: { response: MarkdownChatResponseContent |
61
61
  /**
62
62
  * This hook uses markdown-it directly to render markdown.
63
63
  * The reason to use markdown-it directly is that the MarkdownRenderer is
64
- * overriden by theia with a monaco version. This monaco version strips all html
64
+ * overridden by theia with a monaco version. This monaco version strips all html
65
65
  * tags from the markdown with empty content.
66
66
  * This leads to unexpected behavior when rendering markdown with html tags.
67
67
  *
68
68
  * @param markdown the string to render as markdown
69
+ * @param skipSurroundingParagraph whether to remove a surrounding paragraph element (default: false)
69
70
  * @returns the ref to use in an element to render the markdown
70
71
  */
71
- export const useMarkdownRendering = (markdown: string | MarkdownString) => {
72
+ export const useMarkdownRendering = (markdown: string | MarkdownString, skipSurroundingParagraph: boolean = false) => {
72
73
  // eslint-disable-next-line no-null/no-null
73
74
  const ref = useRef<HTMLDivElement | null>(null);
74
75
  const markdownString = typeof markdown === 'string' ? markdown : markdown.value;
75
76
  useEffect(() => {
76
77
  const markdownIt = markdownit();
77
78
  const host = document.createElement('div');
78
- const html = markdownIt.render(markdownString);
79
+ // markdownIt always puts the content in a paragraph element, so we remove it if we don't want it
80
+ const html = skipSurroundingParagraph ? markdownIt.render(markdownString).replace(/^<p>|<\/p>|<p><\/p>$/g, '') : markdownIt.render(markdownString);
79
81
  host.innerHTML = DOMPurify.sanitize(html, {
80
82
  ALLOW_UNKNOWN_PROTOCOLS: true // DOMPurify usually strips non http(s) links from hrefs
81
83
  });
@@ -0,0 +1,59 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2024 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
+ import { ChatResponseContent, QuestionResponseContent } from '@theia/ai-chat';
17
+ import { injectable } from '@theia/core/shared/inversify';
18
+ import * as React from '@theia/core/shared/react';
19
+ import { ReactNode } from '@theia/core/shared/react';
20
+ import { ChatResponsePartRenderer } from '../chat-response-part-renderer';
21
+ import { ResponseNode } from '../chat-tree-view';
22
+
23
+ @injectable()
24
+ export class QuestionPartRenderer
25
+ implements ChatResponsePartRenderer<QuestionResponseContent> {
26
+
27
+ canHandle(response: ChatResponseContent): number {
28
+ if (QuestionResponseContent.is(response)) {
29
+ return 10;
30
+ }
31
+ return -1;
32
+ }
33
+
34
+ render(question: QuestionResponseContent, node: ResponseNode): ReactNode {
35
+ return (
36
+ <div className="theia-QuestionPartRenderer-root">
37
+ <div className="theia-QuestionPartRenderer-question">{question.question}</div>
38
+ <div className="theia-QuestionPartRenderer-options">
39
+ {
40
+ question.options.map((option, index) => (
41
+ <button
42
+ className={`theia-button theia-QuestionPartRenderer-option ${question.selectedOption === option ? 'selected' : ''}`}
43
+ onClick={() => {
44
+ question.selectedOption = option;
45
+ question.handler(option);
46
+ }}
47
+ disabled={question.selectedOption !== undefined || !node.response.isWaitingForInput}
48
+ key={index}
49
+ >
50
+ {option.text}
51
+ </button>
52
+ ))
53
+ }
54
+ </div>
55
+ </div>
56
+ );
57
+ }
58
+
59
+ }
@@ -29,17 +29,46 @@ export class ToolCallPartRenderer implements ChatResponsePartRenderer<ToolCallCh
29
29
  }
30
30
  return -1;
31
31
  }
32
+
32
33
  render(response: ToolCallChatResponseContent): ReactNode {
33
- return <h4 className='theia-toolCall'>
34
- {response.finished ?
35
- <details>
36
- <summary>Ran {response.name}</summary>
37
- <pre>{this.tryPrettyPrintJson(response)}</pre>
38
- </details>
39
- : <span><Spinner /> Running [{response.name}]</span>
40
- }
41
- </h4>;
34
+ return (
35
+ <h4 className='theia-toolCall'>
36
+ {response.finished ? (
37
+ <details>
38
+ <summary>Ran {response.name}
39
+ ({this.renderCollapsibleArguments(response.arguments)})
40
+ </summary>
41
+ <pre>{this.tryPrettyPrintJson(response)}</pre>
42
+ </details>
43
+ ) : (
44
+ <span>
45
+ <Spinner /> Running {response.name}({this.renderCollapsibleArguments(response.arguments)})
46
+ </span>
47
+ )}
48
+ </h4>
49
+ );
50
+ }
42
51
 
52
+ protected renderCollapsibleArguments(args: string | undefined): ReactNode {
53
+ if (!args || !args.trim() || args.trim() === '{}') {
54
+ return undefined;
55
+ }
56
+
57
+ return (
58
+ <details className="collapsible-arguments">
59
+ <summary className="collapsible-arguments-summary">...</summary>
60
+ <span>{this.prettyPrintArgs(args)}</span>
61
+ </details>
62
+ );
63
+ }
64
+
65
+ private prettyPrintArgs(args: string): string {
66
+ try {
67
+ return JSON.stringify(JSON.parse(args), undefined, 2);
68
+ } catch (e) {
69
+ // fall through
70
+ return args;
71
+ }
43
72
  }
44
73
 
45
74
  private tryPrettyPrintJson(response: ToolCallChatResponseContent): string | undefined {