dsh-code-server-app 0.3.23 → 0.3.25
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.
- package/README.en.md +8 -3
- package/README.md +6 -2
- package/assets/extensions/dshcs-editor-bridge/extension.js +21 -0
- package/assets/extensions/dshcs-editor-bridge/lib/ask-panel.js +6 -2
- package/assets/extensions/dshcs-editor-bridge/lib/bridge-client.js +13 -0
- package/assets/extensions/dshcs-editor-bridge/package.json +2 -2
- package/assets/extensions/dshcs-editor-bridge/webview/THIRD-PARTY.md +2 -2
- package/assets/extensions/dshcs-editor-bridge/webview/src/app.jsx +25 -2
- package/assets/extensions/dshcs-editor-bridge/webview/src/official-tokens.css +573 -7
- package/assets/extensions/dshcs-editor-bridge/webview/src/panel.css +45 -11
- package/assets/extensions/dshcs-editor-bridge/webview/src/thread.jsx +38 -2
- package/assets/extensions/dshcs-editor-bridge/webview/thread.css +1 -1
- package/assets/extensions/dshcs-editor-bridge/webview/thread.js +61 -60
- package/lib/bridge-approval.mjs +8 -0
- package/lib/bridge-session.mjs +40 -0
- package/lib/bridge-thread.mjs +33 -6
- package/lib/client.js +2 -2
- package/lib/index.js +268 -14
- package/package.json +1 -1
- package/vendor/VENDOR.json +1 -1
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_AMS-Regular-U6PRYMIZ.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Caligraphic-Bold-5QL5CMTE.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Caligraphic-Regular-KX5MEWCF.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Fraktur-Bold-2QVFK6NQ.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Fraktur-Regular-2PEIFJSJ.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Main-Bold-YP5VVQRP.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Main-BoldItalic-N4V3DX7S.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Main-Italic-RELBIK7M.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Main-Regular-ARRPAO67.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Math-BoldItalic-K4WTGH3J.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Math-Italic-6KGCHLFN.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_SansSerif-Bold-RRNVJFFW.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_SansSerif-Italic-HMPFTM52.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_SansSerif-Regular-XIQ62X4E.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Script-Regular-APUWIHLP.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Size1-Regular-5LRUTBFT.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Size2-Regular-LELKET5D.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Size3-Regular-WQRQ47UD.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Size4-Regular-CDMV7U5C.woff2 +0 -0
- package/assets/extensions/dshcs-editor-bridge/webview/fonts/KaTeX_Typewriter-Regular-VBYJ4NRC.woff2 +0 -0
|
@@ -16,22 +16,25 @@
|
|
|
16
16
|
color-scheme: light dark;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
body
|
|
21
|
-
|
|
19
|
+
/* 面板根容器:
|
|
20
|
+
* - webview 形态:body 带 .dshcs-panel(见 lib/ask-panel.js 的外壳 HTML);
|
|
21
|
+
* - DSH 页面形态(0.2.5):对话框把 .dshcs-panel 放在自己的容器 div 上,
|
|
22
|
+
* 所有排版规则都挂在这个类下,**绝不碰 DSH 自己的 body**(注入样式不能改宿主界面)。
|
|
23
|
+
*/
|
|
24
|
+
.dshcs-panel {
|
|
22
25
|
height: 100%;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
body {
|
|
26
26
|
margin: 0;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
font-family: var(--vscode-font-family);
|
|
27
|
+
background: var(--vscode-editor-background, var(--dsw-alias-bg-base, #1e1e1e));
|
|
28
|
+
color: var(--vscode-foreground, var(--dsw-alias-label-primary, #ccc));
|
|
29
|
+
font-family: var(--vscode-font-family, var(--dsw-font-family, sans-serif));
|
|
31
30
|
font-size: var(--vscode-font-size, 13px);
|
|
32
31
|
overflow: hidden;
|
|
33
32
|
}
|
|
34
33
|
|
|
34
|
+
.dshcs-panel #root {
|
|
35
|
+
height: 100%;
|
|
36
|
+
}
|
|
37
|
+
|
|
35
38
|
.dshcs-app {
|
|
36
39
|
display: flex;
|
|
37
40
|
flex-direction: column;
|
|
@@ -157,8 +160,39 @@ body {
|
|
|
157
160
|
justify-content: flex-end;
|
|
158
161
|
}
|
|
159
162
|
|
|
160
|
-
|
|
163
|
+
/* 用户消息:注入的上下文(折叠行)+ 问题气泡,右对齐成一组。 */
|
|
164
|
+
.dshcs-user-stack {
|
|
161
165
|
max-width: 88%;
|
|
166
|
+
display: flex;
|
|
167
|
+
flex-direction: column;
|
|
168
|
+
align-items: stretch;
|
|
169
|
+
gap: 2px;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.dshcs-context .dshcs-context-summary {
|
|
173
|
+
min-width: 0;
|
|
174
|
+
overflow: hidden;
|
|
175
|
+
flex: 1 1 auto;
|
|
176
|
+
color: var(--dsw-alias-label-tertiary, var(--vscode-descriptionForeground));
|
|
177
|
+
font-size: var(--dsh-content-font-size-secondary, 13px);
|
|
178
|
+
white-space: nowrap;
|
|
179
|
+
text-overflow: ellipsis;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.dshcs-context .dshcs-context-body {
|
|
183
|
+
margin: 2px 0 4px;
|
|
184
|
+
padding: 4px 0 4px calc(22px + var(--dsh-content-font-delta, 0px));
|
|
185
|
+
color: var(--dsw-alias-label-tertiary, var(--vscode-descriptionForeground));
|
|
186
|
+
font-size: var(--dsh-content-font-size-secondary, 12px);
|
|
187
|
+
font-family: var(--ds-font-family-code, monospace);
|
|
188
|
+
line-height: 1.5;
|
|
189
|
+
white-space: pre-wrap;
|
|
190
|
+
word-break: break-word;
|
|
191
|
+
max-height: 40vh;
|
|
192
|
+
overflow: auto;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.dshcs-bubble {
|
|
162
196
|
padding: 6px 10px;
|
|
163
197
|
border-radius: 8px;
|
|
164
198
|
background: var(--vscode-input-background, rgba(128, 128, 128, 0.12));
|
|
@@ -12,7 +12,12 @@
|
|
|
12
12
|
// 工具 / 授权:面板只给一行紧凑摘要(不做逐工具的自定义卡片)。
|
|
13
13
|
|
|
14
14
|
import { memo, useState } from 'react';
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
DisclosureRow,
|
|
17
|
+
IconContextInjectionOutline16,
|
|
18
|
+
IconThinkOutline14,
|
|
19
|
+
MarkdownText,
|
|
20
|
+
} from '@deepseek-ai/dsh-client-ui-primitives';
|
|
16
21
|
|
|
17
22
|
/** 官方渲染器的界面文案(面板自己给中文;DSH 界面走它自己的 locale)。 */
|
|
18
23
|
const LABELS = { code: { copyLabel: '复制', copiedLabel: '已复制' }, footnotes: '脚注' };
|
|
@@ -66,11 +71,42 @@ function ThinkingRow({ text, running }) {
|
|
|
66
71
|
);
|
|
67
72
|
}
|
|
68
73
|
|
|
74
|
+
/**
|
|
75
|
+
* 一行「注入的上下文」(默认收起):桥拼进消息的位置行 + 选区代码块。
|
|
76
|
+
*
|
|
77
|
+
* 与 DSH 界面对注入上下文的处理一致 —— 默认折叠,只留一行摘要;点开才看得到那段代码。
|
|
78
|
+
* 摘要取位置行(第一行),去掉 `From the editor: ` 前缀(标题已经说了"来自编辑器")。
|
|
79
|
+
*/
|
|
80
|
+
function ContextRow({ text }) {
|
|
81
|
+
const [expanded, setExpanded] = useState(false);
|
|
82
|
+
const firstLine = text.split('\n')[0] ?? '';
|
|
83
|
+
const summary = firstLine.replace(/^From the editor:\s*/i, '');
|
|
84
|
+
return (
|
|
85
|
+
<div className="dshcs-context" data-expanded={expanded || undefined}>
|
|
86
|
+
<DisclosureRow
|
|
87
|
+
icon={<IconContextInjectionOutline16 size={16} />}
|
|
88
|
+
title="上下文"
|
|
89
|
+
open={expanded}
|
|
90
|
+
expandable
|
|
91
|
+
expandOnRowClick
|
|
92
|
+
onToggle={() => setExpanded((value) => !value)}
|
|
93
|
+
collapsedContent={<span className="dshcs-context-summary">{summary}</span>}
|
|
94
|
+
>
|
|
95
|
+
<pre className="dshcs-context-body">{text}</pre>
|
|
96
|
+
</DisclosureRow>
|
|
97
|
+
</div>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
69
101
|
export const ThreadEntry = memo(function ThreadEntry({ entry }) {
|
|
70
102
|
if (entry.role === 'user') {
|
|
103
|
+
const context = typeof entry.context === 'string' ? entry.context : '';
|
|
71
104
|
return (
|
|
72
105
|
<div className="dshcs-msg dshcs-user">
|
|
73
|
-
<div className="dshcs-
|
|
106
|
+
<div className="dshcs-user-stack">
|
|
107
|
+
{context === '' ? null : <ContextRow text={context} />}
|
|
108
|
+
<div className="dshcs-bubble" data-status={entry.status ?? undefined}>{entry.text}</div>
|
|
109
|
+
</div>
|
|
74
110
|
</div>
|
|
75
111
|
);
|
|
76
112
|
}
|