@theia/ai-chat-ui 1.46.0-next.241

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 (123) hide show
  1. package/README.md +33 -0
  2. package/lib/browser/ai-chat-ui-contribution.d.ts +24 -0
  3. package/lib/browser/ai-chat-ui-contribution.d.ts.map +1 -0
  4. package/lib/browser/ai-chat-ui-contribution.js +161 -0
  5. package/lib/browser/ai-chat-ui-contribution.js.map +1 -0
  6. package/lib/browser/ai-chat-ui-frontend-module.d.ts +5 -0
  7. package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -0
  8. package/lib/browser/ai-chat-ui-frontend-module.js +87 -0
  9. package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -0
  10. package/lib/browser/chat-input-widget.d.ts +32 -0
  11. package/lib/browser/chat-input-widget.d.ts.map +1 -0
  12. package/lib/browser/chat-input-widget.js +217 -0
  13. package/lib/browser/chat-input-widget.js.map +1 -0
  14. package/lib/browser/chat-node-toolbar-action-contribution.d.ts +47 -0
  15. package/lib/browser/chat-node-toolbar-action-contribution.d.ts.map +1 -0
  16. package/lib/browser/chat-node-toolbar-action-contribution.js +25 -0
  17. package/lib/browser/chat-node-toolbar-action-contribution.js.map +1 -0
  18. package/lib/browser/chat-response-part-renderer.d.ts +10 -0
  19. package/lib/browser/chat-response-part-renderer.d.ts.map +1 -0
  20. package/lib/browser/chat-response-part-renderer.js +20 -0
  21. package/lib/browser/chat-response-part-renderer.js.map +1 -0
  22. package/lib/browser/chat-response-renderer/ai-editor-manager.d.ts +36 -0
  23. package/lib/browser/chat-response-renderer/ai-editor-manager.d.ts.map +1 -0
  24. package/lib/browser/chat-response-renderer/ai-editor-manager.js +184 -0
  25. package/lib/browser/chat-response-renderer/ai-editor-manager.js.map +1 -0
  26. package/lib/browser/chat-response-renderer/code-part-renderer.d.ts +45 -0
  27. package/lib/browser/chat-response-renderer/code-part-renderer.d.ts.map +1 -0
  28. package/lib/browser/chat-response-renderer/code-part-renderer.js +190 -0
  29. package/lib/browser/chat-response-renderer/code-part-renderer.js.map +1 -0
  30. package/lib/browser/chat-response-renderer/command-part-renderer.d.ts +12 -0
  31. package/lib/browser/chat-response-renderer/command-part-renderer.d.ts.map +1 -0
  32. package/lib/browser/chat-response-renderer/command-part-renderer.js +70 -0
  33. package/lib/browser/chat-response-renderer/command-part-renderer.js.map +1 -0
  34. package/lib/browser/chat-response-renderer/error-part-renderer.d.ts +9 -0
  35. package/lib/browser/chat-response-renderer/error-part-renderer.d.ts.map +1 -0
  36. package/lib/browser/chat-response-renderer/error-part-renderer.js +40 -0
  37. package/lib/browser/chat-response-renderer/error-part-renderer.js.map +1 -0
  38. package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.d.ts +12 -0
  39. package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.d.ts.map +1 -0
  40. package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.js +54 -0
  41. package/lib/browser/chat-response-renderer/horizontal-layout-part-renderer.js.map +1 -0
  42. package/lib/browser/chat-response-renderer/index.d.ts +9 -0
  43. package/lib/browser/chat-response-renderer/index.d.ts.map +1 -0
  44. package/lib/browser/chat-response-renderer/index.js +27 -0
  45. package/lib/browser/chat-response-renderer/index.js.map +1 -0
  46. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts +25 -0
  47. package/lib/browser/chat-response-renderer/markdown-part-renderer.d.ts.map +1 -0
  48. package/lib/browser/chat-response-renderer/markdown-part-renderer.js +89 -0
  49. package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -0
  50. package/lib/browser/chat-response-renderer/question-part-renderer.d.ts +10 -0
  51. package/lib/browser/chat-response-renderer/question-part-renderer.d.ts.map +1 -0
  52. package/lib/browser/chat-response-renderer/question-part-renderer.js +43 -0
  53. package/lib/browser/chat-response-renderer/question-part-renderer.js.map +1 -0
  54. package/lib/browser/chat-response-renderer/text-part-renderer.d.ts +9 -0
  55. package/lib/browser/chat-response-renderer/text-part-renderer.d.ts.map +1 -0
  56. package/lib/browser/chat-response-renderer/text-part-renderer.js +41 -0
  57. package/lib/browser/chat-response-renderer/text-part-renderer.js.map +1 -0
  58. package/lib/browser/chat-response-renderer/text-part-renderer.spec.d.ts +2 -0
  59. package/lib/browser/chat-response-renderer/text-part-renderer.spec.d.ts.map +1 -0
  60. package/lib/browser/chat-response-renderer/text-part-renderer.spec.js +46 -0
  61. package/lib/browser/chat-response-renderer/text-part-renderer.spec.js.map +1 -0
  62. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +12 -0
  63. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -0
  64. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +81 -0
  65. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -0
  66. package/lib/browser/chat-tree-view/chat-view-tree-container.d.ts +4 -0
  67. package/lib/browser/chat-tree-view/chat-view-tree-container.d.ts.map +1 -0
  68. package/lib/browser/chat-tree-view/chat-view-tree-container.js +33 -0
  69. package/lib/browser/chat-tree-view/chat-view-tree-container.js.map +1 -0
  70. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +56 -0
  71. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -0
  72. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +388 -0
  73. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -0
  74. package/lib/browser/chat-tree-view/index.d.ts +3 -0
  75. package/lib/browser/chat-tree-view/index.d.ts.map +1 -0
  76. package/lib/browser/chat-tree-view/index.js +21 -0
  77. package/lib/browser/chat-tree-view/index.js.map +1 -0
  78. package/lib/browser/chat-view-commands.d.ts +8 -0
  79. package/lib/browser/chat-view-commands.d.ts.map +1 -0
  80. package/lib/browser/chat-view-commands.js +44 -0
  81. package/lib/browser/chat-view-commands.js.map +1 -0
  82. package/lib/browser/chat-view-contribution.d.ts +18 -0
  83. package/lib/browser/chat-view-contribution.d.ts.map +1 -0
  84. package/lib/browser/chat-view-contribution.js +153 -0
  85. package/lib/browser/chat-view-contribution.js.map +1 -0
  86. package/lib/browser/chat-view-language-contribution.d.ts +20 -0
  87. package/lib/browser/chat-view-language-contribution.d.ts.map +1 -0
  88. package/lib/browser/chat-view-language-contribution.js +98 -0
  89. package/lib/browser/chat-view-language-contribution.js.map +1 -0
  90. package/lib/browser/chat-view-widget-toolbar-contribution.d.ts +11 -0
  91. package/lib/browser/chat-view-widget-toolbar-contribution.d.ts.map +1 -0
  92. package/lib/browser/chat-view-widget-toolbar-contribution.js +65 -0
  93. package/lib/browser/chat-view-widget-toolbar-contribution.js.map +1 -0
  94. package/lib/browser/chat-view-widget.d.ts +41 -0
  95. package/lib/browser/chat-view-widget.d.ts.map +1 -0
  96. package/lib/browser/chat-view-widget.js +182 -0
  97. package/lib/browser/chat-view-widget.js.map +1 -0
  98. package/package.json +59 -0
  99. package/src/browser/ai-chat-ui-contribution.ts +171 -0
  100. package/src/browser/ai-chat-ui-frontend-module.ts +105 -0
  101. package/src/browser/chat-input-widget.tsx +262 -0
  102. package/src/browser/chat-node-toolbar-action-contribution.ts +63 -0
  103. package/src/browser/chat-response-part-renderer.ts +25 -0
  104. package/src/browser/chat-response-renderer/ai-editor-manager.ts +183 -0
  105. package/src/browser/chat-response-renderer/code-part-renderer.tsx +211 -0
  106. package/src/browser/chat-response-renderer/command-part-renderer.tsx +60 -0
  107. package/src/browser/chat-response-renderer/error-part-renderer.tsx +35 -0
  108. package/src/browser/chat-response-renderer/horizontal-layout-part-renderer.tsx +59 -0
  109. package/src/browser/chat-response-renderer/index.ts +23 -0
  110. package/src/browser/chat-response-renderer/markdown-part-renderer.tsx +92 -0
  111. package/src/browser/chat-response-renderer/question-part-renderer.tsx +59 -0
  112. package/src/browser/chat-response-renderer/text-part-renderer.spec.ts +50 -0
  113. package/src/browser/chat-response-renderer/text-part-renderer.tsx +35 -0
  114. package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +89 -0
  115. package/src/browser/chat-tree-view/chat-view-tree-container.ts +32 -0
  116. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +526 -0
  117. package/src/browser/chat-tree-view/index.ts +18 -0
  118. package/src/browser/chat-view-commands.ts +45 -0
  119. package/src/browser/chat-view-contribution.ts +154 -0
  120. package/src/browser/chat-view-language-contribution.ts +141 -0
  121. package/src/browser/chat-view-widget-toolbar-contribution.tsx +54 -0
  122. package/src/browser/chat-view-widget.tsx +194 -0
  123. package/src/browser/style/index.css +415 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/chat-tree-view/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,qEAA2C;AAC3C,kEAAwC"}
@@ -0,0 +1,8 @@
1
+ import { Command } from '@theia/core';
2
+ export declare namespace ChatCommands {
3
+ const SCROLL_LOCK_WIDGET: Command;
4
+ const SCROLL_UNLOCK_WIDGET: Command;
5
+ }
6
+ export declare const AI_CHAT_NEW_CHAT_WINDOW_COMMAND: Command;
7
+ export declare const AI_CHAT_SHOW_CHATS_COMMAND: Command;
8
+ //# sourceMappingURL=chat-view-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-commands.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-commands.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AAG3C,yBAAiB,YAAY,CAAC;IAInB,MAAM,kBAAkB,SAIN,CAAC;IAEnB,MAAM,oBAAoB,SAIR,CAAC;CAC7B;AAED,eAAO,MAAM,+BAA+B,EAAE,OAG7C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,OAGxC,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2024 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.AI_CHAT_SHOW_CHATS_COMMAND = exports.AI_CHAT_NEW_CHAT_WINDOW_COMMAND = exports.ChatCommands = void 0;
19
+ const core_1 = require("@theia/core");
20
+ const browser_1 = require("@theia/core/lib/browser");
21
+ var ChatCommands;
22
+ (function (ChatCommands) {
23
+ const CHAT_CATEGORY = 'Chat';
24
+ const CHAT_CATEGORY_KEY = core_1.nls.getDefaultKey(CHAT_CATEGORY);
25
+ ChatCommands.SCROLL_LOCK_WIDGET = core_1.Command.toLocalizedCommand({
26
+ id: 'chat:widget:lock',
27
+ category: CHAT_CATEGORY,
28
+ iconClass: (0, browser_1.codicon)('unlock')
29
+ }, '', CHAT_CATEGORY_KEY);
30
+ ChatCommands.SCROLL_UNLOCK_WIDGET = core_1.Command.toLocalizedCommand({
31
+ id: 'chat:widget:unlock',
32
+ category: CHAT_CATEGORY,
33
+ iconClass: (0, browser_1.codicon)('lock')
34
+ }, '', CHAT_CATEGORY_KEY);
35
+ })(ChatCommands || (exports.ChatCommands = ChatCommands = {}));
36
+ exports.AI_CHAT_NEW_CHAT_WINDOW_COMMAND = {
37
+ id: 'ai-chat-ui.new-chat',
38
+ iconClass: (0, browser_1.codicon)('add')
39
+ };
40
+ exports.AI_CHAT_SHOW_CHATS_COMMAND = {
41
+ id: 'ai-chat-ui.show-chats',
42
+ iconClass: (0, browser_1.codicon)('history')
43
+ };
44
+ //# sourceMappingURL=chat-view-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-commands.js","sourceRoot":"","sources":["../../src/browser/chat-view-commands.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,sCAA2C;AAC3C,qDAAkD;AAElD,IAAiB,YAAY,CAe5B;AAfD,WAAiB,YAAY;IACzB,MAAM,aAAa,GAAG,MAAM,CAAC;IAC7B,MAAM,iBAAiB,GAAG,UAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAE9C,+BAAkB,GAAG,cAAO,CAAC,kBAAkB,CAAC;QACzD,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,aAAa;QACvB,SAAS,EAAE,IAAA,iBAAO,EAAC,QAAQ,CAAC;KAC/B,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAEb,iCAAoB,GAAG,cAAO,CAAC,kBAAkB,CAAC;QAC3D,EAAE,EAAE,oBAAoB;QACxB,QAAQ,EAAE,aAAa;QACvB,SAAS,EAAE,IAAA,iBAAO,EAAC,MAAM,CAAC;KAC7B,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC9B,CAAC,EAfgB,YAAY,4BAAZ,YAAY,QAe5B;AAEY,QAAA,+BAA+B,GAAY;IACpD,EAAE,EAAE,qBAAqB;IACzB,SAAS,EAAE,IAAA,iBAAO,EAAC,KAAK,CAAC;CAC5B,CAAC;AAEW,QAAA,0BAA0B,GAAY;IAC/C,EAAE,EAAE,uBAAuB;IAC3B,SAAS,EAAE,IAAA,iBAAO,EAAC,SAAS,CAAC;CAChC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Command, CommandContribution, CommandRegistry, CommandService, MenuContribution, MenuModelRegistry } from '@theia/core';
2
+ import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
3
+ import { RequestNode, ResponseNode } from './chat-tree-view/chat-view-tree-widget';
4
+ export declare namespace ChatViewCommands {
5
+ const COPY_MESSAGE: Command;
6
+ const COPY_ALL: Command;
7
+ const COPY_CODE: Command;
8
+ }
9
+ export declare class ChatViewMenuContribution implements MenuContribution, CommandContribution {
10
+ protected readonly clipboardService: ClipboardService;
11
+ protected readonly commandService: CommandService;
12
+ registerCommands(commands: CommandRegistry): void;
13
+ protected copyMessage(args: (RequestNode | ResponseNode)[]): void;
14
+ protected getTextAndJoin(args: (RequestNode | ResponseNode)[] | undefined): string;
15
+ protected getText(arg: RequestNode | ResponseNode): string;
16
+ registerMenus(menus: MenuModelRegistry): void;
17
+ }
18
+ //# sourceMappingURL=chat-view-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAY,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE3I,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAE7E,OAAO,EAAqD,WAAW,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAGtI,yBAAiB,gBAAgB,CAAC;IACvB,MAAM,YAAY,SAGvB,CAAC;IACI,MAAM,QAAQ,SAGnB,CAAC;IACI,MAAM,SAAS,SAGpB,CAAC;CACN;AAED,qBACa,wBAAyB,YAAW,gBAAgB,EAAE,mBAAmB;IAGlF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAElD,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAgDjD,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,GAAG,IAAI;IAKjE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,GAAG,SAAS,GAAG,MAAM;IAIlF,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,GAAG,MAAM;IAS1D,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;CAqBhD"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChatViewMenuContribution = exports.ChatViewCommands = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // *****************************************************************************
6
+ // Copyright (C) 2024 EclipseSource GmbH.
7
+ //
8
+ // This program and the accompanying materials are made available under the
9
+ // terms of the Eclipse Public License v. 2.0 which is available at
10
+ // http://www.eclipse.org/legal/epl-2.0.
11
+ //
12
+ // This Source Code may also be made available under the following Secondary
13
+ // Licenses when the conditions for such availability set forth in the Eclipse
14
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
15
+ // with the GNU Classpath Exception which is available at
16
+ // https://www.gnu.org/software/classpath/license.html.
17
+ //
18
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
19
+ // *****************************************************************************
20
+ const core_1 = require("@theia/core");
21
+ const browser_1 = require("@theia/core/lib/browser");
22
+ const clipboard_service_1 = require("@theia/core/lib/browser/clipboard-service");
23
+ const inversify_1 = require("@theia/core/shared/inversify");
24
+ const chat_view_tree_widget_1 = require("./chat-tree-view/chat-view-tree-widget");
25
+ const chat_input_widget_1 = require("./chat-input-widget");
26
+ var ChatViewCommands;
27
+ (function (ChatViewCommands) {
28
+ ChatViewCommands.COPY_MESSAGE = core_1.Command.toDefaultLocalizedCommand({
29
+ id: 'chat.copy.message',
30
+ label: 'Copy Message'
31
+ });
32
+ ChatViewCommands.COPY_ALL = core_1.Command.toDefaultLocalizedCommand({
33
+ id: 'chat.copy.all',
34
+ label: 'Copy All'
35
+ });
36
+ ChatViewCommands.COPY_CODE = core_1.Command.toDefaultLocalizedCommand({
37
+ id: 'chat.copy.code',
38
+ label: 'Copy Code Block'
39
+ });
40
+ })(ChatViewCommands || (exports.ChatViewCommands = ChatViewCommands = {}));
41
+ let ChatViewMenuContribution = class ChatViewMenuContribution {
42
+ registerCommands(commands) {
43
+ commands.registerHandler(browser_1.CommonCommands.COPY.id, {
44
+ execute: (...args) => {
45
+ var _a;
46
+ if (((_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.type) !== 'Range' && containsRequestOrResponseNode(args)) {
47
+ this.copyMessage(extractRequestOrResponseNodes(args));
48
+ }
49
+ else {
50
+ this.commandService.executeCommand(browser_1.CommonCommands.COPY.id);
51
+ }
52
+ },
53
+ isEnabled: (...args) => containsRequestOrResponseNode(args)
54
+ });
55
+ commands.registerCommand(ChatViewCommands.COPY_MESSAGE, {
56
+ execute: (...args) => {
57
+ if (containsRequestOrResponseNode(args)) {
58
+ this.copyMessage(extractRequestOrResponseNodes(args));
59
+ }
60
+ },
61
+ isEnabled: (...args) => containsRequestOrResponseNode(args)
62
+ });
63
+ commands.registerCommand(ChatViewCommands.COPY_ALL, {
64
+ execute: (...args) => {
65
+ var _a;
66
+ if (containsRequestOrResponseNode(args)) {
67
+ const parent = (_a = extractRequestOrResponseNodes(args).find(arg => arg.parent)) === null || _a === void 0 ? void 0 : _a.parent;
68
+ const text = parent === null || parent === void 0 ? void 0 : parent.children.filter(isRequestOrResponseNode).map(child => this.getText(child)).join('\n\n---\n\n');
69
+ if (text) {
70
+ this.clipboardService.writeText(text);
71
+ }
72
+ }
73
+ },
74
+ isEnabled: (...args) => containsRequestOrResponseNode(args)
75
+ });
76
+ commands.registerCommand(ChatViewCommands.COPY_CODE, {
77
+ execute: (...args) => {
78
+ if (containsCode(args)) {
79
+ const code = args
80
+ .filter(isCodeArg)
81
+ .map(arg => arg.code)
82
+ .join();
83
+ this.clipboardService.writeText(code);
84
+ }
85
+ },
86
+ isEnabled: (...args) => containsRequestOrResponseNode(args) && containsCode(args)
87
+ });
88
+ }
89
+ copyMessage(args) {
90
+ const text = this.getTextAndJoin(args);
91
+ this.clipboardService.writeText(text);
92
+ }
93
+ getTextAndJoin(args) {
94
+ return args !== undefined ? args.map(arg => this.getText(arg)).join() : '';
95
+ }
96
+ getText(arg) {
97
+ if ((0, chat_view_tree_widget_1.isRequestNode)(arg)) {
98
+ return arg.request.request.text;
99
+ }
100
+ else if ((0, chat_view_tree_widget_1.isResponseNode)(arg)) {
101
+ return arg.response.response.asString();
102
+ }
103
+ return '';
104
+ }
105
+ registerMenus(menus) {
106
+ menus.registerMenuAction([...chat_view_tree_widget_1.ChatViewTreeWidget.CONTEXT_MENU, '_1'], {
107
+ commandId: browser_1.CommonCommands.COPY.id
108
+ });
109
+ menus.registerMenuAction([...chat_view_tree_widget_1.ChatViewTreeWidget.CONTEXT_MENU, '_1'], {
110
+ commandId: ChatViewCommands.COPY_MESSAGE.id
111
+ });
112
+ menus.registerMenuAction([...chat_view_tree_widget_1.ChatViewTreeWidget.CONTEXT_MENU, '_1'], {
113
+ commandId: ChatViewCommands.COPY_ALL.id
114
+ });
115
+ menus.registerMenuAction([...chat_view_tree_widget_1.ChatViewTreeWidget.CONTEXT_MENU, '_1'], {
116
+ commandId: ChatViewCommands.COPY_CODE.id
117
+ });
118
+ menus.registerMenuAction([...chat_input_widget_1.AIChatInputWidget.CONTEXT_MENU, '_1'], {
119
+ commandId: browser_1.CommonCommands.COPY.id
120
+ });
121
+ menus.registerMenuAction([...chat_input_widget_1.AIChatInputWidget.CONTEXT_MENU, '_1'], {
122
+ commandId: browser_1.CommonCommands.PASTE.id
123
+ });
124
+ }
125
+ };
126
+ exports.ChatViewMenuContribution = ChatViewMenuContribution;
127
+ tslib_1.__decorate([
128
+ (0, inversify_1.inject)(clipboard_service_1.ClipboardService),
129
+ tslib_1.__metadata("design:type", Object)
130
+ ], ChatViewMenuContribution.prototype, "clipboardService", void 0);
131
+ tslib_1.__decorate([
132
+ (0, inversify_1.inject)(core_1.CommandService),
133
+ tslib_1.__metadata("design:type", Object)
134
+ ], ChatViewMenuContribution.prototype, "commandService", void 0);
135
+ exports.ChatViewMenuContribution = ChatViewMenuContribution = tslib_1.__decorate([
136
+ (0, inversify_1.injectable)()
137
+ ], ChatViewMenuContribution);
138
+ function extractRequestOrResponseNodes(args) {
139
+ return args.filter(arg => isRequestOrResponseNode(arg));
140
+ }
141
+ function containsRequestOrResponseNode(args) {
142
+ return extractRequestOrResponseNodes(args).length > 0;
143
+ }
144
+ function isRequestOrResponseNode(arg) {
145
+ return browser_1.TreeNode.is(arg) && ((0, chat_view_tree_widget_1.isRequestNode)(arg) || (0, chat_view_tree_widget_1.isResponseNode)(arg));
146
+ }
147
+ function containsCode(args) {
148
+ return args.filter(arg => isCodeArg(arg)).length > 0;
149
+ }
150
+ function isCodeArg(arg) {
151
+ return (0, core_1.isObject)(arg) && 'code' in arg;
152
+ }
153
+ //# sourceMappingURL=chat-view-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-view-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;AAChF,sCAA2I;AAC3I,qDAAmE;AACnE,iFAA6E;AAC7E,4DAAkE;AAClE,kFAAsI;AACtI,2DAAwD;AAExD,IAAiB,gBAAgB,CAahC;AAbD,WAAiB,gBAAgB;IAChB,6BAAY,GAAG,cAAO,CAAC,yBAAyB,CAAC;QAC1D,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,cAAc;KACxB,CAAC,CAAC;IACU,yBAAQ,GAAG,cAAO,CAAC,yBAAyB,CAAC;QACtD,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,UAAU;KACpB,CAAC,CAAC;IACU,0BAAS,GAAG,cAAO,CAAC,yBAAyB,CAAC;QACvD,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,iBAAiB;KAC3B,CAAC,CAAC;AACP,CAAC,EAbgB,gBAAgB,gCAAhB,gBAAgB,QAahC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAQjC,gBAAgB,CAAC,QAAyB;QACtC,QAAQ,CAAC,eAAe,CAAC,wBAAc,CAAC,IAAI,CAAC,EAAE,EAAE;YAC7C,OAAO,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;;gBAC5B,IAAI,CAAA,MAAA,MAAM,CAAC,YAAY,EAAE,0CAAE,IAAI,MAAK,OAAO,IAAI,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjF,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,wBAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACL,CAAC;YACD,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC;SACzE,CAAC,CAAC;QACH,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,YAAY,EAAE;YACpD,OAAO,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC5B,IAAI,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACL,CAAC;YACD,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC;SACzE,CAAC,CAAC;QACH,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAChD,OAAO,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;;gBAC5B,IAAI,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,MAAM,MAAM,GAAG,MAAA,6BAA6B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,0CAAE,MAAM,CAAC;oBACnF,MAAM,IAAI,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CACxB,MAAM,CAAC,uBAAuB,EAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAChC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACzB,IAAI,IAAI,EAAE,CAAC;wBACP,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC;YACL,CAAC;YACD,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC;SACzE,CAAC,CAAC;QACH,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE;YACjD,OAAO,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE;gBAC5B,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,IAAI;yBACZ,MAAM,CAAC,SAAS,CAAC;yBACjB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;yBACpB,IAAI,EAAE,CAAC;oBACZ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC;YACL,CAAC;YACD,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;SAC/F,CAAC,CAAC;IACP,CAAC;IAES,WAAW,CAAC,IAAoC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAES,cAAc,CAAC,IAAgD;QACrE,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,CAAC;IAES,OAAO,CAAC,GAA+B;QAC7C,IAAI,IAAA,qCAAa,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,CAAC;aAAM,IAAI,IAAA,sCAAc,EAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAwB;QAClC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,0CAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;YACjE,SAAS,EAAE,wBAAc,CAAC,IAAI,CAAC,EAAE;SACpC,CAAC,CAAC;QACH,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,0CAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;YACjE,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE;SAC9C,CAAC,CAAC;QACH,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,0CAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;YACjE,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;SAC1C,CAAC,CAAC;QACH,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,0CAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;YACjE,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAAE;SAC3C,CAAC,CAAC;QACH,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,qCAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;YAChE,SAAS,EAAE,wBAAc,CAAC,IAAI,CAAC,EAAE;SACpC,CAAC,CAAC;QACH,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,qCAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE;YAChE,SAAS,EAAE,wBAAc,CAAC,KAAK,CAAC,EAAE;SACrC,CAAC,CAAC;IACP,CAAC;CAEJ,CAAA;AA/FY,4DAAwB;AAGd;IADlB,IAAA,kBAAM,EAAC,oCAAgB,CAAC;;kEAC6B;AAGnC;IADlB,IAAA,kBAAM,EAAC,qBAAc,CAAC;;gEAC2B;mCANzC,wBAAwB;IADpC,IAAA,sBAAU,GAAE;GACA,wBAAwB,CA+FpC;AAED,SAAS,6BAA6B,CAAC,IAAe;IAClD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAmC,CAAC;AAC9F,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAe;IAClD,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAY;IACzC,OAAO,kBAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAA,qCAAa,EAAC,GAAG,CAAC,IAAI,IAAA,sCAAc,EAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CAAC,IAAe;IACjC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC3B,OAAO,IAAA,eAAQ,EAAC,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { FrontendApplication, FrontendApplicationContribution } from '@theia/core/lib/browser';
2
+ import * as monaco from '@theia/monaco-editor-core';
3
+ import { MaybePromise } from '@theia/core';
4
+ import { ProviderResult } from '@theia/monaco-editor-core/esm/vs/editor/common/languages';
5
+ import { ChatAgentService } from '@theia/ai-chat';
6
+ import { AIVariableService } from '@theia/ai-core/lib/common';
7
+ export declare const CHAT_VIEW_LANGUAGE_ID = "theia-ai-chat-view-language";
8
+ export declare const CHAT_VIEW_LANGUAGE_EXTENSION = "aichatviewlanguage";
9
+ export declare class ChatViewLanguageContribution implements FrontendApplicationContribution {
10
+ protected readonly agentService: ChatAgentService;
11
+ protected readonly variableService: AIVariableService;
12
+ private providers;
13
+ onStart(_app: FrontendApplication): MaybePromise<void>;
14
+ getCompletionRange(model: monaco.editor.ITextModel, position: monaco.Position, triggerCharacter: string): monaco.Range | undefined;
15
+ private getSuggestions;
16
+ provideAgentCompletions(model: monaco.editor.ITextModel, position: monaco.Position): ProviderResult<monaco.languages.CompletionList>;
17
+ provideVariableCompletions(model: monaco.editor.ITextModel, position: monaco.Position): ProviderResult<monaco.languages.CompletionList>;
18
+ provideToolCompletions(model: monaco.editor.ITextModel, position: monaco.Position): ProviderResult<monaco.languages.CompletionList>;
19
+ }
20
+ //# sourceMappingURL=chat-view-language-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-language-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-language-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAwB,YAAY,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AACnE,eAAO,MAAM,4BAA4B,uBAAuB,CAAC;AAEjE,qBACa,4BAA6B,YAAW,+BAA+B;IAGhF,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAItD,OAAO,CAAC,SAAS,CAAqC;IAEtD,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAAC,IAAI,CAAC;IAkBtD,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS;IAoBlI,OAAO,CAAC,cAAc;IAwBtB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IAapI,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IAavI,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;CAYtI"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChatViewLanguageContribution = exports.CHAT_VIEW_LANGUAGE_EXTENSION = exports.CHAT_VIEW_LANGUAGE_ID = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // *****************************************************************************
6
+ // Copyright (C) 2024 EclipseSource GmbH.
7
+ //
8
+ // This program and the accompanying materials are made available under the
9
+ // terms of the Eclipse Public License v. 2.0 which is available at
10
+ // http://www.eclipse.org/legal/epl-2.0.
11
+ //
12
+ // This Source Code may also be made available under the following Secondary
13
+ // Licenses when the conditions for such availability set forth in the Eclipse
14
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
15
+ // with the GNU Classpath Exception which is available at
16
+ // https://www.gnu.org/software/classpath/license.html.
17
+ //
18
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
19
+ // *****************************************************************************
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const monaco = require("@theia/monaco-editor-core");
22
+ const core_1 = require("@theia/core");
23
+ const ai_chat_1 = require("@theia/ai-chat");
24
+ const common_1 = require("@theia/ai-core/lib/common");
25
+ const tool_invocation_registry_1 = require("@theia/ai-core/lib/common/tool-invocation-registry");
26
+ exports.CHAT_VIEW_LANGUAGE_ID = 'theia-ai-chat-view-language';
27
+ exports.CHAT_VIEW_LANGUAGE_EXTENSION = 'aichatviewlanguage';
28
+ let ChatViewLanguageContribution = class ChatViewLanguageContribution {
29
+ onStart(_app) {
30
+ console.log('ChatViewLanguageContribution started');
31
+ monaco.languages.register({ id: exports.CHAT_VIEW_LANGUAGE_ID, extensions: [exports.CHAT_VIEW_LANGUAGE_EXTENSION] });
32
+ monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
33
+ triggerCharacters: ['@'],
34
+ provideCompletionItems: (model, position, _context, _token) => this.provideAgentCompletions(model, position),
35
+ });
36
+ monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
37
+ triggerCharacters: ['#'],
38
+ provideCompletionItems: (model, position, _context, _token) => this.provideVariableCompletions(model, position),
39
+ });
40
+ monaco.languages.registerCompletionItemProvider(exports.CHAT_VIEW_LANGUAGE_ID, {
41
+ triggerCharacters: ['~'],
42
+ provideCompletionItems: (model, position, _context, _token) => this.provideToolCompletions(model, position),
43
+ });
44
+ }
45
+ getCompletionRange(model, position, triggerCharacter) {
46
+ // Check if the character before the current position is the trigger character
47
+ const lineContent = model.getLineContent(position.lineNumber);
48
+ const characterBefore = lineContent[position.column - 2]; // Get the character before the current position
49
+ if (characterBefore !== triggerCharacter) {
50
+ // Do not return agent suggestions if the user didn't just type the trigger character
51
+ return undefined;
52
+ }
53
+ // Calculate the range from the position of the '@' character
54
+ const wordInfo = model.getWordUntilPosition(position);
55
+ return new monaco.Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, position.column);
56
+ }
57
+ getSuggestions(model, position, triggerChar, items, kind, getId, getName, getDescription) {
58
+ const completionRange = this.getCompletionRange(model, position, triggerChar);
59
+ if (completionRange === undefined) {
60
+ return { suggestions: [] };
61
+ }
62
+ const suggestions = items.map(item => ({
63
+ insertText: getId(item),
64
+ kind: kind,
65
+ label: getName(item),
66
+ range: completionRange,
67
+ detail: getDescription(item),
68
+ }));
69
+ return { suggestions };
70
+ }
71
+ provideAgentCompletions(model, position) {
72
+ return this.getSuggestions(model, position, '@', this.agentService.getAgents(), monaco.languages.CompletionItemKind.Value, agent => agent.id, agent => agent.name, agent => agent.description);
73
+ }
74
+ provideVariableCompletions(model, position) {
75
+ return this.getSuggestions(model, position, '#', this.variableService.getVariables(), monaco.languages.CompletionItemKind.Variable, variable => variable.name, variable => variable.name, variable => variable.description);
76
+ }
77
+ provideToolCompletions(model, position) {
78
+ return this.getSuggestions(model, position, '~', this.providers.getContributions().map(provider => provider.getTool()), monaco.languages.CompletionItemKind.Function, tool => tool.id, tool => tool.name, tool => { var _a; return (_a = tool.description) !== null && _a !== void 0 ? _a : ''; });
79
+ }
80
+ };
81
+ exports.ChatViewLanguageContribution = ChatViewLanguageContribution;
82
+ tslib_1.__decorate([
83
+ (0, inversify_1.inject)(ai_chat_1.ChatAgentService),
84
+ tslib_1.__metadata("design:type", Object)
85
+ ], ChatViewLanguageContribution.prototype, "agentService", void 0);
86
+ tslib_1.__decorate([
87
+ (0, inversify_1.inject)(common_1.AIVariableService),
88
+ tslib_1.__metadata("design:type", Object)
89
+ ], ChatViewLanguageContribution.prototype, "variableService", void 0);
90
+ tslib_1.__decorate([
91
+ (0, inversify_1.inject)(core_1.ContributionProvider),
92
+ (0, inversify_1.named)(tool_invocation_registry_1.ToolProvider),
93
+ tslib_1.__metadata("design:type", Object)
94
+ ], ChatViewLanguageContribution.prototype, "providers", void 0);
95
+ exports.ChatViewLanguageContribution = ChatViewLanguageContribution = tslib_1.__decorate([
96
+ (0, inversify_1.injectable)()
97
+ ], ChatViewLanguageContribution);
98
+ //# sourceMappingURL=chat-view-language-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-language-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-view-language-contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { TabBarToolbarContribution, TabBarToolbarRegistry } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
2
+ import { AIChatContribution } from './ai-chat-ui-contribution';
3
+ import { Emitter } from '@theia/core';
4
+ export declare class ChatViewWidgetToolbarContribution implements TabBarToolbarContribution {
5
+ protected readonly chatContribution: AIChatContribution;
6
+ protected readonly onChatWidgetStateChangedEmitter: Emitter<void>;
7
+ protected readonly onChatWidgetStateChanged: import("@theia/core").Event<void>;
8
+ protected init(): void;
9
+ registerToolbarItems(registry: TabBarToolbarRegistry): void;
10
+ }
11
+ //# sourceMappingURL=chat-view-widget-toolbar-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-widget-toolbar-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-widget-toolbar-contribution.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACjH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AAG3C,qBACa,iCAAkC,YAAW,yBAAyB;IAE/E,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAExD,SAAS,CAAC,QAAQ,CAAC,+BAA+B,gBAAuB;IACzE,SAAS,CAAC,QAAQ,CAAC,wBAAwB,oCAA8C;IAGzF,SAAS,CAAC,IAAI,IAAI,IAAI;IAMtB,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CAgB9D"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2024 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ChatViewWidgetToolbarContribution = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const ai_chat_ui_contribution_1 = require("./ai-chat-ui-contribution");
22
+ const core_1 = require("@theia/core");
23
+ const chat_view_commands_1 = require("./chat-view-commands");
24
+ let ChatViewWidgetToolbarContribution = class ChatViewWidgetToolbarContribution {
25
+ constructor() {
26
+ this.onChatWidgetStateChangedEmitter = new core_1.Emitter();
27
+ this.onChatWidgetStateChanged = this.onChatWidgetStateChangedEmitter.event;
28
+ }
29
+ init() {
30
+ this.chatContribution.widget.then(widget => {
31
+ widget.onStateChanged(() => this.onChatWidgetStateChangedEmitter.fire());
32
+ });
33
+ }
34
+ registerToolbarItems(registry) {
35
+ registry.registerItem({
36
+ id: chat_view_commands_1.ChatCommands.SCROLL_LOCK_WIDGET.id,
37
+ command: chat_view_commands_1.ChatCommands.SCROLL_LOCK_WIDGET.id,
38
+ tooltip: core_1.nls.localizeByDefault('Turn Auto Scrolling Off'),
39
+ onDidChange: this.onChatWidgetStateChanged,
40
+ priority: 2
41
+ });
42
+ registry.registerItem({
43
+ id: chat_view_commands_1.ChatCommands.SCROLL_UNLOCK_WIDGET.id,
44
+ command: chat_view_commands_1.ChatCommands.SCROLL_UNLOCK_WIDGET.id,
45
+ tooltip: core_1.nls.localizeByDefault('Turn Auto Scrolling On'),
46
+ onDidChange: this.onChatWidgetStateChanged,
47
+ priority: 2
48
+ });
49
+ }
50
+ };
51
+ exports.ChatViewWidgetToolbarContribution = ChatViewWidgetToolbarContribution;
52
+ tslib_1.__decorate([
53
+ (0, inversify_1.inject)(ai_chat_ui_contribution_1.AIChatContribution),
54
+ tslib_1.__metadata("design:type", ai_chat_ui_contribution_1.AIChatContribution)
55
+ ], ChatViewWidgetToolbarContribution.prototype, "chatContribution", void 0);
56
+ tslib_1.__decorate([
57
+ (0, inversify_1.postConstruct)(),
58
+ tslib_1.__metadata("design:type", Function),
59
+ tslib_1.__metadata("design:paramtypes", []),
60
+ tslib_1.__metadata("design:returntype", void 0)
61
+ ], ChatViewWidgetToolbarContribution.prototype, "init", null);
62
+ exports.ChatViewWidgetToolbarContribution = ChatViewWidgetToolbarContribution = tslib_1.__decorate([
63
+ (0, inversify_1.injectable)()
64
+ ], ChatViewWidgetToolbarContribution);
65
+ //# sourceMappingURL=chat-view-widget-toolbar-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-widget-toolbar-contribution.js","sourceRoot":"","sources":["../../src/browser/chat-view-widget-toolbar-contribution.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;;;;AAEhF,4DAAiF;AAEjF,uEAA+D;AAC/D,sCAA2C;AAC3C,6DAAoD;AAG7C,IAAM,iCAAiC,GAAvC,MAAM,iCAAiC;IAAvC;QAIgB,oCAA+B,GAAG,IAAI,cAAO,EAAQ,CAAC;QACtD,6BAAwB,GAAG,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC;IAyB7F,CAAC;IAtBa,IAAI;QACV,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACvC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,oBAAoB,CAAC,QAA+B;QAChD,QAAQ,CAAC,YAAY,CAAC;YAClB,EAAE,EAAE,iCAAY,CAAC,kBAAkB,CAAC,EAAE;YACtC,OAAO,EAAE,iCAAY,CAAC,kBAAkB,CAAC,EAAE;YAC3C,OAAO,EAAE,UAAG,CAAC,iBAAiB,CAAC,yBAAyB,CAAC;YACzD,WAAW,EAAE,IAAI,CAAC,wBAAwB;YAC1C,QAAQ,EAAE,CAAC;SACd,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,CAAC;YAClB,EAAE,EAAE,iCAAY,CAAC,oBAAoB,CAAC,EAAE;YACxC,OAAO,EAAE,iCAAY,CAAC,oBAAoB,CAAC,EAAE;YAC7C,OAAO,EAAE,UAAG,CAAC,iBAAiB,CAAC,wBAAwB,CAAC;YACxD,WAAW,EAAE,IAAI,CAAC,wBAAwB;YAC1C,QAAQ,EAAE,CAAC;SACd,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA9BY,8EAAiC;AAEvB;IADlB,IAAA,kBAAM,EAAC,4CAAkB,CAAC;sCACU,4CAAkB;2EAAC;AAM9C;IADT,IAAA,yBAAa,GAAE;;;;6DAKf;4CAZQ,iCAAiC;IAD7C,IAAA,sBAAU,GAAE;GACA,iCAAiC,CA8B7C"}
@@ -0,0 +1,41 @@
1
+ import { CommandService, Emitter, Event, MessageService } from '@theia/core';
2
+ import { ChatRequestModel, ChatService, ChatSession } from '@theia/ai-chat';
3
+ import { BaseWidget, ExtractableWidget, PreferenceService, StatefulWidget } from '@theia/core/lib/browser';
4
+ import { AIChatInputWidget } from './chat-input-widget';
5
+ import { ChatViewTreeWidget } from './chat-tree-view/chat-view-tree-widget';
6
+ import { AIActivationService } from '@theia/ai-core/lib/browser/ai-activation-service';
7
+ export declare namespace ChatViewWidget {
8
+ interface State {
9
+ locked?: boolean;
10
+ }
11
+ }
12
+ export declare class ChatViewWidget extends BaseWidget implements ExtractableWidget, StatefulWidget {
13
+ readonly treeWidget: ChatViewTreeWidget;
14
+ readonly inputWidget: AIChatInputWidget;
15
+ static ID: string;
16
+ static LABEL: string;
17
+ protected chatService: ChatService;
18
+ protected messageService: MessageService;
19
+ protected readonly preferenceService: PreferenceService;
20
+ protected readonly commandService: CommandService;
21
+ protected readonly activationService: AIActivationService;
22
+ protected chatSession: ChatSession;
23
+ protected _state: ChatViewWidget.State;
24
+ protected readonly onStateChangedEmitter: Emitter<ChatViewWidget.State>;
25
+ secondaryWindow: Window | undefined;
26
+ constructor(treeWidget: ChatViewTreeWidget, inputWidget: AIChatInputWidget);
27
+ protected init(): void;
28
+ protected initListeners(): void;
29
+ storeState(): object;
30
+ restoreState(oldState: object & Partial<ChatViewWidget.State>): void;
31
+ protected get state(): ChatViewWidget.State;
32
+ protected set state(state: ChatViewWidget.State);
33
+ get onStateChanged(): Event<ChatViewWidget.State>;
34
+ protected onQuery(query: string): Promise<void>;
35
+ protected onCancel(requestModel: ChatRequestModel): void;
36
+ lock(): void;
37
+ unlock(): void;
38
+ get isLocked(): boolean;
39
+ get isExtractable(): boolean;
40
+ }
41
+ //# sourceMappingURL=chat-view-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-widget.d.ts","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAa,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EAAe,gBAAgB,EAAwB,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAE,UAAU,EAAW,iBAAiB,EAAe,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGjI,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAEvF,yBAAiB,cAAc,CAAC;IAC5B,UAAiB,KAAK;QAClB,MAAM,CAAC,EAAE,OAAO,CAAC;KACpB;CACJ;AAED,qBACa,cAAe,SAAQ,UAAW,YAAW,iBAAiB,EAAE,cAAc;IA6BnF,QAAQ,CAAC,UAAU,EAAE,kBAAkB;IAEvC,QAAQ,CAAC,WAAW,EAAE,iBAAiB;IA7B3C,OAAc,EAAE,SAAsB;IACtC,MAAM,CAAC,KAAK,SAAuD;IAGnE,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAGnC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAGzC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAEnC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAqB;IAC3D,SAAS,CAAC,QAAQ,CAAC,qBAAqB,gCAAuC;IAE/E,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAIvB,UAAU,EAAE,kBAAkB,EAE9B,WAAW,EAAE,iBAAiB;IAa3C,SAAS,CAAC,IAAI,IAAI,IAAI;IAkCtB,SAAS,CAAC,aAAa,IAAI,IAAI;IAkB/B,UAAU,IAAI,MAAM;IAIpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI;IAQpE,SAAS,KAAK,KAAK,IAAI,cAAc,CAAC,KAAK,CAE1C;IAED,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAG9C;IAED,IAAI,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAEhD;cAEe,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAMxD,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAId,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;CACJ"}