@theia/ai-chat-ui 1.56.0 → 1.57.0-next.136

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 (45) hide show
  1. package/README.md +2 -1
  2. package/lib/browser/ai-chat-ui-contribution.d.ts.map +1 -1
  3. package/lib/browser/ai-chat-ui-contribution.js +1 -1
  4. package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
  5. package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
  6. package/lib/browser/ai-chat-ui-frontend-module.js +9 -1
  7. package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
  8. package/lib/browser/chat-input-widget.d.ts +18 -5
  9. package/lib/browser/chat-input-widget.d.ts.map +1 -1
  10. package/lib/browser/chat-input-widget.js +229 -80
  11. package/lib/browser/chat-input-widget.js.map +1 -1
  12. package/lib/browser/chat-response-renderer/code-part-renderer.d.ts +30 -2
  13. package/lib/browser/chat-response-renderer/code-part-renderer.d.ts.map +1 -1
  14. package/lib/browser/chat-response-renderer/code-part-renderer.js +45 -10
  15. package/lib/browser/chat-response-renderer/code-part-renderer.js.map +1 -1
  16. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +8 -3
  17. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -1
  18. package/lib/browser/chat-response-renderer/markdown-part-renderer.js +38 -10
  19. package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -1
  20. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -1
  21. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +8 -2
  22. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
  23. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +2 -1
  24. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
  25. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +8 -4
  26. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
  27. package/lib/browser/chat-view-language-contribution.d.ts +2 -1
  28. package/lib/browser/chat-view-language-contribution.d.ts.map +1 -1
  29. package/lib/browser/chat-view-language-contribution.js +3 -6
  30. package/lib/browser/chat-view-language-contribution.js.map +1 -1
  31. package/lib/browser/chat-view-widget.d.ts +4 -1
  32. package/lib/browser/chat-view-widget.d.ts.map +1 -1
  33. package/lib/browser/chat-view-widget.js +14 -4
  34. package/lib/browser/chat-view-widget.js.map +1 -1
  35. package/package.json +12 -12
  36. package/src/browser/ai-chat-ui-contribution.ts +2 -2
  37. package/src/browser/ai-chat-ui-frontend-module.ts +27 -5
  38. package/src/browser/chat-input-widget.tsx +339 -100
  39. package/src/browser/chat-response-renderer/code-part-renderer.tsx +48 -9
  40. package/src/browser/chat-response-renderer/markdown-part-renderer.tsx +39 -12
  41. package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +8 -2
  42. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +10 -4
  43. package/src/browser/chat-view-language-contribution.ts +6 -8
  44. package/src/browser/chat-view-widget.tsx +19 -6
  45. package/src/browser/style/index.css +209 -28
package/README.md CHANGED
@@ -28,5 +28,6 @@ It is based on `@theia/ai-chat`.
28
28
  - [一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception](https://projects.eclipse.org/license/secondary-gpl-2.0-cp)
29
29
 
30
30
  ## Trademark
31
+
31
32
  "Theia" is a trademark of the Eclipse Foundation
32
- https://www.eclipse.org/theia
33
+ <https://www.eclipse.org/theia>
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-ui-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAqB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACjH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAE1F,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AAEzD,qBACa,kBAAmB,SAAQ,wBAAwB,CAAC,cAAc,CAAE,YAAW,yBAAyB;IAGjH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAG5D;IAGF,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;;IAezD,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA8B1D,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAe3D,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;cAIpC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7D,SAAS,CAAC,iBAAiB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAmCjE,SAAS,CAAC,UAAU,CAChB,MAAM,GAAE,MAAM,GAAG,SAA+B,EAChD,SAAS,GAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAoB,GAC5D,OAAO,GAAG,KAAK;IAIlB,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIzD,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;CAGxD"}
1
+ {"version":3,"file":"ai-chat-ui-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAS,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzG,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAqB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACjH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAE1F,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AAEzD,qBACa,kBAAmB,SAAQ,wBAAwB,CAAC,cAAc,CAAE,YAAW,yBAAyB;IAGjH,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,gBAAgB,CAG5D;IAGF,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;;IAezD,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA8B1D,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAe3D,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO;cAIpC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7D,SAAS,CAAC,iBAAiB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAmCjE,SAAS,CAAC,UAAU,CAChB,MAAM,GAAE,MAAM,GAAG,SAA+B,EAChD,SAAS,GAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAoB,GAC5D,OAAO,GAAG,KAAK;IAIlB,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAIzD,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;CAGxD"}
@@ -37,7 +37,7 @@ let AIChatContribution = AIChatContribution_1 = class AIChatContribution extends
37
37
  rank: 100
38
38
  },
39
39
  toggleCommandId: exports.AI_CHAT_TOGGLE_COMMAND_ID,
40
- toggleKeybinding: 'ctrlcmd+alt+i'
40
+ toggleKeybinding: core_1.isOSX ? 'ctrl+cmd+i' : 'ctrl+alt+i'
41
41
  });
42
42
  }
43
43
  registerCommands(registry) {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-ui-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-chat-ui-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-contribution.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;;;;;AAEhF,4DAAkE;AAClE,sCAAyG;AAEzG,6DAAiH;AACjH,4CAAgE;AAChE,uFAA2F;AAE3F,yDAAoD;AACpD,sEAA+D;AAC/D,+FAA0F;AAE7E,QAAA,yBAAyB,GAAG,eAAe,CAAC;AAGlD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAmB,SAAQ,4CAAwC;IAe5E;QACI,KAAK,CAAC;YACF,QAAQ,EAAE,iCAAc,CAAC,EAAE;YAC3B,UAAU,EAAE,iCAAc,CAAC,KAAK;YAChC,oBAAoB,EAAE;gBAClB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,GAAG;aACZ;YACD,eAAe,EAAE,iCAAyB;YAC1C,gBAAgB,EAAE,YAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;SACxD,CAAC,CAAC;IACP,CAAC;IAEQ,gBAAgB,CAAC,QAAyB;QAC/C,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACjC,QAAQ,CAAC,eAAe,CAAC,iCAAY,CAAC,kBAAkB,EAAE;YACtD,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;YAChF,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;YAChF,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;gBACpD,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC;SACL,CAAC,CAAC;QACH,QAAQ,CAAC,eAAe,CAAC,iCAAY,CAAC,oBAAoB,EAAE;YACxD,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC/E,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC/E,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;gBACpD,UAAU,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC;SACL,CAAC,CAAC;QACH,QAAQ,CAAC,eAAe,CAAC,oDAA+B,EAAE;YACtD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,2BAAiB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACvF,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;YACxD,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SAC3D,CAAC,CAAC;QACH,QAAQ,CAAC,eAAe,CAAC,+CAA0B,EAAE;YACjD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE;YAChC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC;YACrG,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SAC3D,CAAC,CAAC;IACP,CAAC;IAED,oBAAoB,CAAC,QAA+B;QAChD,QAAQ,CAAC,YAAY,CAAC;YAClB,EAAE,EAAE,oDAA+B,CAAC,EAAE;YACtC,OAAO,EAAE,oDAA+B,CAAC,EAAE;YAC3C,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;SACrD,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,CAAC;YAClB,EAAE,EAAE,+CAA0B,CAAC,EAAE;YACjC,OAAO,EAAE,+CAA0B,CAAC,EAAE;YACtC,OAAO,EAAE,eAAe;YACxB,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;SACrD,CAAC,CAAC;IACP,CAAC;IAES,gBAAgB,CAAC,MAAe;QACtC,OAAO,CAAC,CAAC,MAAM,IAAI,iCAAc,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;IACvD,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,SAAkB;QACzC,IAAI,eAAe,GAAG,SAAS,CAAC;QAEhC,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrB,OAAO;YACX,CAAC;YACD,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,eAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAES,iBAAiB;QACvB,MAAM,QAAQ,GAAG,GAAG,EAAE,CAClB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;;YAAC,OAAe,CAAC;gBAC/F,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,UAAU;gBAClC,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,CAAC,oBAAkB,CAAC,kBAAkB,CAAC;aACnD,CAAC,CAAA;SAAA,CAAC,CAAC,OAAO,EAAE,CAAC;QAElB,MAAM,KAAK,GAAG,IAAI,uBAAQ,EAA6B,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC;QAC3D,SAAS,CAAC,WAAW,GAAG,aAAa,CAAC;QACtC,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC;QAChC,SAAS,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;QAE7B,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;YAC7C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;YACjD,SAAS,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE;YACvB,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAChD,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC5B,SAAS,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAEpD,SAAS,CAAC,IAAI,EAAE,CAAC;QAEjB,OAAO,KAAK,CAAC,OAAO,CAAC;IACzB,CAAC;IAES,UAAU,CAChB,SAA6B,IAAI,CAAC,YAAY,EAAE,EAChD,YAAiD,GAAG,EAAE,CAAC,IAAI;QAE3D,OAAO,MAAM,YAAY,iCAAc,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxE,CAAC;IAES,eAAe,CAAC,QAAwB;QAC9C,IAAI,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC;IAED,kBAAkB,CAAC,QAAwB;QACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACrC,CAAC;;AA3IQ,gDAAkB;AAOD,qCAAkB,GAAqB;IAC7D,SAAS,EAAE,sBAAsB;IACjC,OAAO,EAAE,aAAa;CACzB,AAH2C,CAG1C;AAPiB;IADlB,IAAA,kBAAM,EAAC,qBAAW,CAAC;;uDACwB;AAEzB;IADlB,IAAA,kBAAM,EAAC,wBAAiB,CAAC;;6DAC8B;AAQrC;IADlB,IAAA,kBAAM,EAAC,iDAAsB,CAAC;sCACY,iDAAsB;kEAAC;6BAbzD,kBAAkB;IAD9B,IAAA,sBAAU,GAAE;;GACA,kBAAkB,CA4I9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-ui-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;AAE3E,OAAO,mCAAmC,CAAC;;AAmB3C,wBAiDG"}
1
+ {"version":3,"file":"ai-chat-ui-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;AAgC3E,OAAO,mCAAmC,CAAC;;AAE3C,wBA0DG"}
@@ -20,7 +20,6 @@ const browser_1 = require("@theia/core/lib/browser");
20
20
  const tab_bar_toolbar_1 = require("@theia/core/lib/browser/shell/tab-bar-toolbar");
21
21
  const inversify_1 = require("@theia/core/shared/inversify");
22
22
  const browser_2 = require("@theia/editor/lib/browser");
23
- require("../../src/browser/style/index.css");
24
23
  const ai_chat_ui_contribution_1 = require("./ai-chat-ui-contribution");
25
24
  const chat_input_widget_1 = require("./chat-input-widget");
26
25
  const chat_node_toolbar_action_contribution_1 = require("./chat-node-toolbar-action-contribution");
@@ -35,12 +34,16 @@ const chat_view_widget_1 = require("./chat-view-widget");
35
34
  const chat_view_widget_toolbar_contribution_1 = require("./chat-view-widget-toolbar-contribution");
36
35
  const editor_preview_manager_1 = require("@theia/editor-preview/lib/browser/editor-preview-manager");
37
36
  const question_part_renderer_1 = require("./chat-response-renderer/question-part-renderer");
37
+ require("../../src/browser/style/index.css");
38
38
  exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebind) => {
39
39
  (0, browser_1.bindViewContribution)(bind, ai_chat_ui_contribution_1.AIChatContribution);
40
40
  bind(tab_bar_toolbar_1.TabBarToolbarContribution).toService(ai_chat_ui_contribution_1.AIChatContribution);
41
41
  (0, core_1.bindContributionProvider)(bind, chat_response_part_renderer_1.ChatResponsePartRenderer);
42
42
  bindChatViewWidget(bind);
43
43
  bind(chat_input_widget_1.AIChatInputWidget).toSelf();
44
+ bind(chat_input_widget_1.AIChatInputConfiguration).toConstantValue({
45
+ showContext: false
46
+ });
44
47
  bind(browser_1.WidgetFactory).toDynamicValue(({ container }) => ({
45
48
  id: chat_input_widget_1.AIChatInputWidget.ID,
46
49
  createWidget: () => container.get(chat_input_widget_1.AIChatInputWidget)
@@ -59,6 +62,11 @@ exports.default = new inversify_1.ContainerModule((bind, _unbind, _isBound, rebi
59
62
  bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(chat_response_renderer_1.ErrorPartRenderer).inSingletonScope();
60
63
  bind(chat_response_part_renderer_1.ChatResponsePartRenderer).to(question_part_renderer_1.QuestionPartRenderer).inSingletonScope();
61
64
  [core_1.CommandContribution, core_1.MenuContribution].forEach(serviceIdentifier => bind(serviceIdentifier).to(chat_view_contribution_1.ChatViewMenuContribution).inSingletonScope());
65
+ (0, core_1.bindContributionProvider)(bind, chat_response_renderer_1.CodePartRendererAction);
66
+ bind(chat_response_renderer_1.CopyToClipboardButtonAction).toSelf().inSingletonScope();
67
+ bind(chat_response_renderer_1.CodePartRendererAction).toService(chat_response_renderer_1.CopyToClipboardButtonAction);
68
+ bind(chat_response_renderer_1.InsertCodeAtCursorButtonAction).toSelf().inSingletonScope();
69
+ bind(chat_response_renderer_1.CodePartRendererAction).toService(chat_response_renderer_1.InsertCodeAtCursorButtonAction);
62
70
  bind(ai_editor_manager_1.AIEditorManager).toSelf().inSingletonScope();
63
71
  rebind(browser_2.EditorManager).toService(ai_editor_manager_1.AIEditorManager);
64
72
  rebind(editor_preview_manager_1.EditorPreviewManager).toService(ai_editor_manager_1.AIEditorManager);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-ui-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-chat-ui-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-chat-ui-frontend-module.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,42 @@
1
1
  /// <reference types="react" />
2
- import { ChatAgent, ChatAgentService, ChatModel, ChatRequestModel } from '@theia/ai-chat';
2
+ import { ChatModel, ChatRequestModel } from '@theia/ai-chat';
3
3
  import { UntitledResourceResolver } from '@theia/core';
4
- import { ContextMenuRenderer, Message, ReactWidget } from '@theia/core/lib/browser';
4
+ import { ContextMenuRenderer, LabelProvider, Message, ReactWidget } from '@theia/core/lib/browser';
5
5
  import * as React from '@theia/core/shared/react';
6
- import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider';
7
6
  import { IMouseEvent } from '@theia/monaco-editor-core';
7
+ import { MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor';
8
+ import { MonacoEditorProvider } from '@theia/monaco/lib/browser/monaco-editor-provider';
8
9
  type Query = (query: string) => Promise<void>;
9
10
  type Cancel = (requestModel: ChatRequestModel) => void;
11
+ type DeleteChangeSet = (requestModel: ChatRequestModel) => void;
12
+ type DeleteChangeSetElement = (requestModel: ChatRequestModel, index: number) => void;
13
+ export declare const AIChatInputConfiguration: unique symbol;
14
+ export interface AIChatInputConfiguration {
15
+ showContext?: boolean;
16
+ }
10
17
  export declare class AIChatInputWidget extends ReactWidget {
11
18
  static ID: string;
12
19
  static readonly CONTEXT_MENU: string[];
13
- protected readonly agentService: ChatAgentService;
14
20
  protected readonly editorProvider: MonacoEditorProvider;
15
21
  protected readonly untitledResourceResolver: UntitledResourceResolver;
16
22
  protected readonly contextMenuRenderer: ContextMenuRenderer;
23
+ protected readonly configuration: AIChatInputConfiguration | undefined;
24
+ protected readonly labelProvider: LabelProvider;
25
+ protected editorRef: MonacoEditor | undefined;
26
+ private editorReady;
17
27
  protected isEnabled: boolean;
18
28
  private _onQuery;
19
29
  set onQuery(query: Query);
20
30
  private _onCancel;
21
31
  set onCancel(cancel: Cancel);
32
+ private _onDeleteChangeSet;
33
+ set onDeleteChangeSet(deleteChangeSet: DeleteChangeSet);
34
+ private _onDeleteChangeSetElement;
35
+ set onDeleteChangeSetElement(deleteChangeSetElement: DeleteChangeSetElement);
22
36
  private _chatModel;
23
37
  set chatModel(chatModel: ChatModel);
24
38
  protected init(): void;
25
39
  protected onActivateRequest(msg: Message): void;
26
- protected getChatAgents(): ChatAgent[];
27
40
  protected render(): React.ReactNode;
28
41
  setEnabled(enabled: boolean): void;
29
42
  protected handleContextMenu(event: IMouseEvent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGpF,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK,MAAM,GAAG,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEvD,qBACa,iBAAkB,SAAQ,WAAW;IAC9C,OAAc,EAAE,SAAuB;IACvC,MAAM,CAAC,QAAQ,CAAC,YAAY,WAA+B;IAG3D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAGtE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAE5D,SAAS,CAAC,SAAS,UAAS;IAE5B,OAAO,CAAC,QAAQ,CAAQ;IACxB,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAEvB;IACD,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAE1B;IACD,OAAO,CAAC,UAAU,CAAY;IAC9B,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAGjC;IAGD,SAAS,CAAC,IAAI,IAAI,IAAI;cAKH,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKxD,SAAS,CAAC,aAAa,IAAI,SAAS,EAAE;IAItC,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;IAe5B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKzC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;CAQxD"}
1
+ {"version":3,"file":"chat-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-input-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAgD,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC3G,OAAO,EAAc,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGnG,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAGxF,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK,MAAM,GAAG,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;AACvD,KAAK,eAAe,GAAG,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAChE,KAAK,sBAAsB,GAAG,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEtF,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAC3E,MAAM,WAAW,wBAAwB;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBACa,iBAAkB,SAAQ,WAAW;IAC9C,OAAc,EAAE,SAAuB;IACvC,MAAM,CAAC,QAAQ,CAAC,YAAY,WAA+B;IAG3D,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAGtE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAGvE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEhD,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,SAAS,CAAa;IAC1D,OAAO,CAAC,WAAW,CAAwB;IAE3C,SAAS,CAAC,SAAS,UAAS;IAE5B,OAAO,CAAC,QAAQ,CAAQ;IACxB,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAEvB;IACD,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,EAE1B;IACD,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,IAAI,iBAAiB,CAAC,eAAe,EAAE,eAAe,EAErD;IACD,OAAO,CAAC,yBAAyB,CAAyB;IAC1D,IAAI,wBAAwB,CAAC,sBAAsB,EAAE,sBAAsB,EAE1E;IACD,OAAO,CAAC,UAAU,CAAY;IAC9B,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAGjC;IAGD,SAAS,CAAC,IAAI,IAAI,IAAI;cAMH,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IASxD,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;IAsB5B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKzC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;CAQxD"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var AIChatInputWidget_1;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AIChatInputWidget = void 0;
4
+ exports.AIChatInputWidget = exports.AIChatInputConfiguration = void 0;
5
5
  const tslib_1 = require("tslib");
6
6
  // *****************************************************************************
7
7
  // Copyright (C) 2024 EclipseSource GmbH.
@@ -21,13 +21,17 @@ const tslib_1 = require("tslib");
21
21
  const ai_chat_1 = require("@theia/ai-chat");
22
22
  const core_1 = require("@theia/core");
23
23
  const browser_1 = require("@theia/core/lib/browser");
24
+ const promise_util_1 = require("@theia/core/lib/common/promise-util");
24
25
  const inversify_1 = require("@theia/core/shared/inversify");
25
26
  const React = require("@theia/core/shared/react");
26
27
  const monaco_editor_provider_1 = require("@theia/monaco/lib/browser/monaco-editor-provider");
27
28
  const chat_view_language_contribution_1 = require("./chat-view-language-contribution");
29
+ exports.AIChatInputConfiguration = Symbol('AIChatInputConfiguration');
28
30
  let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends browser_1.ReactWidget {
29
31
  constructor() {
30
32
  super(...arguments);
33
+ this.editorRef = undefined;
34
+ this.editorReady = new promise_util_1.Deferred();
31
35
  this.isEnabled = false;
32
36
  }
33
37
  set onQuery(query) {
@@ -36,6 +40,12 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
36
40
  set onCancel(cancel) {
37
41
  this._onCancel = cancel;
38
42
  }
43
+ set onDeleteChangeSet(deleteChangeSet) {
44
+ this._onDeleteChangeSet = deleteChangeSet;
45
+ }
46
+ set onDeleteChangeSetElement(deleteChangeSetElement) {
47
+ this._onDeleteChangeSetElement = deleteChangeSetElement;
48
+ }
39
49
  set chatModel(chatModel) {
40
50
  this._chatModel = chatModel;
41
51
  this.update();
@@ -47,13 +57,18 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
47
57
  }
48
58
  onActivateRequest(msg) {
49
59
  super.onActivateRequest(msg);
50
- this.node.focus({ preventScroll: true });
51
- }
52
- getChatAgents() {
53
- return this.agentService.getAgents();
60
+ this.editorReady.promise.then(() => {
61
+ if (this.editorRef) {
62
+ this.editorRef.focus();
63
+ }
64
+ });
54
65
  }
55
66
  render() {
56
- return (React.createElement(ChatInput, { onQuery: this._onQuery.bind(this), onCancel: this._onCancel.bind(this), chatModel: this._chatModel, getChatAgents: this.getChatAgents.bind(this), editorProvider: this.editorProvider, untitledResourceResolver: this.untitledResourceResolver, contextMenuCallback: this.handleContextMenu.bind(this), isEnabled: this.isEnabled }));
67
+ var _a;
68
+ return (React.createElement(ChatInput, { onQuery: this._onQuery.bind(this), onCancel: this._onCancel.bind(this), onDeleteChangeSet: this._onDeleteChangeSet.bind(this), onDeleteChangeSetElement: this._onDeleteChangeSetElement.bind(this), chatModel: this._chatModel, editorProvider: this.editorProvider, untitledResourceResolver: this.untitledResourceResolver, contextMenuCallback: this.handleContextMenu.bind(this), isEnabled: this.isEnabled, setEditorRef: editor => {
69
+ this.editorRef = editor;
70
+ this.editorReady.resolve();
71
+ }, showContext: (_a = this.configuration) === null || _a === void 0 ? void 0 : _a.showContext, labelProvider: this.labelProvider }));
57
72
  }
58
73
  setEnabled(enabled) {
59
74
  this.isEnabled = enabled;
@@ -70,10 +85,6 @@ let AIChatInputWidget = AIChatInputWidget_1 = class AIChatInputWidget extends br
70
85
  exports.AIChatInputWidget = AIChatInputWidget;
71
86
  AIChatInputWidget.ID = 'chat-input-widget';
72
87
  AIChatInputWidget.CONTEXT_MENU = ['chat-input-context-menu'];
73
- tslib_1.__decorate([
74
- (0, inversify_1.inject)(ai_chat_1.ChatAgentService),
75
- tslib_1.__metadata("design:type", Object)
76
- ], AIChatInputWidget.prototype, "agentService", void 0);
77
88
  tslib_1.__decorate([
78
89
  (0, inversify_1.inject)(monaco_editor_provider_1.MonacoEditorProvider),
79
90
  tslib_1.__metadata("design:type", monaco_editor_provider_1.MonacoEditorProvider)
@@ -86,6 +97,15 @@ tslib_1.__decorate([
86
97
  (0, inversify_1.inject)(browser_1.ContextMenuRenderer),
87
98
  tslib_1.__metadata("design:type", browser_1.ContextMenuRenderer)
88
99
  ], AIChatInputWidget.prototype, "contextMenuRenderer", void 0);
100
+ tslib_1.__decorate([
101
+ (0, inversify_1.inject)(exports.AIChatInputConfiguration),
102
+ (0, inversify_1.optional)(),
103
+ tslib_1.__metadata("design:type", Object)
104
+ ], AIChatInputWidget.prototype, "configuration", void 0);
105
+ tslib_1.__decorate([
106
+ (0, inversify_1.inject)(browser_1.LabelProvider),
107
+ tslib_1.__metadata("design:type", browser_1.LabelProvider)
108
+ ], AIChatInputWidget.prototype, "labelProvider", void 0);
89
109
  tslib_1.__decorate([
90
110
  (0, inversify_1.postConstruct)(),
91
111
  tslib_1.__metadata("design:type", Function),
@@ -96,86 +116,121 @@ exports.AIChatInputWidget = AIChatInputWidget = AIChatInputWidget_1 = tslib_1.__
96
116
  (0, inversify_1.injectable)()
97
117
  ], AIChatInputWidget);
98
118
  const ChatInput = (props) => {
119
+ const onDeleteChangeSet = () => props.onDeleteChangeSet(props.chatModel.id);
120
+ const onDeleteChangeSetElement = (index) => props.onDeleteChangeSetElement(props.chatModel.id, index);
99
121
  const [inProgress, setInProgress] = React.useState(false);
122
+ const [isInputEmpty, setIsInputEmpty] = React.useState(true);
123
+ const [changeSetUI, setChangeSetUI] = React.useState(() => props.chatModel.changeSet ? buildChangeSetUI(props.chatModel.changeSet, props.labelProvider, onDeleteChangeSet, onDeleteChangeSetElement) : undefined);
100
124
  // eslint-disable-next-line no-null/no-null
101
125
  const editorContainerRef = React.useRef(null);
102
126
  // eslint-disable-next-line no-null/no-null
103
127
  const placeholderRef = React.useRef(null);
104
128
  const editorRef = React.useRef(undefined);
105
- const allRequests = props.chatModel.getRequests();
106
- const lastRequest = allRequests.length === 0 ? undefined : allRequests[allRequests.length - 1];
107
- const createInputElement = async () => {
108
- const paddingTop = 8;
109
- const lineHeight = 20;
110
- const maxHeight = 240;
111
- const resource = await props.untitledResourceResolver.createUntitledResource('', chat_view_language_contribution_1.CHAT_VIEW_LANGUAGE_EXTENSION);
112
- const editor = await props.editorProvider.createInline(resource.uri, editorContainerRef.current, {
113
- language: chat_view_language_contribution_1.CHAT_VIEW_LANGUAGE_EXTENSION,
114
- // Disable code lens, inlay hints and hover support to avoid console errors from other contributions
115
- codeLens: false,
116
- inlayHints: { enabled: 'off' },
117
- hover: { enabled: false },
118
- autoSizing: false, // we handle the sizing ourselves
119
- scrollBeyondLastLine: false,
120
- scrollBeyondLastColumn: 0,
121
- minHeight: 1,
122
- fontFamily: 'var(--theia-ui-font-family)',
123
- fontSize: 13,
124
- cursorWidth: 1,
125
- maxHeight: -1,
126
- scrollbar: { horizontal: 'hidden' },
127
- automaticLayout: true,
128
- lineNumbers: 'off',
129
- lineHeight,
130
- padding: { top: paddingTop },
131
- suggest: {
132
- showIcons: true,
133
- showSnippets: false,
134
- showWords: false,
135
- showStatusBar: false,
136
- insertMode: 'replace',
137
- },
138
- bracketPairColorization: { enabled: false },
139
- wrappingStrategy: 'advanced',
140
- stickyScroll: { enabled: false },
141
- });
142
- if (editorContainerRef.current) {
143
- editorContainerRef.current.style.height = (lineHeight + (2 * paddingTop)) + 'px';
144
- }
145
- const updateEditorHeight = () => {
129
+ React.useEffect(() => {
130
+ const createInputElement = async () => {
131
+ const paddingTop = 6;
132
+ const lineHeight = 20;
133
+ const maxHeight = 240;
134
+ const resource = await props.untitledResourceResolver.createUntitledResource('', chat_view_language_contribution_1.CHAT_VIEW_LANGUAGE_EXTENSION);
135
+ const editor = await props.editorProvider.createInline(resource.uri, editorContainerRef.current, {
136
+ language: chat_view_language_contribution_1.CHAT_VIEW_LANGUAGE_EXTENSION,
137
+ // Disable code lens, inlay hints and hover support to avoid console errors from other contributions
138
+ codeLens: false,
139
+ inlayHints: { enabled: 'off' },
140
+ hover: { enabled: false },
141
+ autoSizing: false, // we handle the sizing ourselves
142
+ scrollBeyondLastLine: false,
143
+ scrollBeyondLastColumn: 0,
144
+ minHeight: 1,
145
+ fontFamily: 'var(--theia-ui-font-family)',
146
+ fontSize: 13,
147
+ cursorWidth: 1,
148
+ maxHeight: -1,
149
+ scrollbar: { horizontal: 'hidden' },
150
+ automaticLayout: true,
151
+ lineNumbers: 'off',
152
+ lineHeight,
153
+ padding: { top: paddingTop },
154
+ suggest: {
155
+ showIcons: true,
156
+ showSnippets: false,
157
+ showWords: false,
158
+ showStatusBar: false,
159
+ insertMode: 'replace',
160
+ },
161
+ bracketPairColorization: { enabled: false },
162
+ wrappingStrategy: 'advanced',
163
+ stickyScroll: { enabled: false },
164
+ });
146
165
  if (editorContainerRef.current) {
147
- const contentHeight = editor.getControl().getContentHeight() + paddingTop;
148
- editorContainerRef.current.style.height = `${Math.min(contentHeight, maxHeight)}px`;
166
+ editorContainerRef.current.style.height = (lineHeight + (2 * paddingTop)) + 'px';
149
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(() => {
175
+ const value = editor.getControl().getValue();
176
+ setIsInputEmpty(!value || value.length === 0);
177
+ updateEditorHeight();
178
+ handleOnChange();
179
+ });
180
+ const resizeObserver = new ResizeObserver(updateEditorHeight);
181
+ if (editorContainerRef.current) {
182
+ resizeObserver.observe(editorContainerRef.current);
183
+ }
184
+ editor.getControl().onDidDispose(() => {
185
+ resizeObserver.disconnect();
186
+ });
187
+ editor.getControl().onContextMenu(e => props.contextMenuCallback(e.event));
188
+ editorRef.current = editor;
189
+ props.setEditorRef(editor);
150
190
  };
151
- editor.getControl().onDidChangeModelContent(updateEditorHeight);
152
- const resizeObserver = new ResizeObserver(updateEditorHeight);
153
- if (editorContainerRef.current) {
154
- resizeObserver.observe(editorContainerRef.current);
155
- }
156
- editor.getControl().onDidDispose(() => {
157
- resizeObserver.disconnect();
158
- });
159
- editor.getControl().onContextMenu(e => props.contextMenuCallback(e.event));
160
- editorRef.current = editor;
161
- };
162
- React.useEffect(() => {
163
191
  createInputElement();
164
192
  return () => {
193
+ props.setEditorRef(undefined);
165
194
  if (editorRef.current) {
166
195
  editorRef.current.dispose();
167
196
  }
168
197
  };
169
198
  }, []);
199
+ const responseListenerRef = React.useRef();
200
+ // track chat model updates to keep our UI in sync
201
+ // - keep "inProgress" in sync with the request state
202
+ // - keep "changeSetUI" in sync with the change set
170
203
  React.useEffect(() => {
171
- const listener = lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.response.onDidChange(() => {
172
- if (lastRequest.response.isCanceled || lastRequest.response.isComplete || lastRequest.response.isError) {
173
- setInProgress(false);
204
+ const listener = props.chatModel.onDidChange(event => {
205
+ var _a;
206
+ if (event.kind === 'addRequest') {
207
+ if (event.request) {
208
+ setInProgress(ai_chat_1.ChatRequestModel.isInProgress(event.request));
209
+ }
210
+ (_a = responseListenerRef.current) === null || _a === void 0 ? void 0 : _a.dispose();
211
+ responseListenerRef.current = event.request.response.onDidChange(() => setInProgress(ai_chat_1.ChatRequestModel.isInProgress(event.request)));
212
+ }
213
+ else if (ai_chat_1.ChatChangeEvent.isChangeSetEvent(event)) {
214
+ if (event.changeSet) {
215
+ setChangeSetUI(buildChangeSetUI(event.changeSet, props.labelProvider, onDeleteChangeSet, onDeleteChangeSetElement));
216
+ }
217
+ else {
218
+ setChangeSetUI(undefined);
219
+ }
174
220
  }
175
221
  });
176
- return () => listener === null || listener === void 0 ? void 0 : listener.dispose();
177
- }, [lastRequest]);
222
+ setChangeSetUI(props.chatModel.changeSet ? buildChangeSetUI(props.chatModel.changeSet, props.labelProvider, onDeleteChangeSet, onDeleteChangeSetElement) : undefined);
223
+ return () => {
224
+ var _a;
225
+ listener === null || listener === void 0 ? void 0 : listener.dispose();
226
+ (_a = responseListenerRef.current) === null || _a === void 0 ? void 0 : _a.dispose();
227
+ responseListenerRef.current = undefined;
228
+ };
229
+ }, [props.chatModel]);
178
230
  function submit(value) {
231
+ if (!value || value.trim().length === 0) {
232
+ return;
233
+ }
179
234
  setInProgress(true);
180
235
  props.onQuery(value);
181
236
  if (editorRef.current) {
@@ -193,25 +248,119 @@ const ChatInput = (props) => {
193
248
  }
194
249
  }, [props.isEnabled]);
195
250
  const handleInputFocus = () => {
196
- var _a;
197
- (_a = placeholderRef.current) === null || _a === void 0 ? void 0 : _a.classList.add('hidden');
251
+ hidePlaceholderIfEditorFilled();
252
+ };
253
+ const handleOnChange = () => {
254
+ showPlaceholderIfEditorEmpty();
255
+ hidePlaceholderIfEditorFilled();
198
256
  };
199
257
  const handleInputBlur = () => {
258
+ showPlaceholderIfEditorEmpty();
259
+ };
260
+ const showPlaceholderIfEditorEmpty = () => {
200
261
  var _a, _b;
201
262
  if (!((_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.getControl().getValue())) {
202
263
  (_b = placeholderRef.current) === null || _b === void 0 ? void 0 : _b.classList.remove('hidden');
203
264
  }
204
265
  };
266
+ const hidePlaceholderIfEditorFilled = () => {
267
+ var _a, _b;
268
+ const value = (_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.getControl().getValue();
269
+ if (value && value.length > 0) {
270
+ (_b = placeholderRef.current) === null || _b === void 0 ? void 0 : _b.classList.add('hidden');
271
+ }
272
+ };
273
+ const leftOptions = props.showContext ? [{
274
+ title: 'Attach elements to context',
275
+ handler: () => { },
276
+ className: 'codicon-add'
277
+ }] : [];
278
+ const rightOptions = inProgress
279
+ ? [{
280
+ title: 'Cancel (Esc)',
281
+ handler: () => {
282
+ const latestRequest = getLatestRequest(props.chatModel);
283
+ if (latestRequest) {
284
+ props.onCancel(latestRequest);
285
+ }
286
+ setInProgress(false);
287
+ },
288
+ className: 'codicon-stop-circle'
289
+ }]
290
+ : [{
291
+ title: 'Send (Enter)',
292
+ handler: () => {
293
+ var _a;
294
+ if (props.isEnabled) {
295
+ submit(((_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.document.textEditorModel.getValue()) || '');
296
+ }
297
+ },
298
+ className: 'codicon-send',
299
+ disabled: isInputEmpty || !props.isEnabled
300
+ }];
205
301
  return React.createElement("div", { className: 'theia-ChatInput' },
302
+ (changeSetUI === null || changeSetUI === void 0 ? void 0 : changeSetUI.elements) &&
303
+ React.createElement(ChangeSetBox, { changeSet: changeSetUI }),
206
304
  React.createElement("div", { className: 'theia-ChatInput-Editor-Box' },
207
305
  React.createElement("div", { className: 'theia-ChatInput-Editor', ref: editorContainerRef, onKeyDown: onKeyDown, onFocus: handleInputFocus, onBlur: handleInputBlur },
208
- React.createElement("div", { ref: placeholderRef, className: 'theia-ChatInput-Editor-Placeholder' }, "Ask a question"))),
209
- React.createElement("div", { className: "theia-ChatInputOptions" }, inProgress ? React.createElement("span", { className: "codicon codicon-stop-circle option", title: "Cancel (Esc)", onClick: () => {
210
- if (lastRequest) {
211
- props.onCancel(lastRequest);
212
- }
213
- setInProgress(false);
214
- } }) :
215
- React.createElement("span", { className: "codicon codicon-send option", title: "Send (Enter)", onClick: !props.isEnabled ? undefined : () => { var _a; return submit(((_a = editorRef.current) === null || _a === void 0 ? void 0 : _a.document.textEditorModel.getValue()) || ''); }, style: { cursor: !props.isEnabled ? 'default' : 'pointer', opacity: !props.isEnabled ? 0.5 : 1 } })));
306
+ React.createElement("div", { ref: placeholderRef, className: 'theia-ChatInput-Editor-Placeholder' }, "Ask a question")),
307
+ React.createElement(ChatInputOptions, { leftOptions: leftOptions, rightOptions: rightOptions })));
216
308
  };
309
+ const noPropagation = (handler) => (e) => {
310
+ handler();
311
+ e.stopPropagation();
312
+ };
313
+ const buildChangeSetUI = (changeSet, labelProvider, onDeleteChangeSet, onDeleteChangeSetElement) => ({
314
+ title: changeSet.title,
315
+ disabled: !hasPendingElementsToAccept(changeSet),
316
+ acceptAllPendingElements: () => acceptAllPendingElements(changeSet),
317
+ delete: () => onDeleteChangeSet(),
318
+ elements: changeSet.getElements().map(element => {
319
+ var _a, _b, _c, _d, _e, _f, _g, _h;
320
+ return ({
321
+ open: (_a = element === null || element === void 0 ? void 0 : element.open) === null || _a === void 0 ? void 0 : _a.bind(element),
322
+ iconClass: (_c = (_b = element.icon) !== null && _b !== void 0 ? _b : labelProvider.getIcon(element.uri)) !== null && _c !== void 0 ? _c : labelProvider.fileIcon,
323
+ nameClass: `${element.type} ${element.state}`,
324
+ name: (_d = element.name) !== null && _d !== void 0 ? _d : labelProvider.getName(element.uri),
325
+ additionalInfo: (_e = element.additionalInfo) !== null && _e !== void 0 ? _e : labelProvider.getDetails(element.uri),
326
+ openChange: (_f = element === null || element === void 0 ? void 0 : element.openChange) === null || _f === void 0 ? void 0 : _f.bind(element),
327
+ accept: element.state !== 'applied' ? (_g = element === null || element === void 0 ? void 0 : element.accept) === null || _g === void 0 ? void 0 : _g.bind(element) : undefined,
328
+ discard: element.state === 'applied' ? (_h = element === null || element === void 0 ? void 0 : element.discard) === null || _h === void 0 ? void 0 : _h.bind(element) : undefined,
329
+ delete: () => onDeleteChangeSetElement(changeSet.getElements().indexOf(element))
330
+ });
331
+ })
332
+ });
333
+ const ChangeSetBox = ({ changeSet }) => (React.createElement("div", { className: 'theia-ChatInput-ChangeSet-Box' },
334
+ React.createElement("div", { className: 'theia-ChatInput-ChangeSet-Header' },
335
+ React.createElement("h3", null, changeSet.title),
336
+ React.createElement("div", { className: 'theia-ChatInput-ChangeSet-Header-Actions' },
337
+ React.createElement("button", { className: 'theia-button', disabled: changeSet.disabled, title: 'Accept all pending changes', onClick: () => changeSet.acceptAllPendingElements() }, "Accept"),
338
+ React.createElement("span", { className: 'codicon codicon-close action', title: 'Delete Change Set', onClick: () => changeSet.delete() }))),
339
+ React.createElement("div", { className: 'theia-ChatInput-ChangeSet-List' },
340
+ React.createElement("ul", null, changeSet.elements.map((element, index) => (React.createElement("li", { key: index, title: 'Open Diff', onClick: () => { var _a; return (_a = element.openChange) === null || _a === void 0 ? void 0 : _a.call(element); } },
341
+ React.createElement("div", { className: `theia-ChatInput-ChangeSet-Icon ${element.iconClass}` }),
342
+ React.createElement("span", { className: 'theia-ChatInput-ChangeSet-labelParts' },
343
+ React.createElement("span", { className: `theia-ChatInput-ChangeSet-title ${element.nameClass}` }, element.name),
344
+ React.createElement("span", { className: 'theia-ChatInput-ChangeSet-additionalInfo' }, element.additionalInfo)),
345
+ React.createElement("div", { className: 'theia-ChatInput-ChangeSet-Actions' },
346
+ element.open && (React.createElement("span", { className: 'codicon codicon-file action', title: 'Open Original File', onClick: noPropagation(() => element.open()) })),
347
+ element.discard && (React.createElement("span", { className: 'codicon codicon-discard action', title: 'Undo', onClick: noPropagation(() => element.discard()) })),
348
+ element.accept && (React.createElement("span", { className: 'codicon codicon-check action', title: 'Accept', onClick: noPropagation(() => element.accept()) })),
349
+ React.createElement("span", { className: 'codicon codicon-close action', title: 'Delete', onClick: noPropagation(() => element.delete()) })))))))));
350
+ const ChatInputOptions = ({ leftOptions, rightOptions }) => (React.createElement("div", { className: "theia-ChatInputOptions" },
351
+ React.createElement("div", { className: "theia-ChatInputOptions-left" }, leftOptions.map((option, index) => (React.createElement("span", { key: index, className: `codicon ${option.className} option ${option.disabled ? 'disabled' : ''}`, title: option.title, onClick: option.handler })))),
352
+ React.createElement("div", { className: "theia-ChatInputOptions-right" }, rightOptions.map((option, index) => (React.createElement("span", { key: index, className: `codicon ${option.className} option ${option.disabled ? 'disabled' : ''}`, title: option.title, onClick: option.handler }))))));
353
+ function acceptAllPendingElements(changeSet) {
354
+ acceptablePendingElements(changeSet).forEach(e => e.accept());
355
+ }
356
+ function hasPendingElementsToAccept(changeSet) {
357
+ return acceptablePendingElements(changeSet).length > 0;
358
+ }
359
+ function acceptablePendingElements(changeSet) {
360
+ return changeSet.getElements().filter(e => e.accept && (e.state === undefined || e.state === 'pending'));
361
+ }
362
+ function getLatestRequest(chatModel) {
363
+ const requests = chatModel.getRequests();
364
+ return requests.length > 0 ? requests[requests.length - 1] : undefined;
365
+ }
217
366
  //# sourceMappingURL=chat-input-widget.js.map