@opensumi/ide-ai-native 2.26.9-next-1695201123.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 (194) hide show
  1. package/LICENSE +21 -0
  2. package/lib/browser/ai-chat.contribution.d.ts +26 -0
  3. package/lib/browser/ai-chat.contribution.d.ts.map +1 -0
  4. package/lib/browser/ai-chat.contribution.js +228 -0
  5. package/lib/browser/ai-chat.contribution.js.map +1 -0
  6. package/lib/browser/ai-chat.module.less +174 -0
  7. package/lib/browser/ai-chat.service.d.ts +30 -0
  8. package/lib/browser/ai-chat.service.d.ts.map +1 -0
  9. package/lib/browser/ai-chat.service.js +129 -0
  10. package/lib/browser/ai-chat.service.js.map +1 -0
  11. package/lib/browser/ai-chat.view.d.ts +4 -0
  12. package/lib/browser/ai-chat.view.d.ts.map +1 -0
  13. package/lib/browser/ai-chat.view.js +292 -0
  14. package/lib/browser/ai-chat.view.js.map +1 -0
  15. package/lib/browser/ai-editor.contribution.d.ts +26 -0
  16. package/lib/browser/ai-editor.contribution.d.ts.map +1 -0
  17. package/lib/browser/ai-editor.contribution.js +430 -0
  18. package/lib/browser/ai-editor.contribution.js.map +1 -0
  19. package/lib/browser/ai-project/generate.service.d.ts +34 -0
  20. package/lib/browser/ai-project/generate.service.d.ts.map +1 -0
  21. package/lib/browser/ai-project/generate.service.js +460 -0
  22. package/lib/browser/ai-project/generate.service.js.map +1 -0
  23. package/lib/browser/ai-sumi/sumi.service.d.ts +11 -0
  24. package/lib/browser/ai-sumi/sumi.service.d.ts.map +1 -0
  25. package/lib/browser/ai-sumi/sumi.service.js +64 -0
  26. package/lib/browser/ai-sumi/sumi.service.js.map +1 -0
  27. package/lib/browser/code-widget/ai-code-document.provider.d.ts +10 -0
  28. package/lib/browser/code-widget/ai-code-document.provider.d.ts.map +1 -0
  29. package/lib/browser/code-widget/ai-code-document.provider.js +26 -0
  30. package/lib/browser/code-widget/ai-code-document.provider.js.map +1 -0
  31. package/lib/browser/code-widget/ai-code-widget.d.ts +20 -0
  32. package/lib/browser/code-widget/ai-code-widget.d.ts.map +1 -0
  33. package/lib/browser/code-widget/ai-code-widget.js +164 -0
  34. package/lib/browser/code-widget/ai-code-widget.js.map +1 -0
  35. package/lib/browser/components/AIImprove.d.ts +9 -0
  36. package/lib/browser/components/AIImprove.d.ts.map +1 -0
  37. package/lib/browser/components/AIImprove.js +34 -0
  38. package/lib/browser/components/AIImprove.js.map +1 -0
  39. package/lib/browser/components/AIInput.d.ts +5 -0
  40. package/lib/browser/components/AIInput.d.ts.map +1 -0
  41. package/lib/browser/components/AIInput.js +22 -0
  42. package/lib/browser/components/AIInput.js.map +1 -0
  43. package/lib/browser/components/ChatEditor.d.ts +5 -0
  44. package/lib/browser/components/ChatEditor.d.ts.map +1 -0
  45. package/lib/browser/components/ChatEditor.js +85 -0
  46. package/lib/browser/components/ChatEditor.js.map +1 -0
  47. package/lib/browser/components/ChatInput.d.ts +6 -0
  48. package/lib/browser/components/ChatInput.d.ts.map +1 -0
  49. package/lib/browser/components/ChatInput.js +126 -0
  50. package/lib/browser/components/ChatInput.js.map +1 -0
  51. package/lib/browser/components/ChatMoreActions.d.ts +5 -0
  52. package/lib/browser/components/ChatMoreActions.d.ts.map +1 -0
  53. package/lib/browser/components/ChatMoreActions.js +26 -0
  54. package/lib/browser/components/ChatMoreActions.js.map +1 -0
  55. package/lib/browser/components/Thinking.d.ts +3 -0
  56. package/lib/browser/components/Thinking.d.ts.map +1 -0
  57. package/lib/browser/components/Thinking.js +19 -0
  58. package/lib/browser/components/Thinking.js.map +1 -0
  59. package/lib/browser/components/components.module.less +261 -0
  60. package/lib/browser/components/lineVertical.d.ts +4 -0
  61. package/lib/browser/components/lineVertical.d.ts.map +1 -0
  62. package/lib/browser/components/lineVertical.js +22 -0
  63. package/lib/browser/components/lineVertical.js.map +1 -0
  64. package/lib/browser/content-widget/ai-content-widget.d.ts +38 -0
  65. package/lib/browser/content-widget/ai-content-widget.d.ts.map +1 -0
  66. package/lib/browser/content-widget/ai-content-widget.js +97 -0
  67. package/lib/browser/content-widget/ai-content-widget.js.map +1 -0
  68. package/lib/browser/content-widget/ai-inline-chat-panel.d.ts +6 -0
  69. package/lib/browser/content-widget/ai-inline-chat-panel.d.ts.map +1 -0
  70. package/lib/browser/content-widget/ai-inline-chat-panel.js +108 -0
  71. package/lib/browser/content-widget/ai-inline-chat-panel.js.map +1 -0
  72. package/lib/browser/content-widget/ai-inline-chat.module.less +81 -0
  73. package/lib/browser/content-widget/ai-inline-chat.service.d.ts +23 -0
  74. package/lib/browser/content-widget/ai-inline-chat.service.d.ts.map +1 -0
  75. package/lib/browser/content-widget/ai-inline-chat.service.js +47 -0
  76. package/lib/browser/content-widget/ai-inline-chat.service.js.map +1 -0
  77. package/lib/browser/diff-widget/ai-diff-document.provider.d.ts +10 -0
  78. package/lib/browser/diff-widget/ai-diff-document.provider.d.ts.map +1 -0
  79. package/lib/browser/diff-widget/ai-diff-document.provider.js +26 -0
  80. package/lib/browser/diff-widget/ai-diff-document.provider.js.map +1 -0
  81. package/lib/browser/diff-widget/ai-diff-widget.d.ts +20 -0
  82. package/lib/browser/diff-widget/ai-diff-widget.d.ts.map +1 -0
  83. package/lib/browser/diff-widget/ai-diff-widget.js +158 -0
  84. package/lib/browser/diff-widget/ai-diff-widget.js.map +1 -0
  85. package/lib/browser/index.d.ts +11 -0
  86. package/lib/browser/index.d.ts.map +1 -0
  87. package/lib/browser/index.js +82 -0
  88. package/lib/browser/index.js.map +1 -0
  89. package/lib/browser/inline-completions/constants.d.ts +62 -0
  90. package/lib/browser/inline-completions/constants.d.ts.map +1 -0
  91. package/lib/browser/inline-completions/constants.js +69 -0
  92. package/lib/browser/inline-completions/constants.js.map +1 -0
  93. package/lib/browser/inline-completions/provider.d.ts +27 -0
  94. package/lib/browser/inline-completions/provider.d.ts.map +1 -0
  95. package/lib/browser/inline-completions/provider.js +63 -0
  96. package/lib/browser/inline-completions/provider.js.map +1 -0
  97. package/lib/browser/override/ai-editor-tab.service.d.ts +6 -0
  98. package/lib/browser/override/ai-editor-tab.service.d.ts.map +1 -0
  99. package/lib/browser/override/ai-editor-tab.service.js +22 -0
  100. package/lib/browser/override/ai-editor-tab.service.js.map +1 -0
  101. package/lib/browser/override/ai-marker.service.d.ts +11 -0
  102. package/lib/browser/override/ai-marker.service.d.ts.map +1 -0
  103. package/lib/browser/override/ai-marker.service.js +56 -0
  104. package/lib/browser/override/ai-marker.service.js.map +1 -0
  105. package/lib/browser/override/layout/layout-config.d.ts +11 -0
  106. package/lib/browser/override/layout/layout-config.d.ts.map +1 -0
  107. package/lib/browser/override/layout/layout-config.js +17 -0
  108. package/lib/browser/override/layout/layout-config.js.map +1 -0
  109. package/lib/browser/override/layout/layout.module.less +261 -0
  110. package/lib/browser/override/layout/main-slot-renderer.d.ts +4 -0
  111. package/lib/browser/override/layout/main-slot-renderer.d.ts.map +1 -0
  112. package/lib/browser/override/layout/main-slot-renderer.js +23 -0
  113. package/lib/browser/override/layout/main-slot-renderer.js.map +1 -0
  114. package/lib/browser/override/layout/menu-bar/menu-bar.contribution.d.ts +8 -0
  115. package/lib/browser/override/layout/menu-bar/menu-bar.contribution.d.ts.map +1 -0
  116. package/lib/browser/override/layout/menu-bar/menu-bar.contribution.js +32 -0
  117. package/lib/browser/override/layout/menu-bar/menu-bar.contribution.js.map +1 -0
  118. package/lib/browser/override/layout/menu-bar/menu-bar.module.less +41 -0
  119. package/lib/browser/override/layout/menu-bar/menu-bar.view.d.ts +3 -0
  120. package/lib/browser/override/layout/menu-bar/menu-bar.view.d.ts.map +1 -0
  121. package/lib/browser/override/layout/menu-bar/menu-bar.view.js +62 -0
  122. package/lib/browser/override/layout/menu-bar/menu-bar.view.js.map +1 -0
  123. package/lib/browser/override/layout/tabbar.view.d.ts +19 -0
  124. package/lib/browser/override/layout/tabbar.view.d.ts.map +1 -0
  125. package/lib/browser/override/layout/tabbar.view.js +38 -0
  126. package/lib/browser/override/layout/tabbar.view.js.map +1 -0
  127. package/lib/browser/override/override.module.less +32 -0
  128. package/lib/browser/override/theme/default-theme.d.ts +315 -0
  129. package/lib/browser/override/theme/default-theme.d.ts.map +1 -0
  130. package/lib/browser/override/theme/default-theme.js +821 -0
  131. package/lib/browser/override/theme/default-theme.js.map +1 -0
  132. package/lib/browser/run/run.service.d.ts +52 -0
  133. package/lib/browser/run/run.service.d.ts.map +1 -0
  134. package/lib/browser/run/run.service.js +176 -0
  135. package/lib/browser/run/run.service.js.map +1 -0
  136. package/lib/common/command.d.ts +17 -0
  137. package/lib/common/command.d.ts.map +1 -0
  138. package/lib/common/command.js +21 -0
  139. package/lib/common/command.js.map +1 -0
  140. package/lib/common/index.d.ts +47 -0
  141. package/lib/common/index.d.ts.map +1 -0
  142. package/lib/common/index.js +33 -0
  143. package/lib/common/index.js.map +1 -0
  144. package/lib/index.d.ts +2 -0
  145. package/lib/index.d.ts.map +1 -0
  146. package/lib/index.js +5 -0
  147. package/lib/index.js.map +1 -0
  148. package/lib/node/index.d.ts +10 -0
  149. package/lib/node/index.d.ts.map +1 -0
  150. package/lib/node/index.js +32 -0
  151. package/lib/node/index.js.map +1 -0
  152. package/package.json +38 -0
  153. package/src/browser/ai-chat.contribution.ts +300 -0
  154. package/src/browser/ai-chat.module.less +174 -0
  155. package/src/browser/ai-chat.service.ts +146 -0
  156. package/src/browser/ai-chat.view.tsx +410 -0
  157. package/src/browser/ai-editor.contribution.ts +564 -0
  158. package/src/browser/ai-project/generate.service.ts +515 -0
  159. package/src/browser/ai-sumi/sumi.service.ts +65 -0
  160. package/src/browser/code-widget/ai-code-document.provider.ts +22 -0
  161. package/src/browser/code-widget/ai-code-widget.tsx +202 -0
  162. package/src/browser/components/AIImprove.tsx +45 -0
  163. package/src/browser/components/AIInput.tsx +30 -0
  164. package/src/browser/components/ChatEditor.tsx +129 -0
  165. package/src/browser/components/ChatInput.tsx +199 -0
  166. package/src/browser/components/ChatMoreActions.tsx +33 -0
  167. package/src/browser/components/Thinking.tsx +23 -0
  168. package/src/browser/components/components.module.less +261 -0
  169. package/src/browser/components/lineVertical.tsx +19 -0
  170. package/src/browser/content-widget/ai-content-widget.tsx +132 -0
  171. package/src/browser/content-widget/ai-inline-chat-panel.tsx +163 -0
  172. package/src/browser/content-widget/ai-inline-chat.module.less +81 -0
  173. package/src/browser/content-widget/ai-inline-chat.service.ts +46 -0
  174. package/src/browser/diff-widget/ai-diff-document.provider.ts +22 -0
  175. package/src/browser/diff-widget/ai-diff-widget.tsx +196 -0
  176. package/src/browser/index.ts +89 -0
  177. package/src/browser/inline-completions/constants.ts +108 -0
  178. package/src/browser/inline-completions/provider.ts +55 -0
  179. package/src/browser/override/ai-editor-tab.service.tsx +22 -0
  180. package/src/browser/override/ai-marker.service.tsx +61 -0
  181. package/src/browser/override/layout/layout-config.ts +17 -0
  182. package/src/browser/override/layout/layout.module.less +261 -0
  183. package/src/browser/override/layout/main-slot-renderer.tsx +63 -0
  184. package/src/browser/override/layout/menu-bar/menu-bar.contribution.tsx +28 -0
  185. package/src/browser/override/layout/menu-bar/menu-bar.module.less +41 -0
  186. package/src/browser/override/layout/menu-bar/menu-bar.view.tsx +92 -0
  187. package/src/browser/override/layout/tabbar.view.tsx +91 -0
  188. package/src/browser/override/override.module.less +32 -0
  189. package/src/browser/override/theme/default-theme.ts +818 -0
  190. package/src/browser/run/run.service.ts +186 -0
  191. package/src/common/command.ts +21 -0
  192. package/src/common/index.ts +50 -0
  193. package/src/index.ts +1 -0
  194. package/src/node/index.ts +24 -0
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiCodeWidget = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const react_dom_1 = tslib_1.__importDefault(require("react-dom"));
7
+ const di_1 = require("@opensumi/di");
8
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
9
+ const ide_core_browser_2 = require("@opensumi/ide-core-browser");
10
+ const ide_editor_1 = require("@opensumi/ide-editor");
11
+ const ide_editor_2 = require("@opensumi/ide-editor");
12
+ const index_1 = require("@opensumi/ide-editor/lib/browser/index");
13
+ const monaco_api_1 = require("@opensumi/ide-monaco/lib/browser/monaco-api");
14
+ const zoneWidget_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/contrib/zoneWidget/browser/zoneWidget");
15
+ const diffEditorOptions = {
16
+ scrollBeyondLastLine: false,
17
+ scrollbar: {
18
+ verticalScrollbarSize: 14,
19
+ horizontal: 'auto',
20
+ useShadows: true,
21
+ verticalHasArrows: false,
22
+ horizontalHasArrows: false,
23
+ alwaysConsumeMouseWheel: false,
24
+ },
25
+ fixedOverflowWidgets: true,
26
+ readOnly: true,
27
+ minimap: {
28
+ enabled: false,
29
+ },
30
+ enableSplitViewResizing: true,
31
+ renderOverviewRuler: true,
32
+ ignoreTrimWhitespace: false,
33
+ renderSideBySide: true,
34
+ lineNumbers: 'on',
35
+ glyphMargin: false,
36
+ };
37
+ const CodeContentProvider = react_1.default.memo(((props) => {
38
+ const { dto, onMaxLincCount } = props;
39
+ const documentModelService = (0, ide_core_browser_1.useInjectable)(index_1.IEditorDocumentModelService);
40
+ const editorCollectionService = (0, ide_core_browser_1.useInjectable)(ide_editor_1.EditorCollectionService);
41
+ const editorRef = (0, react_1.useRef)(null);
42
+ (0, react_1.useEffect)(() => {
43
+ if (!dto) {
44
+ return;
45
+ }
46
+ let codeEditor;
47
+ const random = Math.random() * 10;
48
+ const originUri = ide_core_browser_1.URI.parse(`AI://origin${random}`);
49
+ Promise.all([
50
+ documentModelService.createModelReference(originUri),
51
+ ]).then((data) => {
52
+ const [original] = data;
53
+ if (!original) {
54
+ return;
55
+ }
56
+ const { answerValue } = dto;
57
+ codeEditor = editorCollectionService.createCodeEditor(editorRef.current, Object.assign(Object.assign({}, (0, ide_editor_2.getSimpleEditorOptions)()), diffEditorOptions));
58
+ const originalModel = original.instance.getMonacoModel();
59
+ originalModel.setMode('java');
60
+ originalModel.setValue(answerValue);
61
+ codeEditor.monacoEditor.setModel(originalModel);
62
+ codeEditor.monacoEditor.updateOptions({ readOnly: true });
63
+ if (onMaxLincCount) {
64
+ const { monacoEditor } = codeEditor;
65
+ const contentHeight = monacoEditor.getContentHeight();
66
+ const lineCount = contentHeight / monacoEditor.getOption(monaco_api_1.monaco.editor.EditorOption.lineHeight);
67
+ onMaxLincCount(lineCount);
68
+ }
69
+ });
70
+ return () => {
71
+ if (codeEditor) {
72
+ codeEditor.dispose();
73
+ }
74
+ };
75
+ }, [dto]);
76
+ return react_1.default.createElement("div", { ref: editorRef, style: { height: 'inherit', width: '100%', border: '1px solid #6666' } });
77
+ }));
78
+ const styles = {
79
+ height: '100%',
80
+ display: 'flex',
81
+ alignItems: 'center',
82
+ flexDirection: 'column',
83
+ backgroundColor: 'rgba(38, 79, 120, 0.25)',
84
+ };
85
+ let AiCodeWidget = class AiCodeWidget extends zoneWidget_1.ZoneWidget {
86
+ applyClass() { }
87
+ applyStyle() { }
88
+ _fillContainer(container) {
89
+ this.setCssClass('ai_code-widget');
90
+ react_dom_1.default.render(react_1.default.createElement(ide_core_browser_2.ConfigProvider, { value: this.configContext },
91
+ react_1.default.createElement("div", { style: styles },
92
+ this.headUri &&
93
+ react_1.default.createElement("div", { className: 'ai_code_head', style: {
94
+ display: 'flex',
95
+ alignItems: 'center',
96
+ width: '100%',
97
+ whiteSpace: 'nowrap',
98
+ padding: '3px 16px',
99
+ } },
100
+ react_1.default.createElement("span", { style: {
101
+ color: 'white',
102
+ marginRight: '10px',
103
+ } }, this.headUri.displayName),
104
+ react_1.default.createElement("span", null, this.headUri.codeUri.fsPath.replace(this.configContext.workspaceDir, ''))),
105
+ react_1.default.createElement(CodeContentProvider, { dto: { answerValue: this.answerValue }, onMaxLincCount: (n) => {
106
+ if (n) {
107
+ this._relayout(n);
108
+ }
109
+ } }))), container);
110
+ }
111
+ constructor(editor, answerValue, headUri) {
112
+ // @ts-ignore
113
+ super(editor, {
114
+ showArrow: false,
115
+ showFrame: false,
116
+ arrowColor: undefined,
117
+ frameColor: undefined,
118
+ // 这里有个小坑,如果不开启这个配置,那么在调用 show 函数的时候会自动对焦并滚动到对应 range,导致在编辑 result 视图中代码时光标总是滚动在最后一个 widget 上
119
+ keepEditorSelection: true,
120
+ });
121
+ this.answerValue = answerValue;
122
+ this.headUri = ide_core_browser_1.URI.parse(headUri);
123
+ }
124
+ // 覆写 revealLine 函数,使其在 show 的时候编辑器不会定位到对应位置
125
+ revealLine(lineNumber, isLastLine) {
126
+ // not implement
127
+ }
128
+ getRecordLine() {
129
+ return this.recordLine;
130
+ }
131
+ setContainerStyle(style) {
132
+ var _a;
133
+ const keys = Object.keys(style);
134
+ for (const key of keys) {
135
+ if (Object.prototype.hasOwnProperty.call((_a = this.container) === null || _a === void 0 ? void 0 : _a.style, key)) {
136
+ this.container.style[key] = style[key];
137
+ }
138
+ }
139
+ }
140
+ addClassName(type) {
141
+ this.setCssClass(type);
142
+ return this;
143
+ }
144
+ showByLine(line, lineNumber = 20) {
145
+ this.recordLine = line;
146
+ super.hide();
147
+ super.show({
148
+ startLineNumber: line,
149
+ startColumn: 0,
150
+ endLineNumber: line,
151
+ endColumn: Number.MAX_SAFE_INTEGER,
152
+ }, lineNumber);
153
+ }
154
+ };
155
+ tslib_1.__decorate([
156
+ (0, di_1.Autowired)(ide_core_browser_1.AppConfig),
157
+ tslib_1.__metadata("design:type", Object)
158
+ ], AiCodeWidget.prototype, "configContext", void 0);
159
+ AiCodeWidget = tslib_1.__decorate([
160
+ (0, di_1.Injectable)({ multiple: true }),
161
+ tslib_1.__metadata("design:paramtypes", [Object, String, String])
162
+ ], AiCodeWidget);
163
+ exports.AiCodeWidget = AiCodeWidget;
164
+ //# sourceMappingURL=ai-code-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-code-widget.js","sourceRoot":"","sources":["../../../src/browser/code-widget/ai-code-widget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export declare const AIImprove: (props: {
3
+ onClick?: ((title: string) => void) | undefined;
4
+ lists?: {
5
+ title: string;
6
+ iconClass: string;
7
+ }[] | undefined;
8
+ }) => React.JSX.Element;
9
+ //# sourceMappingURL=AIImprove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIImprove.d.ts","sourceRoot":"","sources":["../../../src/browser/components/AIImprove.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAKpD,eAAO,MAAM,SAAS;uBAA+B,MAAM,KAAK,IAAI;;eAAmB,MAAM;mBAAa,MAAM;;uBAuC/G,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AIImprove = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
+ const index_1 = require("@opensumi/ide-core-browser/lib/components/index");
8
+ const AIImprove = (props) => {
9
+ const { onClick, lists } = props;
10
+ const handleClick = (0, react_1.useCallback)((title) => {
11
+ if (onClick) {
12
+ onClick(title);
13
+ }
14
+ }, [onClick]);
15
+ const useLists = (0, react_1.useMemo)(() => {
16
+ if (lists && lists.length > 0) {
17
+ return lists;
18
+ }
19
+ return [
20
+ { title: '采纳', iconClass: (0, ide_core_browser_1.getExternalIcon)('git-pull-request') },
21
+ { title: '|', iconClass: '' },
22
+ { title: '丢弃', iconClass: (0, ide_core_browser_1.getExternalIcon)('clear-all') },
23
+ { title: '|', iconClass: '' },
24
+ { title: '优化', iconClass: (0, ide_core_browser_1.getExternalIcon)('wand') },
25
+ { title: '|', iconClass: '' },
26
+ { title: '更多指令', iconClass: (0, ide_core_browser_1.getIcon)('more') },
27
+ ];
28
+ }, [lists]);
29
+ return (react_1.default.createElement("ul", { style: { display: 'flex', alignItems: 'center', paddingLeft: '0', margin: '6px 0 6px 0' } }, useLists.map(({ title, iconClass }) => (react_1.default.createElement("li", { style: { marginRight: '6px', display: 'flex', alignItems: 'center', cursor: 'pointer' } },
30
+ iconClass && react_1.default.createElement(index_1.Icon, { className: iconClass, style: { marginRight: '6px' } }),
31
+ react_1.default.createElement("span", { onClick: () => handleClick(title) }, title))))));
32
+ };
33
+ exports.AIImprove = AIImprove;
34
+ //# sourceMappingURL=AIImprove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIImprove.js","sourceRoot":"","sources":["../../../src/browser/components/AIImprove.tsx"],"names":[],"mappings":";;;;AAAA,uDAAoD;AAEpD,iEAAsE;AACtE,2EAAuE;AAEhE,MAAM,SAAS,GAAG,CAAC,KAA4F,EAAE,EAAE;IACxH,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAEjC,MAAM,WAAW,GAAG,IAAA,mBAAW,EAC7B,CAAC,KAAK,EAAE,EAAE;QACR,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,CAAC;SAChB;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,KAAK,CAAC;SACd;QACD,OAAO;YACL,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAA,kCAAe,EAAC,kBAAkB,CAAC,EAAE;YAC/D,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAC;YAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAG,IAAA,kCAAe,EAAC,WAAW,CAAC,EAAC;YACxD,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAC;YAC5B,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAA,kCAAe,EAAC,MAAM,CAAC,EAAC;YAClD,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAC;YAC5B,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAA,0BAAO,EAAC,MAAM,CAAC,EAAC;SAC7C,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACL,sCAAI,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,IAC1F,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CACtC,sCAAI,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;QACxF,SAAS,IAAI,8BAAC,YAAI,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC,GAAS;QAC9E,wCAAM,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IACpC,KAAK,CACD,CACJ,CACN,CAAC,CACC,CACN,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,SAAS,aAuCpB"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const AiInput: ({ onValueChange }: {
3
+ onValueChange: any;
4
+ }) => React.JSX.Element;
5
+ //# sourceMappingURL=AIInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIInput.d.ts","sourceRoot":"","sources":["../../../src/browser/components/AIInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAOrD,eAAO,MAAM,OAAO;;uBAsBnB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiInput = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
+ const index_1 = require("@opensumi/ide-core-browser/lib/components/index");
8
+ const styles = tslib_1.__importStar(require("./components.module.less"));
9
+ const AiInput = ({ onValueChange }) => {
10
+ const [value, setValue] = (0, react_1.useState)();
11
+ const handleChange = (newValue) => {
12
+ setValue(newValue);
13
+ };
14
+ const emitterValueChange = (0, react_1.useCallback)(() => {
15
+ if (onValueChange) {
16
+ onValueChange(value);
17
+ }
18
+ }, [value]);
19
+ return (react_1.default.createElement(index_1.Input, { className: styles.ai_native_input_container, placeholder: '可以问我任何问题,或键入主题 "/"', value: value, onValueChange: handleChange, addonAfter: react_1.default.createElement(index_1.Icon, { className: (0, ide_core_browser_1.getIcon)('right'), onClick: () => emitterValueChange() }) }));
20
+ };
21
+ exports.AiInput = AiInput;
22
+ //# sourceMappingURL=AIInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIInput.js","sourceRoot":"","sources":["../../../src/browser/components/AIInput.tsx"],"names":[],"mappings":";;;;AAAA,uDAAqD;AAErD,iEAAqD;AACrD,2EAA8E;AAE9E,yEAAmD;AAE5C,MAAM,OAAO,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE;IAC3C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAU,CAAC;IAE7C,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;QACxC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC1C,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACL,8BAAC,aAAK,IACJ,SAAS,EAAE,MAAM,CAAC,yBAAyB,EAC3C,WAAW,EAAE,oBAAoB,EACjC,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,YAAY,EAC3B,UAAU,EAAE,8BAAC,YAAI,IAAC,SAAS,EAAE,IAAA,0BAAO,EAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,GAAI,GACtF,CACH,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,OAAO,WAsBlB"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const CodeBlockWrapper: ({ text }: {
3
+ text: string;
4
+ }) => React.JSX.Element;
5
+ //# sourceMappingURL=ChatEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatEditor.d.ts","sourceRoot":"","sources":["../../../src/browser/components/ChatEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAqFvC,eAAO,MAAM,gBAAgB;UAAsB,MAAM;uBA2CxD,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeBlockWrapper = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
+ const components_1 = require("@opensumi/ide-core-browser/lib/components");
8
+ const ide_editor_1 = require("@opensumi/ide-editor");
9
+ const ide_editor_2 = require("@opensumi/ide-editor");
10
+ const index_1 = require("@opensumi/ide-editor/lib/browser/index");
11
+ const textmate_service_1 = require("@opensumi/ide-editor/lib/browser/monaco-contrib/tokenizer/textmate.service");
12
+ const styles = tslib_1.__importStar(require("./components.module.less"));
13
+ const ChatEditor = ({ input, language }) => {
14
+ const ref = react_1.default.useRef(null);
15
+ const editorCollectionService = (0, ide_core_browser_1.useInjectable)(ide_editor_2.EditorCollectionService);
16
+ const documentService = (0, ide_core_browser_1.useInjectable)(index_1.IEditorDocumentModelService);
17
+ const textmateTokenizer = (0, ide_core_browser_1.useInjectable)(textmate_service_1.TextmateService);
18
+ const useUUID = (0, react_1.useMemo)(() => (0, ide_core_browser_1.uuid)(12), [ref, ref.current]);
19
+ const createEditor = async (container) => {
20
+ var _a;
21
+ const codeEditor = await editorCollectionService.createCodeEditor(container, Object.assign(Object.assign({}, (0, ide_editor_1.getSimpleEditorOptions)()), { readOnly: true, lineNumbers: 'off', selectOnLineNumbers: true, scrollBeyondLastLine: false, lineDecorationsWidth: 8, dragAndDrop: false, padding: { top: 8, bottom: 8 }, mouseWheelZoom: false, scrollbar: {
22
+ alwaysConsumeMouseWheel: false,
23
+ }, wordWrap: 'off', ariaLabel: 'Code block', automaticLayout: true }));
24
+ const docModel = await documentService.createModelReference(new ide_core_browser_1.URI(`ai/chat/editor/${useUUID}`).withScheme(ide_core_browser_1.Schemes.walkThroughSnippet));
25
+ const model = docModel.instance.getMonacoModel();
26
+ model.updateOptions({ tabSize: 2 });
27
+ codeEditor.monacoEditor.setModel(model);
28
+ (_a = codeEditor.monacoEditor.getModel()) === null || _a === void 0 ? void 0 : _a.setMode(language);
29
+ return codeEditor;
30
+ };
31
+ react_1.default.useEffect(() => {
32
+ if (ref && ref.current) {
33
+ textmateTokenizer.activateLanguage(language).then(async () => {
34
+ const codeEditor = await createEditor(ref.current);
35
+ if (codeEditor) {
36
+ codeEditor.monacoEditor.setValue(input);
37
+ requestAnimationFrame(() => {
38
+ ref.current.style.height = codeEditor.monacoEditor.getContentHeight() + 2 + 'px';
39
+ });
40
+ }
41
+ });
42
+ }
43
+ }, [ref.current]);
44
+ return (react_1.default.createElement("div", { className: styles.monaco_wrapper },
45
+ react_1.default.createElement("div", { className: styles.action_toolbar },
46
+ react_1.default.createElement(components_1.Popover, { id: `ai-chat-inser-${useUUID}`, title: '\u63D2\u5165\u4EE3\u7801' },
47
+ react_1.default.createElement(components_1.Icon, { className: (0, ide_core_browser_1.getIcon)('openfile') })),
48
+ react_1.default.createElement(components_1.Popover, { id: `ai-chat-copy-${useUUID}`, title: '\u590D\u5236\u4EE3\u7801' },
49
+ react_1.default.createElement(components_1.Icon, { className: (0, ide_core_browser_1.getIcon)('file-copy') }))),
50
+ react_1.default.createElement("div", { ref: ref, className: styles.editor })));
51
+ };
52
+ const CodeBlockWrapper = ({ text }) => {
53
+ const renderText = (content) => {
54
+ const regexInlineCode = /`([^`]+)`/g;
55
+ const regexBlockCode = /```([^`]+)```/g;
56
+ return content.split(regexBlockCode).map((block, index) => {
57
+ if (index % 2 === 0) {
58
+ // 文本内容
59
+ return block.split(regexInlineCode).map((inline, index) => {
60
+ if (index % 2 === 0) {
61
+ // 非代码内容
62
+ return inline;
63
+ }
64
+ else {
65
+ // 用 <span> 包裹代码行
66
+ return (react_1.default.createElement("span", { className: styles.code_inline, key: index }, inline));
67
+ }
68
+ });
69
+ }
70
+ else {
71
+ // 通常第一个换行前的字符就是 language,比如 ```typescript
72
+ const language = block.split('\n')[0] || 'plaintext';
73
+ // 并去掉第一个 \n 前面的字符
74
+ block = block.replace(/.*?\n/, '');
75
+ block = block.trim();
76
+ return (react_1.default.createElement("div", { className: styles.code_block },
77
+ react_1.default.createElement(ChatEditor, { input: block, language: language })));
78
+ }
79
+ });
80
+ };
81
+ return (react_1.default.createElement("div", { className: styles.ai_chat_code_wrapper },
82
+ react_1.default.createElement("div", { className: styles.render_text }, renderText(text))));
83
+ };
84
+ exports.CodeBlockWrapper = CodeBlockWrapper;
85
+ //# sourceMappingURL=ChatEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatEditor.js","sourceRoot":"","sources":["../../../src/browser/components/ChatEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface IChatInputProps {
3
+ onSend: (value: string) => void;
4
+ }
5
+ export declare const ChatInput: ({ onSend }: IChatInputProps) => React.JSX.Element;
6
+ //# sourceMappingURL=ChatInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../src/browser/components/ChatInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4D,MAAM,OAAO,CAAC;AA0FjF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAGD,eAAO,MAAM,SAAS,eAAgB,eAAe,sBAsGpD,CAAC"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChatInput = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const classnames_1 = tslib_1.__importDefault(require("classnames"));
6
+ const react_1 = tslib_1.__importStar(require("react"));
7
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
8
+ const components_1 = require("@opensumi/ide-core-browser/lib/components");
9
+ const common_1 = require("../../common");
10
+ const styles = tslib_1.__importStar(require("./components.module.less"));
11
+ const Block = ({ icon, name }) => (react_1.default.createElement("div", { className: styles.block },
12
+ react_1.default.createElement(components_1.Icon, { className: icon }),
13
+ name && react_1.default.createElement("span", { className: styles.name }, name)));
14
+ // 指令列表
15
+ const optionsList = [
16
+ {
17
+ icon: (0, components_1.getIcon)('search'),
18
+ name: common_1.InstructionEnum.aiSearchKey,
19
+ },
20
+ {
21
+ icon: (0, ide_core_browser_1.getExternalIcon)('code'),
22
+ name: common_1.InstructionEnum.aiSearchCodeKey,
23
+ },
24
+ {
25
+ icon: (0, components_1.getIcon)('edit'),
26
+ name: common_1.InstructionEnum.aiExplainKey,
27
+ },
28
+ {
29
+ icon: (0, components_1.getIcon)('smile'),
30
+ name: common_1.InstructionEnum.aiSumiKey,
31
+ },
32
+ ];
33
+ // 指令命令激活组件
34
+ const InstructionOptions = ({ onClick, bottom }) => {
35
+ const [commonlyUsed, setCommonlyUsed] = (0, react_1.useState)([]);
36
+ const [options, setOptions] = (0, react_1.useState)([]);
37
+ (0, react_1.useEffect)(() => {
38
+ setOptions(optionsList);
39
+ setCommonlyUsed([
40
+ {
41
+ icon: (0, components_1.getIcon)('delete'),
42
+ name: '聊天',
43
+ },
44
+ ]);
45
+ }, []);
46
+ const handleClick = (0, react_1.useCallback)((name) => {
47
+ if (onClick) {
48
+ onClick(name || '');
49
+ }
50
+ }, [onClick]);
51
+ return (react_1.default.createElement("div", { className: styles.instruction_options_container, style: { bottom: bottom + 'px' } },
52
+ react_1.default.createElement("div", { className: styles.options },
53
+ react_1.default.createElement("ul", null, options.map(({ icon, name }) => (react_1.default.createElement("li", { key: name, onClick: () => handleClick(name) },
54
+ react_1.default.createElement(Block, { icon: icon }),
55
+ react_1.default.createElement("span", null, name)))))),
56
+ commonlyUsed.length > 0 && (react_1.default.createElement("div", { className: styles.commonly_used },
57
+ react_1.default.createElement("span", null, "\u5E38\u7528\u6307\u4EE4\uFF1A"),
58
+ commonlyUsed.map(({ icon, name }, i) => (react_1.default.createElement(Block, { key: i, icon: icon, name: name })))))));
59
+ };
60
+ // 指令命令激活组件
61
+ const ChatInput = ({ onSend }) => {
62
+ const [value, setValue] = (0, react_1.useState)('');
63
+ const [isShowOptions, setIsShowOptions] = (0, react_1.useState)(false);
64
+ const [wrapperHeight, setWrapperHeight] = (0, react_1.useState)(40);
65
+ const [slashWidget, setSlashWidget] = (0, react_1.useState)('');
66
+ const inputRef = (0, react_1.useRef)(null);
67
+ (0, react_1.useEffect)(() => {
68
+ if (value.length === 1 && value.startsWith('/')) {
69
+ setIsShowOptions(true);
70
+ }
71
+ else {
72
+ setIsShowOptions(false);
73
+ }
74
+ // 自适应高度
75
+ if (inputRef && inputRef.current) {
76
+ inputRef.current.style.height = 0 + 'px';
77
+ const scrollHeight = inputRef.current.scrollHeight;
78
+ inputRef.current.style.height = Math.min(scrollHeight, 140) + 'px';
79
+ setWrapperHeight(scrollHeight + 20);
80
+ }
81
+ // 设置 slash widget 块
82
+ const regex = /\/(\w+)\s/;
83
+ const match = value.match(regex);
84
+ if (match) {
85
+ const keyword = match[0];
86
+ if (optionsList.find(({ name }) => name === keyword)) {
87
+ setSlashWidget(keyword);
88
+ }
89
+ }
90
+ else {
91
+ setSlashWidget('');
92
+ }
93
+ }, [inputRef, value]);
94
+ const handleInputChange = (0, react_1.useCallback)((value) => setValue(value), []);
95
+ const handleSend = (0, react_1.useCallback)(() => {
96
+ if (onSend) {
97
+ onSend(value);
98
+ setValue('');
99
+ }
100
+ }, [onSend, value]);
101
+ const acquireOptionsCheck = (0, react_1.useCallback)((value) => {
102
+ if (value) {
103
+ setValue(value);
104
+ setIsShowOptions(false);
105
+ if (inputRef && inputRef.current) {
106
+ inputRef.current.focus();
107
+ }
108
+ }
109
+ }, [inputRef]);
110
+ const optionsBottomPosition = (0, react_1.useMemo)(() => Math.min(181, Math.max(61, 21 + wrapperHeight)), [wrapperHeight]);
111
+ const handleKeyDown = (event) => {
112
+ if (event.key === 'Enter' && !event.nativeEvent.isComposing) {
113
+ if (!event.shiftKey) {
114
+ event.preventDefault();
115
+ handleSend();
116
+ }
117
+ }
118
+ };
119
+ return (react_1.default.createElement("div", { className: styles.chat_input_container },
120
+ isShowOptions && react_1.default.createElement(InstructionOptions, { onClick: acquireOptionsCheck, bottom: optionsBottomPosition }),
121
+ react_1.default.createElement(components_1.Input, { ref: inputRef, placeholder: '可以问我任何问题,或键入主题 "/"', wrapperStyle: { height: wrapperHeight + 'px' }, value: value, type: 'textarea', onKeyDown: handleKeyDown, onValueChange: handleInputChange, className: styles.input_wrapper, addonBefore: slashWidget && (react_1.default.createElement("div", { className: styles.slash_widget_block },
122
+ react_1.default.createElement("span", null, slashWidget))), addonAfter: react_1.default.createElement("div", { className: (0, classnames_1.default)(styles.send_chat_btn, value.length && styles.active), onClick: () => handleSend() },
123
+ react_1.default.createElement(components_1.Icon, { className: (0, components_1.getIcon)('right') })) })));
124
+ };
125
+ exports.ChatInput = ChatInput;
126
+ //# sourceMappingURL=ChatInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatInput.js","sourceRoot":"","sources":["../../../src/browser/components/ChatInput.tsx"],"names":[],"mappings":";;;;AAAA,oEAA6B;AAC7B,uDAAiF;AAEjF,iEAA6D;AAC7D,0EAAiF;AAEjF,yCAA+C;AAE/C,yEAAmD;AAOnD,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAe,EAAE,EAAE,CAAC,CAC7C,uCAAK,SAAS,EAAE,MAAM,CAAC,KAAK;IAC1B,8BAAC,iBAAI,IAAC,SAAS,EAAE,IAAI,GAAI;IACxB,IAAI,IAAI,wCAAM,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,IAAI,CAAQ,CAChD,CACP,CAAC;AAEF,OAAO;AACP,MAAM,WAAW,GAAkB;IACjC;QACE,IAAI,EAAE,IAAA,oBAAO,EAAC,QAAQ,CAAC;QACvB,IAAI,EAAE,wBAAe,CAAC,WAAW;KAClC;IACD;QACE,IAAI,EAAE,IAAA,kCAAe,EAAC,MAAM,CAAC;QAC7B,IAAI,EAAE,wBAAe,CAAC,eAAe;KACtC;IACD;QACE,IAAI,EAAE,IAAA,oBAAO,EAAC,MAAM,CAAC;QACrB,IAAI,EAAE,wBAAe,CAAC,YAAY;KACnC;IACD;QACE,IAAI,EAAE,IAAA,oBAAO,EAAC,OAAO,CAAC;QACtB,IAAI,EAAE,wBAAe,CAAC,SAAS;KAChC;CACF,CAAC;AAEF,WAAW;AACX,MAAM,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;IACjD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAgB,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAgB,EAAE,CAAC,CAAC;IAE1D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,UAAU,CAAC,WAAW,CAAC,CAAC;QAExB,eAAe,CAAC;YACd;gBACE,IAAI,EAAE,IAAA,oBAAO,EAAC,QAAQ,CAAC;gBACvB,IAAI,EAAE,IAAI;aACX;SACF,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,IAAA,mBAAW,EAC7B,CAAC,IAAwB,EAAE,EAAE;QAC3B,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SACrB;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,CACL,uCAAK,SAAS,EAAE,MAAM,CAAC,6BAA6B,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE;QACpF,uCAAK,SAAS,EAAE,MAAM,CAAC,OAAO;YAC5B,0CACG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC/B,sCAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;gBAC7C,8BAAC,KAAK,IAAC,IAAI,EAAE,IAAI,GAAI;gBACrB,4CAAO,IAAI,CAAQ,CAChB,CACN,CAAC,CACC,CACD;QACL,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1B,uCAAK,SAAS,EAAE,MAAM,CAAC,aAAa;YAClC,6EAAkB;YACjB,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CACvC,8BAAC,KAAK,IAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAI,CAC1C,CAAC,CACE,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAMF,WAAW;AACJ,MAAM,SAAS,GAAG,CAAC,EAAE,MAAM,EAAmB,EAAE,EAAE;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IACnE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAS,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAA,cAAM,EAA0B,IAAI,CAAC,CAAC;IAEvD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC/C,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACxB;aAAM;YACL,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACzB;QAED,QAAQ;QACR,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;YAChC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;YAEzC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;YACnD,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;YAEnE,gBAAgB,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;SACrC;QAED,oBAAoB;QACpB,MAAM,KAAK,GAAG,WAAW,CAAC;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE;YACT,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;gBACpD,cAAc,CAAC,OAAO,CAAC,CAAC;aACzB;SACF;aAAM;YACL,cAAc,CAAC,EAAE,CAAC,CAAC;SACpB;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtB,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EAAC,CAAC,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAClC,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,QAAQ,CAAC,EAAE,CAAC,CAAC;SACd;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpB,MAAM,mBAAmB,GAAG,IAAA,mBAAW,EACrC,CAAC,KAAa,EAAE,EAAE;QAChB,IAAI,KAAK,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAExB,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAChC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;aAC1B;SACF;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,qBAAqB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAE9G,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE;YAC3D,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACnB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,UAAU,EAAE,CAAC;aACd;SACF;IACH,CAAC,CAAC;IAEF,OAAO,CACL,uCAAK,SAAS,EAAE,MAAM,CAAC,oBAAoB;QACxC,aAAa,IAAI,8BAAC,kBAAkB,IAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,qBAAqB,GAAI;QAKrG,8BAAC,kBAAK,IACJ,GAAG,EAAE,QAAQ,EACb,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,EAC9C,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,aAAa,EACxB,aAAa,EAAE,iBAAiB,EAChC,SAAS,EAAE,MAAM,CAAC,aAAa,EAC/B,WAAW,EACT,WAAW,IAAI,CACb,uCAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB;gBACvC,4CAAO,WAAW,CAAQ,CACtB,CACP,EAEH,UAAU,EACR,uCAAK,SAAS,EAAE,IAAA,oBAAG,EAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;gBACnG,8BAAC,iBAAI,IAAC,SAAS,EAAE,IAAA,oBAAO,EAAC,OAAO,CAAC,GAAI,CACjC,GAER,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAtGW,QAAA,SAAS,aAsGpB"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare const ChatMoreActions: ({ children }: {
3
+ children: any;
4
+ }) => React.JSX.Element;
5
+ //# sourceMappingURL=ChatMoreActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMoreActions.d.ts","sourceRoot":"","sources":["../../../src/browser/components/ChatMoreActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAQvC,eAAO,MAAM,eAAe;;uBAwB3B,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChatMoreActions = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const ide_core_browser_1 = require("@opensumi/ide-core-browser");
7
+ const components_1 = require("@opensumi/ide-core-browser/lib/components");
8
+ const styles = tslib_1.__importStar(require("./components.module.less"));
9
+ const lineVertical_1 = require("./lineVertical");
10
+ const ChatMoreActions = ({ children }) => {
11
+ const useUUID = (0, react_1.useMemo)(() => (0, ide_core_browser_1.uuid)(12), []);
12
+ return (react_1.default.createElement("div", { className: styles.ai_chat_more_actions_container },
13
+ react_1.default.createElement("div", { className: styles.ai_chat_message }, children),
14
+ react_1.default.createElement("div", { className: styles.more_actions },
15
+ react_1.default.createElement("div", { className: styles.side },
16
+ react_1.default.createElement(components_1.Icon, { className: (0, ide_core_browser_1.getExternalIcon)('history') }),
17
+ react_1.default.createElement("span", null, "\u91CD\u65B0\u751F\u6210")),
18
+ react_1.default.createElement("div", { className: styles.side },
19
+ react_1.default.createElement(components_1.Popover, { id: `ai-chat-thumbsup-${useUUID}`, title: '\u8D5E' },
20
+ react_1.default.createElement(components_1.Icon, { className: (0, ide_core_browser_1.getExternalIcon)('thumbsup') })),
21
+ react_1.default.createElement(lineVertical_1.LineVertical, null),
22
+ react_1.default.createElement(components_1.Popover, { id: `ai-chat-thumbsdown-${useUUID}`, title: '\u8E29' },
23
+ react_1.default.createElement(components_1.Icon, { className: (0, ide_core_browser_1.getExternalIcon)('thumbsdown') }))))));
24
+ };
25
+ exports.ChatMoreActions = ChatMoreActions;
26
+ //# sourceMappingURL=ChatMoreActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMoreActions.js","sourceRoot":"","sources":["../../../src/browser/components/ChatMoreActions.tsx"],"names":[],"mappings":";;;;AAAA,uDAAuC;AAEvC,iEAAmE;AACnE,0EAA0E;AAE1E,yEAAmD;AACnD,iDAA8C;AAEvC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAE9C,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,uBAAI,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAE5C,OAAO,CACL,uCAAK,SAAS,EAAE,MAAM,CAAC,8BAA8B;QACnD,uCAAK,SAAS,EAAE,MAAM,CAAC,eAAe,IAAG,QAAQ,CAAO;QACxD,uCAAK,SAAS,EAAE,MAAM,CAAC,YAAY;YACjC,uCAAK,SAAS,EAAE,MAAM,CAAC,IAAI;gBACzB,8BAAC,iBAAI,IAAC,SAAS,EAAE,IAAA,kCAAe,EAAC,SAAS,CAAC,GAAI;gBAC/C,uEAAiB,CACb;YACN,uCAAK,SAAS,EAAE,MAAM,CAAC,IAAI;gBACzB,8BAAC,oBAAO,IAAC,EAAE,EAAE,oBAAoB,OAAO,EAAE,EAAE,KAAK,EAAC,QAAG;oBACnD,8BAAC,iBAAI,IAAC,SAAS,EAAE,IAAA,kCAAe,EAAC,UAAU,CAAC,GAAI,CACxC;gBACV,8BAAC,2BAAY,OAAG;gBAChB,8BAAC,oBAAO,IAAC,EAAE,EAAE,sBAAsB,OAAO,EAAE,EAAE,KAAK,EAAC,QAAG;oBACrD,8BAAC,iBAAI,IAAC,SAAS,EAAE,IAAA,kCAAe,EAAC,YAAY,CAAC,GAAI,CAC1C,CACN,CACF,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,eAAe,mBAwB1B"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const Thinking: () => React.JSX.Element;
3
+ //# sourceMappingURL=Thinking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thinking.d.ts","sourceRoot":"","sources":["../../../src/browser/components/Thinking.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,eAAO,MAAM,QAAQ,yBAepB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Thinking = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const components_1 = require("@opensumi/ide-core-browser/lib/components");
7
+ const progress_bar_1 = require("@opensumi/ide-core-browser/lib/progress/progress-bar");
8
+ const styles = tslib_1.__importStar(require("./components.module.less"));
9
+ const Thinking = () => (react_1.default.createElement("div", { className: styles.thinking_container },
10
+ react_1.default.createElement("div", { className: styles.content },
11
+ react_1.default.createElement("span", null, "Thinking...")),
12
+ react_1.default.createElement("div", { className: styles.stop },
13
+ react_1.default.createElement("span", { className: styles.progress_bar },
14
+ react_1.default.createElement(progress_bar_1.Progress, { loading: true })),
15
+ react_1.default.createElement("div", { className: styles.block },
16
+ react_1.default.createElement(components_1.Icon, { className: (0, components_1.getIcon)('pause') }),
17
+ react_1.default.createElement("span", null, "\u505C\u6B62")))));
18
+ exports.Thinking = Thinking;
19
+ //# sourceMappingURL=Thinking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thinking.js","sourceRoot":"","sources":["../../../src/browser/components/Thinking.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAE1B,0EAA0E;AAC1E,uFAAgF;AAEhF,yEAAmD;AAE5C,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,CAC5B,uCAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB;IACvC,uCAAK,SAAS,EAAE,MAAM,CAAC,OAAO;QAC5B,0DAAwB,CACpB;IACN,uCAAK,SAAS,EAAE,MAAM,CAAC,IAAI;QACzB,wCAAM,SAAS,EAAE,MAAM,CAAC,YAAY;YAClC,8BAAC,uBAAQ,IAAC,OAAO,EAAE,IAAI,GAAI,CACtB;QACP,uCAAK,SAAS,EAAE,MAAM,CAAC,KAAK;YAC1B,8BAAC,iBAAI,IAAC,SAAS,EAAE,IAAA,oBAAO,EAAC,OAAO,CAAC,GAAS;YAC1C,2DAAe,CACX,CACF,CACF,CACP,CAAC;AAfW,QAAA,QAAQ,YAenB"}