@theia/ai-chat-ui 1.54.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 (118) hide show
  1. package/README.md +32 -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 +83 -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 +205 -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 +186 -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 +17 -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 +70 -0
  49. package/lib/browser/chat-response-renderer/markdown-part-renderer.js.map +1 -0
  50. package/lib/browser/chat-response-renderer/text-part-renderer.d.ts +9 -0
  51. package/lib/browser/chat-response-renderer/text-part-renderer.d.ts.map +1 -0
  52. package/lib/browser/chat-response-renderer/text-part-renderer.js +41 -0
  53. package/lib/browser/chat-response-renderer/text-part-renderer.js.map +1 -0
  54. package/lib/browser/chat-response-renderer/text-part-renderer.spec.d.ts +2 -0
  55. package/lib/browser/chat-response-renderer/text-part-renderer.spec.d.ts.map +1 -0
  56. package/lib/browser/chat-response-renderer/text-part-renderer.spec.js +46 -0
  57. package/lib/browser/chat-response-renderer/text-part-renderer.spec.js.map +1 -0
  58. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +9 -0
  59. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -0
  60. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +49 -0
  61. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -0
  62. package/lib/browser/chat-tree-view/chat-view-tree-container.d.ts +4 -0
  63. package/lib/browser/chat-tree-view/chat-view-tree-container.d.ts.map +1 -0
  64. package/lib/browser/chat-tree-view/chat-view-tree-container.js +33 -0
  65. package/lib/browser/chat-tree-view/chat-view-tree-container.js.map +1 -0
  66. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +53 -0
  67. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -0
  68. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +324 -0
  69. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -0
  70. package/lib/browser/chat-tree-view/index.d.ts +3 -0
  71. package/lib/browser/chat-tree-view/index.d.ts.map +1 -0
  72. package/lib/browser/chat-tree-view/index.js +21 -0
  73. package/lib/browser/chat-tree-view/index.js.map +1 -0
  74. package/lib/browser/chat-view-commands.d.ts +8 -0
  75. package/lib/browser/chat-view-commands.d.ts.map +1 -0
  76. package/lib/browser/chat-view-commands.js +44 -0
  77. package/lib/browser/chat-view-commands.js.map +1 -0
  78. package/lib/browser/chat-view-contribution.d.ts +18 -0
  79. package/lib/browser/chat-view-contribution.d.ts.map +1 -0
  80. package/lib/browser/chat-view-contribution.js +153 -0
  81. package/lib/browser/chat-view-contribution.js.map +1 -0
  82. package/lib/browser/chat-view-language-contribution.d.ts +20 -0
  83. package/lib/browser/chat-view-language-contribution.d.ts.map +1 -0
  84. package/lib/browser/chat-view-language-contribution.js +98 -0
  85. package/lib/browser/chat-view-language-contribution.js.map +1 -0
  86. package/lib/browser/chat-view-widget-toolbar-contribution.d.ts +11 -0
  87. package/lib/browser/chat-view-widget-toolbar-contribution.d.ts.map +1 -0
  88. package/lib/browser/chat-view-widget-toolbar-contribution.js +65 -0
  89. package/lib/browser/chat-view-widget-toolbar-contribution.js.map +1 -0
  90. package/lib/browser/chat-view-widget.d.ts +41 -0
  91. package/lib/browser/chat-view-widget.d.ts.map +1 -0
  92. package/lib/browser/chat-view-widget.js +182 -0
  93. package/lib/browser/chat-view-widget.js.map +1 -0
  94. package/package.json +59 -0
  95. package/src/browser/ai-chat-ui-contribution.ts +171 -0
  96. package/src/browser/ai-chat-ui-frontend-module.ts +101 -0
  97. package/src/browser/chat-input-widget.tsx +247 -0
  98. package/src/browser/chat-node-toolbar-action-contribution.ts +63 -0
  99. package/src/browser/chat-response-part-renderer.ts +25 -0
  100. package/src/browser/chat-response-renderer/ai-editor-manager.ts +183 -0
  101. package/src/browser/chat-response-renderer/code-part-renderer.tsx +208 -0
  102. package/src/browser/chat-response-renderer/command-part-renderer.tsx +60 -0
  103. package/src/browser/chat-response-renderer/error-part-renderer.tsx +35 -0
  104. package/src/browser/chat-response-renderer/horizontal-layout-part-renderer.tsx +59 -0
  105. package/src/browser/chat-response-renderer/index.ts +23 -0
  106. package/src/browser/chat-response-renderer/markdown-part-renderer.tsx +71 -0
  107. package/src/browser/chat-response-renderer/text-part-renderer.spec.ts +50 -0
  108. package/src/browser/chat-response-renderer/text-part-renderer.tsx +35 -0
  109. package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +49 -0
  110. package/src/browser/chat-tree-view/chat-view-tree-container.ts +32 -0
  111. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +410 -0
  112. package/src/browser/chat-tree-view/index.ts +18 -0
  113. package/src/browser/chat-view-commands.ts +45 -0
  114. package/src/browser/chat-view-contribution.ts +154 -0
  115. package/src/browser/chat-view-language-contribution.ts +141 -0
  116. package/src/browser/chat-view-widget-toolbar-contribution.tsx +54 -0
  117. package/src/browser/chat-view-widget.tsx +194 -0
  118. package/src/browser/style/index.css +328 -0
@@ -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":"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"}
@@ -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":";;;;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,4DAAyE;AAEzE,oDAAoD;AACpD,sCAAiE;AAEjE,4CAAkD;AAClD,sDAA8D;AAC9D,iGAAkF;AAErE,QAAA,qBAAqB,GAAG,6BAA6B,CAAC;AACtD,QAAA,4BAA4B,GAAG,oBAAoB,CAAC;AAG1D,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAYrC,OAAO,CAAC,IAAyB;QAC7B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,6BAAqB,EAAE,UAAU,EAAE,CAAC,oCAA4B,CAAC,EAAE,CAAC,CAAC;QAErG,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,6BAAqB,EAAE;YACnE,iBAAiB,EAAE,CAAC,GAAG,CAAC;YACxB,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAmD,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC;SAChK,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,6BAAqB,EAAE;YACnE,iBAAiB,EAAE,CAAC,GAAG,CAAC;YACxB,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAmD,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,QAAQ,CAAC;SACnK,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,6BAAqB,EAAE;YACnE,iBAAiB,EAAE,CAAC,GAAG,CAAC;YACxB,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAmD,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;SAC/J,CAAC,CAAC;IACP,CAAC;IAED,kBAAkB,CAAC,KAA+B,EAAE,QAAyB,EAAE,gBAAwB;QACnG,8EAA8E;QAC9E,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gDAAgD;QAE1G,IAAI,eAAe,KAAK,gBAAgB,EAAE,CAAC;YACvC,qFAAqF;YACrF,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,IAAI,MAAM,CAAC,KAAK,CACnB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,MAAM,CAClB,CAAC;IACN,CAAC;IAEO,cAAc,CAClB,KAA+B,EAC/B,QAAyB,EACzB,WAAmB,EACnB,KAAU,EACV,IAAyC,EACzC,KAA0B,EAC1B,OAA4B,EAC5B,cAAmC;QAEnC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9E,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC/B,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;YACpB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;SAC/B,CAAC,CAAC,CAAC;QACJ,OAAO,EAAE,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED,uBAAuB,CAAC,KAA+B,EAAE,QAAyB;QAC9E,OAAO,IAAI,CAAC,cAAc,CACtB,KAAK,EACL,QAAQ,EACR,GAAG,EACH,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAC7B,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EACzC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EACjB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EACnB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAC7B,CAAC;IACN,CAAC;IAED,0BAA0B,CAAC,KAA+B,EAAE,QAAyB;QACjF,OAAO,IAAI,CAAC,cAAc,CACtB,KAAK,EACL,QAAQ,EACR,GAAG,EACH,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,EACnC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAC5C,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EACzB,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EACzB,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CACnC,CAAC;IACN,CAAC;IAED,sBAAsB,CAAC,KAA+B,EAAE,QAAyB;QAC7E,OAAO,IAAI,CAAC,cAAc,CACtB,KAAK,EACL,QAAQ,EACR,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EACrE,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAC5C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EACjB,IAAI,CAAC,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,WAAW,mCAAI,EAAE,CAAA,EAAA,CACjC,CAAC;IACN,CAAC;CACJ,CAAA;AAhHY,oEAA4B;AAGlB;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;;kEACyB;AAG/B;IADlB,IAAA,kBAAM,EAAC,0BAAiB,CAAC;;qEAC4B;AAI9C;IAFP,IAAA,kBAAM,EAAC,2BAAoB,CAAC;IAC5B,IAAA,iBAAK,EAAC,uCAAY,CAAC;;+DACkC;uCAV7C,4BAA4B;IADxC,IAAA,sBAAU,GAAE;GACA,4BAA4B,CAgHxC"}
@@ -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"}
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var ChatViewWidget_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ChatViewWidget = void 0;
5
+ const tslib_1 = require("tslib");
6
+ // *****************************************************************************
7
+ // Copyright (C) 2024 EclipseSource GmbH.
8
+ //
9
+ // This program and the accompanying materials are made available under the
10
+ // terms of the Eclipse Public License v. 2.0 which is available at
11
+ // http://www.eclipse.org/legal/epl-2.0.
12
+ //
13
+ // This Source Code may also be made available under the following Secondary
14
+ // Licenses when the conditions for such availability set forth in the Eclipse
15
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
16
+ // with the GNU Classpath Exception which is available at
17
+ // https://www.gnu.org/software/classpath/license.html.
18
+ //
19
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
20
+ // *****************************************************************************
21
+ const core_1 = require("@theia/core");
22
+ const ai_chat_1 = require("@theia/ai-chat");
23
+ const browser_1 = require("@theia/core/lib/browser");
24
+ const nls_1 = require("@theia/core/lib/common/nls");
25
+ const inversify_1 = require("@theia/core/shared/inversify");
26
+ const chat_input_widget_1 = require("./chat-input-widget");
27
+ const chat_view_tree_widget_1 = require("./chat-tree-view/chat-view-tree-widget");
28
+ const ai_activation_service_1 = require("@theia/ai-core/lib/browser/ai-activation-service");
29
+ let ChatViewWidget = ChatViewWidget_1 = class ChatViewWidget extends browser_1.BaseWidget {
30
+ constructor(treeWidget, inputWidget) {
31
+ super();
32
+ this.treeWidget = treeWidget;
33
+ this.inputWidget = inputWidget;
34
+ this._state = { locked: false };
35
+ this.onStateChangedEmitter = new core_1.Emitter();
36
+ this.id = ChatViewWidget_1.ID;
37
+ this.title.label = ChatViewWidget_1.LABEL;
38
+ this.title.caption = ChatViewWidget_1.LABEL;
39
+ this.title.iconClass = (0, browser_1.codicon)('comment-discussion');
40
+ this.title.closable = true;
41
+ this.node.classList.add('chat-view-widget');
42
+ this.update();
43
+ }
44
+ init() {
45
+ this.toDispose.pushAll([
46
+ this.treeWidget,
47
+ this.inputWidget,
48
+ this.onStateChanged(newState => {
49
+ this.treeWidget.shouldScrollToEnd = !newState.locked;
50
+ this.update();
51
+ })
52
+ ]);
53
+ const layout = this.layout = new browser_1.PanelLayout();
54
+ this.treeWidget.node.classList.add('chat-tree-view-widget');
55
+ layout.addWidget(this.treeWidget);
56
+ this.inputWidget.node.classList.add('chat-input-widget');
57
+ layout.addWidget(this.inputWidget);
58
+ this.chatSession = this.chatService.createSession();
59
+ this.inputWidget.onQuery = this.onQuery.bind(this);
60
+ this.inputWidget.onCancel = this.onCancel.bind(this);
61
+ this.inputWidget.chatModel = this.chatSession.model;
62
+ this.treeWidget.trackChatModel(this.chatSession.model);
63
+ this.initListeners();
64
+ this.inputWidget.setEnabled(this.activationService.isActive);
65
+ this.treeWidget.setEnabled(this.activationService.isActive);
66
+ this.activationService.onDidChangeActiveStatus(change => {
67
+ this.treeWidget.setEnabled(change);
68
+ this.inputWidget.setEnabled(change);
69
+ this.update();
70
+ });
71
+ }
72
+ initListeners() {
73
+ this.toDispose.push(this.chatService.onActiveSessionChanged(event => {
74
+ const session = event.sessionId ? this.chatService.getSession(event.sessionId) : this.chatService.createSession();
75
+ if (session) {
76
+ this.chatSession = session;
77
+ this.treeWidget.trackChatModel(this.chatSession.model);
78
+ this.inputWidget.chatModel = this.chatSession.model;
79
+ if (event.focus) {
80
+ this.show();
81
+ }
82
+ }
83
+ else {
84
+ console.warn(`Session with ${event.sessionId} not found.`);
85
+ }
86
+ }));
87
+ }
88
+ storeState() {
89
+ return this.state;
90
+ }
91
+ restoreState(oldState) {
92
+ const copy = (0, core_1.deepClone)(this.state);
93
+ if (oldState.locked) {
94
+ copy.locked = oldState.locked;
95
+ }
96
+ this.state = copy;
97
+ }
98
+ get state() {
99
+ return this._state;
100
+ }
101
+ set state(state) {
102
+ this._state = state;
103
+ this.onStateChangedEmitter.fire(this._state);
104
+ }
105
+ get onStateChanged() {
106
+ return this.onStateChangedEmitter.event;
107
+ }
108
+ async onQuery(query) {
109
+ if (query.length === 0) {
110
+ return;
111
+ }
112
+ const chatRequest = {
113
+ text: query
114
+ };
115
+ const requestProgress = await this.chatService.sendRequest(this.chatSession.id, chatRequest);
116
+ requestProgress === null || requestProgress === void 0 ? void 0 : requestProgress.responseCompleted.then(responseModel => {
117
+ var _a, _b;
118
+ if (responseModel.isError) {
119
+ this.messageService.error((_b = (_a = responseModel.errorObject) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : 'An error occurred druring chat service invocation.');
120
+ }
121
+ });
122
+ if (!requestProgress) {
123
+ this.messageService.error(`Was not able to send request "${chatRequest.text}" to session ${this.chatSession.id}`);
124
+ return;
125
+ }
126
+ // Tree Widget currently tracks the ChatModel itself. Therefore no notification necessary.
127
+ }
128
+ onCancel(requestModel) {
129
+ // TODO we should pass a cancellation token with the request (or retrieve one from the request invocation) so we can cleanly cancel here
130
+ // For now we cancel manually via casting
131
+ requestModel.response.cancel();
132
+ }
133
+ lock() {
134
+ this.state = { ...(0, core_1.deepClone)(this.state), locked: true };
135
+ }
136
+ unlock() {
137
+ this.state = { ...(0, core_1.deepClone)(this.state), locked: false };
138
+ }
139
+ get isLocked() {
140
+ return !!this.state.locked;
141
+ }
142
+ get isExtractable() {
143
+ return this.secondaryWindow === undefined;
144
+ }
145
+ };
146
+ exports.ChatViewWidget = ChatViewWidget;
147
+ ChatViewWidget.ID = 'chat-view-widget';
148
+ ChatViewWidget.LABEL = `✨ ${nls_1.nls.localizeByDefault('Chat')} [Experimental]`;
149
+ tslib_1.__decorate([
150
+ (0, inversify_1.inject)(ai_chat_1.ChatService),
151
+ tslib_1.__metadata("design:type", Object)
152
+ ], ChatViewWidget.prototype, "chatService", void 0);
153
+ tslib_1.__decorate([
154
+ (0, inversify_1.inject)(core_1.MessageService),
155
+ tslib_1.__metadata("design:type", core_1.MessageService)
156
+ ], ChatViewWidget.prototype, "messageService", void 0);
157
+ tslib_1.__decorate([
158
+ (0, inversify_1.inject)(browser_1.PreferenceService),
159
+ tslib_1.__metadata("design:type", Object)
160
+ ], ChatViewWidget.prototype, "preferenceService", void 0);
161
+ tslib_1.__decorate([
162
+ (0, inversify_1.inject)(core_1.CommandService),
163
+ tslib_1.__metadata("design:type", Object)
164
+ ], ChatViewWidget.prototype, "commandService", void 0);
165
+ tslib_1.__decorate([
166
+ (0, inversify_1.inject)(ai_activation_service_1.AIActivationService),
167
+ tslib_1.__metadata("design:type", ai_activation_service_1.AIActivationService)
168
+ ], ChatViewWidget.prototype, "activationService", void 0);
169
+ tslib_1.__decorate([
170
+ (0, inversify_1.postConstruct)(),
171
+ tslib_1.__metadata("design:type", Function),
172
+ tslib_1.__metadata("design:paramtypes", []),
173
+ tslib_1.__metadata("design:returntype", void 0)
174
+ ], ChatViewWidget.prototype, "init", null);
175
+ exports.ChatViewWidget = ChatViewWidget = ChatViewWidget_1 = tslib_1.__decorate([
176
+ (0, inversify_1.injectable)(),
177
+ tslib_1.__param(0, (0, inversify_1.inject)(chat_view_tree_widget_1.ChatViewTreeWidget)),
178
+ tslib_1.__param(1, (0, inversify_1.inject)(chat_input_widget_1.AIChatInputWidget)),
179
+ tslib_1.__metadata("design:paramtypes", [chat_view_tree_widget_1.ChatViewTreeWidget,
180
+ chat_input_widget_1.AIChatInputWidget])
181
+ ], ChatViewWidget);
182
+ //# sourceMappingURL=chat-view-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-view-widget.js","sourceRoot":"","sources":["../../src/browser/chat-view-widget.tsx"],"names":[],"mappings":"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"}