dsh-plugin-core 0.34.0 → 0.35.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.
- package/dist/adv/session/SessionViewModal.d.ts +20 -2
- package/dist/adv/session/SessionViewModal.d.ts.map +1 -1
- package/dist/adv/session/SessionViewModal.js +186 -73
- package/dist/adv/session/SessionViewModal.js.map +1 -1
- package/dist/adv/session/faces.d.ts +30 -7
- package/dist/adv/session/faces.d.ts.map +1 -1
- package/dist/adv/session/index.d.ts +1 -0
- package/dist/adv/session/index.d.ts.map +1 -1
- package/dist/adv/session/index.js +1 -0
- package/dist/adv/session/index.js.map +1 -1
- package/dist/adv/session/mirror/BashRow.d.ts.map +1 -1
- package/dist/adv/session/mirror/BashRow.js +11 -2
- package/dist/adv/session/mirror/BashRow.js.map +1 -1
- package/dist/adv/session/mirror/ChatView.d.ts +8 -0
- package/dist/adv/session/mirror/ChatView.d.ts.map +1 -1
- package/dist/adv/session/mirror/ChatView.js +8 -0
- package/dist/adv/session/mirror/ChatView.js.map +1 -1
- package/dist/adv/session/mirror/ContextBody.d.ts +24 -0
- package/dist/adv/session/mirror/ContextBody.d.ts.map +1 -0
- package/dist/adv/session/mirror/ContextBody.js +249 -0
- package/dist/adv/session/mirror/ContextBody.js.map +1 -0
- package/dist/adv/session/mirror/ContextInjectionRow.d.ts +21 -1
- package/dist/adv/session/mirror/ContextInjectionRow.d.ts.map +1 -1
- package/dist/adv/session/mirror/ContextInjectionRow.js +57 -29
- package/dist/adv/session/mirror/ContextInjectionRow.js.map +1 -1
- package/dist/adv/session/mirror/GenericCommandCard.d.ts +20 -0
- package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -1
- package/dist/adv/session/mirror/GenericCommandCard.js +89 -27
- package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -1
- package/dist/adv/session/mirror/MessageIconActions.js +1 -1
- package/dist/adv/session/mirror/MessageIconActions.js.map +1 -1
- package/dist/adv/session/mirror/MessageImage.d.ts +23 -0
- package/dist/adv/session/mirror/MessageImage.d.ts.map +1 -0
- package/dist/adv/session/mirror/MessageImage.js +107 -0
- package/dist/adv/session/mirror/MessageImage.js.map +1 -0
- package/dist/adv/session/mirror/MessageItem.d.ts +11 -0
- package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -1
- package/dist/adv/session/mirror/MessageItem.js +12 -2
- package/dist/adv/session/mirror/MessageItem.js.map +1 -1
- package/dist/adv/session/official-classes.d.ts +2 -0
- package/dist/adv/session/official-classes.d.ts.map +1 -1
- package/dist/adv/session/official-classes.js +3 -0
- package/dist/adv/session/official-classes.js.map +1 -1
- package/dist/adv/session/open-session-view.d.ts +6 -1
- package/dist/adv/session/open-session-view.d.ts.map +1 -1
- package/dist/adv/session/open-session-view.js +8 -0
- package/dist/adv/session/open-session-view.js.map +1 -1
- package/dist/adv/session/session-css.generated.d.ts +1 -1
- package/dist/adv/session/session-css.generated.d.ts.map +1 -1
- package/dist/adv/session/session-css.generated.js +1 -1
- package/dist/adv/session/session-css.generated.js.map +1 -1
- package/dist/design/tokens-css.generated.d.ts +1 -1
- package/dist/design/tokens-css.generated.d.ts.map +1 -1
- package/dist/design/tokens-css.generated.js +1 -1
- package/dist/design/tokens-css.generated.js.map +1 -1
- package/dist/ui/feedback/Modal.d.ts +7 -0
- package/dist/ui/feedback/Modal.d.ts.map +1 -1
- package/dist/ui/feedback/Modal.js +2 -0
- package/dist/ui/feedback/Modal.js.map +1 -1
- package/dist/ui/infra/overlay-css.generated.d.ts +1 -1
- package/dist/ui/infra/overlay-css.generated.d.ts.map +1 -1
- package/dist/ui/infra/overlay-css.generated.js +1 -1
- package/dist/ui/infra/overlay-css.generated.js.map +1 -1
- package/dist/ui/infra/overlay.d.ts +7 -0
- package/dist/ui/infra/overlay.d.ts.map +1 -1
- package/dist/ui/infra/overlay.js +6 -1
- package/dist/ui/infra/overlay.js.map +1 -1
- package/dist/ui/infra/panel-css.generated.d.ts +1 -1
- package/dist/ui/infra/panel-css.generated.d.ts.map +1 -1
- package/dist/ui/infra/panel-css.generated.js +1 -1
- package/dist/ui/infra/panel-css.generated.js.map +1 -1
- package/dist/ui/inputs/DateTimePicker.js +1 -1
- package/dist/ui/inputs/DateTimePicker.js.map +1 -1
- package/dist/ui/inputs/Picker.d.ts.map +1 -1
- package/dist/ui/inputs/Picker.js +5 -3
- package/dist/ui/inputs/Picker.js.map +1 -1
- package/dist/ui/inputs/datetime-css.generated.d.ts +1 -1
- package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -1
- package/dist/ui/inputs/datetime-css.generated.js +1 -1
- package/dist/ui/inputs/datetime-css.generated.js.map +1 -1
- package/dist/ui/inputs/picker-css.generated.d.ts +1 -1
- package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -1
- package/dist/ui/inputs/picker-css.generated.js +1 -1
- package/dist/ui/inputs/picker-css.generated.js.map +1 -1
- package/dist/ui/layout/panel-dock-css.generated.d.ts +1 -1
- package/dist/ui/layout/panel-dock-css.generated.d.ts.map +1 -1
- package/dist/ui/layout/panel-dock-css.generated.js +1 -1
- package/dist/ui/layout/panel-dock-css.generated.js.map +1 -1
- package/dist/utils/i18n.d.ts +2 -2
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +54 -0
- package/dist/utils/i18n.js.map +1 -1
- package/docs/design/external/dsh-host.md +22 -0
- package/docs/design/style.md +38 -10
- package/docs/help/session.doc.ts +19 -2
- package/docs/help/session.md +19 -2
- package/docs/help/ui.doc.ts +3 -3
- package/docs/help/ui.md +3 -3
- package/package.json +1 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
// 官方对照:@deepseek-ai/dsh-client-ui-chat@0.2.2-rc.1 lib/client.js:5190-5713(ContextBody 全部 form 体)。
|
|
2
|
+
//
|
|
3
|
+
// 六种 form 各自一块正文(官方 contextBody 的分派逐条照抄):
|
|
4
|
+
// instructions = 文件清单(路径 + 动作词)→ 模型面向文本
|
|
5
|
+
// catalog = 目录条目(name + description),可带「替换目录」与「…还有 N 条」
|
|
6
|
+
// snapshot = 「取代先前的快照」+ 具名分段(name + text)
|
|
7
|
+
// notice = 只有模型面向文本(摘要走折叠行)
|
|
8
|
+
// relay = 「来自会话 {session}」+ 文本
|
|
9
|
+
// recall = 来源会话(保留 / 省略条数、是否截断)+ 文本
|
|
10
|
+
// 每种 form 的 source 读不出 → 一律回落 opaque(文本 + source 其余字段键值表),
|
|
11
|
+
// 官方同规则:判据全有或全无,宁可退回原样也不画半张卡。
|
|
12
|
+
import { createElement as h } from 'react';
|
|
13
|
+
import { officialClass } from '../official-classes.js';
|
|
14
|
+
/** 官方 ContextBody 模块类(宿主必注入;缺席 = 空串,裸结构不白屏)。 */
|
|
15
|
+
const C = (semantic) => officialClass('ContextBody', semantic) ?? '';
|
|
16
|
+
/** 官方 MAX_CHARS / MAX_ENTRIES(lib/client.js:5196/5198)。 */
|
|
17
|
+
const MAX_CHARS = 20000;
|
|
18
|
+
const MAX_ENTRIES = 200;
|
|
19
|
+
function asRecord(value) {
|
|
20
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value) ? value : null;
|
|
21
|
+
}
|
|
22
|
+
/** 官方 boundedText:超上限截断并附「共 N 字符」。 */
|
|
23
|
+
function boundedText(text, t) {
|
|
24
|
+
return text.length > MAX_CHARS
|
|
25
|
+
? `${text.slice(0, MAX_CHARS)}\n${t('jsonTruncated', { total: text.length })}`
|
|
26
|
+
: text;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 官方 ModelFacingContent:连续 text 块合并为一个 run,一段一个 pre。
|
|
30
|
+
* 非 text 块官方走 JsonBlock,本仓无该原语 ⇒ 保持既有行为(不进正文,不伪造)。
|
|
31
|
+
*/
|
|
32
|
+
export function modelFacingContent(content, t) {
|
|
33
|
+
const blocks = Array.isArray(content) ? content : [];
|
|
34
|
+
const runs = [];
|
|
35
|
+
let inText = false;
|
|
36
|
+
for (const block of blocks) {
|
|
37
|
+
const b = block;
|
|
38
|
+
const isText = b !== null && typeof b === 'object' && b.type === 'text' && typeof b.text === 'string';
|
|
39
|
+
if (!isText) {
|
|
40
|
+
inText = false;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const text = b.text;
|
|
44
|
+
if (inText)
|
|
45
|
+
runs[runs.length - 1] += text;
|
|
46
|
+
else
|
|
47
|
+
runs.push(text);
|
|
48
|
+
inText = true;
|
|
49
|
+
}
|
|
50
|
+
return h('span', null, runs
|
|
51
|
+
.filter(text => text !== '')
|
|
52
|
+
.map((text, index) => h('pre', {
|
|
53
|
+
key: index,
|
|
54
|
+
className: C('text'),
|
|
55
|
+
'data-context-text': true,
|
|
56
|
+
}, boundedText(text, t))));
|
|
57
|
+
}
|
|
58
|
+
/** 官方 fieldValue:字符串 / 数字 / 布尔原样,其余紧凑 JSON;同样受字符上限约束。 */
|
|
59
|
+
function fieldValue(value, t) {
|
|
60
|
+
const text = typeof value === 'string'
|
|
61
|
+
? value
|
|
62
|
+
: typeof value === 'number' || typeof value === 'boolean'
|
|
63
|
+
? String(value)
|
|
64
|
+
: JSON.stringify(value) ?? '';
|
|
65
|
+
return boundedText(text, t);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 官方 SourceFields:source 里除 kind(已由行标题表达)之外的字段列成键值表;
|
|
69
|
+
* form 已由专属正文展示时也省掉(读者看到的就是那个值)。
|
|
70
|
+
*/
|
|
71
|
+
function SourceFields(props) {
|
|
72
|
+
const record = asRecord(props.source);
|
|
73
|
+
if (record === null)
|
|
74
|
+
return null;
|
|
75
|
+
const hidden = props.formRendered ? ['kind', 'form'] : ['kind'];
|
|
76
|
+
const rows = Object.entries(record).filter(([key]) => !hidden.includes(key));
|
|
77
|
+
if (rows.length === 0)
|
|
78
|
+
return null;
|
|
79
|
+
return h('dl', { className: C('fields'), 'data-context-fields': true }, rows.map(([key, value]) => h('div', { key, className: C('field') }, h('dt', { className: C('fieldKey') }, key), h('dd', { className: C('fieldValue') }, fieldValue(value, props.t)))));
|
|
80
|
+
}
|
|
81
|
+
/** 官方 OpaqueBody:模型面向文本 + source 其余字段。 */
|
|
82
|
+
function OpaqueBody(props) {
|
|
83
|
+
return h('span', null, modelFacingContent(props.content, props.t), h(SourceFields, { source: props.source, formRendered: false, t: props.t }));
|
|
84
|
+
}
|
|
85
|
+
/** 官方 instructionChanges:{changes:[{path, action:set|replace|remove, digest?}]},按 path 去重。 */
|
|
86
|
+
function instructionChanges(source) {
|
|
87
|
+
const list = asRecord(source)?.changes;
|
|
88
|
+
if (!Array.isArray(list))
|
|
89
|
+
return null;
|
|
90
|
+
const seen = new Set();
|
|
91
|
+
const changes = [];
|
|
92
|
+
for (const entry of list) {
|
|
93
|
+
const change = asRecord(entry);
|
|
94
|
+
if (change === null)
|
|
95
|
+
return null;
|
|
96
|
+
const path = change.path;
|
|
97
|
+
if (typeof path !== 'string' || path === '')
|
|
98
|
+
return null;
|
|
99
|
+
const action = change.action;
|
|
100
|
+
if (action !== 'set' && action !== 'replace' && action !== 'remove')
|
|
101
|
+
return null;
|
|
102
|
+
if (seen.has(path))
|
|
103
|
+
continue;
|
|
104
|
+
seen.add(path);
|
|
105
|
+
const digest = change.digest;
|
|
106
|
+
changes.push(typeof digest === 'string' ? { action, path, digest } : { action, path });
|
|
107
|
+
}
|
|
108
|
+
return changes.length === 0 ? null : changes;
|
|
109
|
+
}
|
|
110
|
+
/** 官方 instructionAction:baseline 一律「已载入」,其后 set = 新增、replace = 更新。 */
|
|
111
|
+
function instructionAction(action, baseline) {
|
|
112
|
+
if (action === 'remove')
|
|
113
|
+
return 'contextInstrRemoved';
|
|
114
|
+
if (baseline)
|
|
115
|
+
return 'contextInstrLoaded';
|
|
116
|
+
return action === 'set' ? 'contextInstrAdded' : 'contextInstrUpdated';
|
|
117
|
+
}
|
|
118
|
+
function InstructionsBody(props) {
|
|
119
|
+
const changes = instructionChanges(props.source);
|
|
120
|
+
if (changes === null)
|
|
121
|
+
return h(OpaqueBody, { content: props.content, source: props.source, t: props.t });
|
|
122
|
+
const baseline = asRecord(props.source)?.baseline === true;
|
|
123
|
+
return h('span', null, h('ul', { className: C('files'), 'data-context-files': true }, changes.map((change) => h('li', { key: change.path, className: C('file'), title: change.digest }, h('span', { className: C('filePath') }, change.path), h('span', { className: C('fileAction') }, props.t(instructionAction(change.action, baseline)))))), modelFacingContent(props.content, props.t));
|
|
124
|
+
}
|
|
125
|
+
/** 官方 catalogEntries:{entries:[{name, description}]},全有或全无。 */
|
|
126
|
+
function catalogEntries(source) {
|
|
127
|
+
const list = asRecord(source)?.entries;
|
|
128
|
+
if (!Array.isArray(list))
|
|
129
|
+
return null;
|
|
130
|
+
const entries = [];
|
|
131
|
+
for (const item of list) {
|
|
132
|
+
const entry = asRecord(item);
|
|
133
|
+
if (entry === null)
|
|
134
|
+
return null;
|
|
135
|
+
const name = entry.name;
|
|
136
|
+
const description = entry.description;
|
|
137
|
+
if (typeof name !== 'string' || name === '' || typeof description !== 'string')
|
|
138
|
+
return null;
|
|
139
|
+
entries.push({ name, description });
|
|
140
|
+
}
|
|
141
|
+
return entries;
|
|
142
|
+
}
|
|
143
|
+
function CatalogBody(props) {
|
|
144
|
+
const entries = catalogEntries(props.source);
|
|
145
|
+
if (entries === null)
|
|
146
|
+
return h(OpaqueBody, { content: props.content, source: props.source, t: props.t });
|
|
147
|
+
const update = asRecord(props.source)?.update === true;
|
|
148
|
+
const shown = entries.slice(0, MAX_ENTRIES);
|
|
149
|
+
return h('span', null, update
|
|
150
|
+
? h('p', { className: C('catalogNotice'), 'data-context-catalog-update': true }, props.t('contextCatalogReplaced'))
|
|
151
|
+
: null, h('ul', { className: C('entries'), 'data-context-entries': true }, shown.map((entry, index) => h('li', { key: index, className: C('entry') }, h('code', { className: C('entryName') }, entry.name), h('span', { className: C('entryDescription') }, entry.description)))), shown.length < entries.length
|
|
152
|
+
? h('p', { className: C('catalogNotice'), 'data-context-entries-truncated': true }, props.t('contextCatalogMore', { count: entries.length - shown.length }))
|
|
153
|
+
: null);
|
|
154
|
+
}
|
|
155
|
+
/** 官方 snapshotSections:{sections:[{name, text}]},空表同样算不可用。 */
|
|
156
|
+
function snapshotSections(source) {
|
|
157
|
+
const list = asRecord(source)?.sections;
|
|
158
|
+
if (!Array.isArray(list))
|
|
159
|
+
return null;
|
|
160
|
+
const sections = [];
|
|
161
|
+
for (const item of list) {
|
|
162
|
+
const section = asRecord(item);
|
|
163
|
+
if (section === null)
|
|
164
|
+
return null;
|
|
165
|
+
const name = section.name;
|
|
166
|
+
const text = section.text;
|
|
167
|
+
if (typeof name !== 'string' || name === '' || typeof text !== 'string')
|
|
168
|
+
return null;
|
|
169
|
+
sections.push({ name, text });
|
|
170
|
+
}
|
|
171
|
+
return sections.length === 0 ? null : sections;
|
|
172
|
+
}
|
|
173
|
+
function SnapshotBody(props) {
|
|
174
|
+
const sections = snapshotSections(props.source);
|
|
175
|
+
if (sections === null)
|
|
176
|
+
return h(OpaqueBody, { content: props.content, source: props.source, t: props.t });
|
|
177
|
+
return h('span', null, h('p', { className: C('catalogNotice'), 'data-context-snapshot-supersedes': true }, props.t('contextSnapshotSupersedes')), h('dl', { className: C('sections'), 'data-context-sections': true }, sections.map((section, index) => h('div', { key: index, className: C('section') }, h('dt', { className: C('sectionName') }, section.name), h('dd', { className: C('sectionText') }, boundedText(section.text, props.t))))));
|
|
178
|
+
}
|
|
179
|
+
/** 官方 relaySender:source.senderSessionId(不透明会话 id,只展示不解析)。 */
|
|
180
|
+
function relaySender(source) {
|
|
181
|
+
const sender = asRecord(source)?.senderSessionId;
|
|
182
|
+
return typeof sender === 'string' && sender !== '' ? sender : null;
|
|
183
|
+
}
|
|
184
|
+
function RelayBody(props) {
|
|
185
|
+
const sender = relaySender(props.source);
|
|
186
|
+
if (sender === null)
|
|
187
|
+
return h(OpaqueBody, { content: props.content, source: props.source, t: props.t });
|
|
188
|
+
return h('span', null, h('p', { className: C('relaySender'), 'data-context-relay-sender': true }, props.t('contextRelayFrom', { session: sender })), modelFacingContent(props.content, props.t));
|
|
189
|
+
}
|
|
190
|
+
/** 官方 recalledSessions:{references:[{label, retainedMessages, omittedMessages, truncated}]}。 */
|
|
191
|
+
function recalledSessions(source) {
|
|
192
|
+
const list = asRecord(source)?.references;
|
|
193
|
+
if (!Array.isArray(list))
|
|
194
|
+
return null;
|
|
195
|
+
const sessions = [];
|
|
196
|
+
for (const item of list) {
|
|
197
|
+
const reference = asRecord(item);
|
|
198
|
+
if (reference === null)
|
|
199
|
+
return null;
|
|
200
|
+
const label = reference.label;
|
|
201
|
+
const retained = reference.retainedMessages;
|
|
202
|
+
const omitted = reference.omittedMessages;
|
|
203
|
+
const truncated = reference.truncated;
|
|
204
|
+
if (typeof label !== 'string' || label === '')
|
|
205
|
+
return null;
|
|
206
|
+
if (typeof retained !== 'number' || typeof omitted !== 'number' || typeof truncated !== 'boolean')
|
|
207
|
+
return null;
|
|
208
|
+
sessions.push({ label, retained, omitted, truncated });
|
|
209
|
+
}
|
|
210
|
+
return sessions.length === 0 ? null : sessions;
|
|
211
|
+
}
|
|
212
|
+
function RecallBody(props) {
|
|
213
|
+
const sessions = recalledSessions(props.source);
|
|
214
|
+
if (sessions === null)
|
|
215
|
+
return h(OpaqueBody, { content: props.content, source: props.source, t: props.t });
|
|
216
|
+
return h('span', null, h('ul', { className: C('recalls'), 'data-context-recalls': true }, sessions.map((session, index) => h('li', { key: index, className: C('recall') }, h('span', { className: C('recallLabel') }, session.label), h('span', { className: C('recallCounts') }, props.t('contextRecallCounts', { retained: session.retained, omitted: session.omitted })), session.truncated
|
|
217
|
+
? h('span', { className: C('recallCounts') }, props.t('contextRecallTruncated'))
|
|
218
|
+
: null))), modelFacingContent(props.content, props.t));
|
|
219
|
+
}
|
|
220
|
+
/** 官方 noticeSummary:notice 折叠行的一行话(只有 notice 记录它)。 */
|
|
221
|
+
function noticeSummary(source) {
|
|
222
|
+
const summary = asRecord(source)?.summary;
|
|
223
|
+
return typeof summary === 'string' && summary !== '' ? summary : null;
|
|
224
|
+
}
|
|
225
|
+
export function contextBodyView(props) {
|
|
226
|
+
const { form, content, source, t } = props;
|
|
227
|
+
const opaque = { rendered: null, summary: null, body: h(OpaqueBody, { content, source, t }) };
|
|
228
|
+
switch (form) {
|
|
229
|
+
case 'instructions':
|
|
230
|
+
return instructionChanges(source) === null ? opaque : { rendered: 'instructions', summary: null, body: h(InstructionsBody, { content, source, t }) };
|
|
231
|
+
case 'catalog':
|
|
232
|
+
return catalogEntries(source) === null ? opaque : { rendered: 'catalog', summary: null, body: h(CatalogBody, { content, source, t }) };
|
|
233
|
+
case 'snapshot':
|
|
234
|
+
return snapshotSections(source) === null ? opaque : { rendered: 'snapshot', summary: null, body: h(SnapshotBody, { content, source, t }) };
|
|
235
|
+
case 'notice': {
|
|
236
|
+
const summary = noticeSummary(source);
|
|
237
|
+
return summary === null
|
|
238
|
+
? opaque
|
|
239
|
+
: { rendered: 'notice', summary, body: modelFacingContent(content, t) };
|
|
240
|
+
}
|
|
241
|
+
case 'relay':
|
|
242
|
+
return relaySender(source) === null ? opaque : { rendered: 'relay', summary: null, body: h(RelayBody, { content, source, t }) };
|
|
243
|
+
case 'recall':
|
|
244
|
+
return recalledSessions(source) === null ? opaque : { rendered: 'recall', summary: null, body: h(RecallBody, { content, source, t }) };
|
|
245
|
+
default:
|
|
246
|
+
return opaque;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=ContextBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContextBody.js","sourceRoot":"","sources":["../../../../src/adv/session/mirror/ContextBody.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,29 @@ export interface ContextFace {
|
|
|
10
10
|
} | null;
|
|
11
11
|
form?: string | null;
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
13
|
+
/** 官方工具增删块(ContextNode content 里的 tool-addition / tool-removal)。 */
|
|
14
|
+
interface ToolChangeBlock {
|
|
15
|
+
type?: string;
|
|
16
|
+
toolName?: string;
|
|
17
|
+
}
|
|
18
|
+
/** 折叠行的标题 / 汇总事实(纯函数,冒烟可直接断言)。 */
|
|
19
|
+
export interface ContextRowFacts {
|
|
20
|
+
/** 全部内容块都是工具增删块时给出的块集合。 */
|
|
21
|
+
toolBlocks: readonly ToolChangeBlock[] | undefined;
|
|
22
|
+
added: string[];
|
|
23
|
+
removed: string[];
|
|
24
|
+
/** 单块时的那一个(标题说清是哪个,行不可展开)。 */
|
|
25
|
+
single: ToolChangeBlock | undefined;
|
|
26
|
+
title: string;
|
|
27
|
+
/** 折叠行的一行汇总:工具增删多条时有值。 */
|
|
28
|
+
summary: string | null;
|
|
29
|
+
}
|
|
30
|
+
/** 官方 ContextInjectionRow 的标题与汇总口径(纯函数)。 */
|
|
31
|
+
export declare function contextRowFacts(content: readonly unknown[], producerRole: string | undefined, t: Translate): ContextRowFacts;
|
|
32
|
+
/** 系统注入上下文行(官方 ContextInjectionRow 镜像)。 */
|
|
14
33
|
export declare function ContextInjectionRowMirror(props: {
|
|
15
34
|
node: ContextFace;
|
|
16
35
|
t: Translate;
|
|
17
36
|
}): ReturnType<typeof h>;
|
|
37
|
+
export {};
|
|
18
38
|
//# sourceMappingURL=ContextInjectionRow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextInjectionRow.d.ts","sourceRoot":"","sources":["../../../../src/adv/session/mirror/ContextInjectionRow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,aAAa,IAAI,CAAC,EAAY,MAAM,OAAO,CAAA;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGvD,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,
|
|
1
|
+
{"version":3,"file":"ContextInjectionRow.d.ts","sourceRoot":"","sources":["../../../../src/adv/session/mirror/ContextInjectionRow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAY,aAAa,IAAI,CAAC,EAAY,MAAM,OAAO,CAAA;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAGvD,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,oEAAoE;AACpE,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,2BAA2B;IAC3B,UAAU,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,CAAA;IAClD,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,8BAA8B;IAC9B,MAAM,EAAE,eAAe,GAAG,SAAS,CAAA;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,4CAA4C;AAC5C,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,CAAC,EAAE,SAAS,GACX,eAAe,CAoBjB;AAED,2CAA2C;AAC3C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAuD1G"}
|
|
@@ -1,50 +1,78 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
1
|
+
// 官方对照:@deepseek-ai/dsh-client-ui-chat@0.2.2-rc.1
|
|
2
|
+
// lib/client.js:5715-5812(ContextInjectionRow)+ 5190-5713(ContextBody 各 form 体,见 ContextBody.ts)。
|
|
3
|
+
// 折叠行 = DisclosureRow(图标 + 标题「上下文注入」/「跨会话召回」/「工具已更新」+ 分隔点 + 来源 / 摘要);
|
|
4
|
+
// 展开体 = 按 producer 声明的 form 分派(正文见 ContextBody.ts);工具增删块(tool-addition /
|
|
5
|
+
// tool-removal)单独一列,标题与展开体都换成人话的「已添加工具:x / 新增 N 个」。
|
|
6
6
|
import { Fragment, createElement as h, useState } from 'react';
|
|
7
7
|
import { DisclosureRow, IconBrowseOutlineRegular, IconContextInjectionOutlineRegular } from '../../../ui/official.js';
|
|
8
8
|
import { officialClass } from '../official-classes.js';
|
|
9
|
-
import {
|
|
10
|
-
/**
|
|
9
|
+
import { contextBodyView } from './ContextBody.js';
|
|
10
|
+
/** 官方 ContextInjectionRow 的标题与汇总口径(纯函数)。 */
|
|
11
|
+
export function contextRowFacts(content, producerRole, t) {
|
|
12
|
+
const toolBlocks = content.length > 0 && content.every(block => {
|
|
13
|
+
const type = block?.type;
|
|
14
|
+
return type === 'tool-addition' || type === 'tool-removal';
|
|
15
|
+
})
|
|
16
|
+
? content
|
|
17
|
+
: undefined;
|
|
18
|
+
const added = (toolBlocks ?? []).flatMap(block => (block.type === 'tool-addition' && typeof block.toolName === 'string' ? [block.toolName] : []));
|
|
19
|
+
const removed = (toolBlocks ?? []).flatMap(block => (block.type === 'tool-removal' && typeof block.toolName === 'string' ? [block.toolName] : []));
|
|
20
|
+
const single = toolBlocks?.length === 1 ? toolBlocks[0] : undefined;
|
|
21
|
+
// 官方 toolSummary:单条不带计数(标题已经说清是哪一个);多条按增 / 删 / 双向给一行汇总。
|
|
22
|
+
const summary = toolBlocks === undefined || single !== undefined
|
|
23
|
+
? null
|
|
24
|
+
: added.length > 0 && removed.length > 0
|
|
25
|
+
? t('toolsChanged', { added: added.length, removed: removed.length })
|
|
26
|
+
: added.length > 0 ? t('toolsAddedCount', { count: added.length }) : t('toolsRemovedCount', { count: removed.length });
|
|
27
|
+
const title = single !== undefined
|
|
28
|
+
? t(single.type === 'tool-addition' ? 'toolAdded' : 'toolRemoved', { name: single.toolName ?? '' })
|
|
29
|
+
: t(toolBlocks !== undefined ? 'toolsUpdated' : producerRole === 'recall' ? 'contextRecall' : 'contextInjection');
|
|
30
|
+
return { toolBlocks, added, removed, single, title, summary };
|
|
31
|
+
}
|
|
32
|
+
/** 系统注入上下文行(官方 ContextInjectionRow 镜像)。 */
|
|
11
33
|
export function ContextInjectionRowMirror(props) {
|
|
12
34
|
const { node, t } = props;
|
|
13
35
|
const [open, setOpen] = useState(false);
|
|
14
36
|
const content = Array.isArray(node.content) ? node.content : [];
|
|
15
37
|
const producer = node.producer ?? null;
|
|
16
38
|
const label = producer?.label ?? null;
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
icon: toolBlocks
|
|
24
|
-
? h(IconBrowseOutlineRegular, { size: 14 })
|
|
25
|
-
: h(IconContextInjectionOutlineRegular, { size: 14 }),
|
|
26
|
-
chevronClassName: officialClass('ContextInjectionRow', 'chevron') ?? '',
|
|
27
|
-
title: t(producer?.role === 'recall' ? 'contextRecall' : 'contextInjection'),
|
|
28
|
-
collapsedContent: label === null
|
|
39
|
+
const { rendered, summary: bodySummary, body } = contextBodyView({ form: node.form, content, source: node.source, t });
|
|
40
|
+
const { toolBlocks, added, removed, single, title, summary } = contextRowFacts(content, producer?.role, t);
|
|
41
|
+
const sep = (key) => h('span', { key, className: officialClass('ContextInjectionRow', 'sep') ?? '', 'aria-hidden': true });
|
|
42
|
+
const collapsedContent = summary !== null
|
|
43
|
+
? h(Fragment, null, sep('sep'), h('span', { className: officialClass('ContextInjectionRow', 'summary') ?? '' }, summary))
|
|
44
|
+
: toolBlocks !== undefined || label === null
|
|
29
45
|
? undefined
|
|
30
|
-
: h(Fragment, null,
|
|
46
|
+
: h(Fragment, null, sep('sep'), h('span', {
|
|
31
47
|
className: officialClass('ContextInjectionRow', 'source') ?? '',
|
|
32
48
|
'data-context-source': true,
|
|
33
|
-
}, label)
|
|
49
|
+
}, label), bodySummary === null
|
|
50
|
+
? null
|
|
51
|
+
: h(Fragment, null, sep('sep2'), h('span', {
|
|
52
|
+
className: officialClass('ContextInjectionRow', 'summary') ?? '',
|
|
53
|
+
'data-context-summary': true,
|
|
54
|
+
}, bodySummary)));
|
|
55
|
+
return h(DisclosureRow, {
|
|
56
|
+
className: officialClass('ContextInjectionRow', 'root') ?? '',
|
|
57
|
+
icon: toolBlocks === undefined
|
|
58
|
+
? h(IconContextInjectionOutlineRegular, { size: 14 })
|
|
59
|
+
: h(IconBrowseOutlineRegular, { size: 14 }),
|
|
60
|
+
chevronClassName: officialClass('ContextInjectionRow', 'chevron') ?? '',
|
|
61
|
+
title,
|
|
62
|
+
collapsedContent,
|
|
34
63
|
keepContentWhenOpen: true,
|
|
35
|
-
|
|
36
|
-
|
|
64
|
+
// 单条工具变更没有展开体(官方 single !== undefined ⇒ expandable false)。
|
|
65
|
+
open: open && single === undefined,
|
|
66
|
+
expandable: single === undefined,
|
|
37
67
|
expandOnRowClick: true,
|
|
38
68
|
onToggle: () => { setOpen(value => !value); },
|
|
39
69
|
children: h('div', {
|
|
40
70
|
className: officialClass('ContextInjectionRow', 'body') ?? '',
|
|
41
71
|
'data-context-injection-body': true,
|
|
42
|
-
'data-context-form':
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
className: officialClass('
|
|
46
|
-
'data-context-text': true,
|
|
47
|
-
}, text))),
|
|
72
|
+
'data-context-form': rendered ?? undefined,
|
|
73
|
+
}, toolBlocks === undefined
|
|
74
|
+
? body
|
|
75
|
+
: h('div', { className: officialClass('ContextInjectionRow', 'toolChanges') ?? '' }, added.length > 0 ? h('div', null, t('toolsAdded', { names: added.join(', ') })) : null, removed.length > 0 ? h('div', null, t('toolsRemoved', { names: removed.join(', ') })) : null)),
|
|
48
76
|
});
|
|
49
77
|
}
|
|
50
78
|
//# sourceMappingURL=ContextInjectionRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextInjectionRow.js","sourceRoot":"","sources":["../../../../src/adv/session/mirror/ContextInjectionRow.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ContextInjectionRow.js","sourceRoot":"","sources":["../../../../src/adv/session/mirror/ContextInjectionRow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createElement as h } from 'react';
|
|
2
2
|
import type { UtilMessageKey, Translate } from '../../../utils/i18n.js';
|
|
3
|
+
import type { ContentBlockLike, ImageAttachmentRefLike, MessageImageLoader } from '../faces.js';
|
|
3
4
|
export type ToolState = 'preparing' | 'running' | 'ok' | 'error' | 'stopped';
|
|
4
5
|
export type Variant = 'bash' | 'read' | 'search' | 'write' | 'edit' | 'code' | 'others';
|
|
5
6
|
export declare const classifyTool: (name: string) => Variant;
|
|
@@ -10,6 +11,21 @@ export declare function deriveSummary(variant: Variant, argsRaw: string): string
|
|
|
10
11
|
export declare function readCallLine(name: string, argsRaw: string): number | undefined;
|
|
11
12
|
/** 官方 formatToolBody(tool client.js:255-264):通用展开体的输入正文。 */
|
|
12
13
|
export declare function formatToolBody(variant: Variant, argsRaw: string): string | null;
|
|
14
|
+
/** `read_image` 卡面(官方 imageCardModel,tool client.js:2965-2986)。 */
|
|
15
|
+
export interface ImageCardFace {
|
|
16
|
+
path: string;
|
|
17
|
+
images: readonly {
|
|
18
|
+
attachment: ImageAttachmentRefLike;
|
|
19
|
+
}[];
|
|
20
|
+
/** 结果里 envelope 之外的文本(官方 extraTexts);没有 = null。 */
|
|
21
|
+
extraText: string | null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 官方 imageCardModel:read_image + 已结算 + 非错误 + 参数里有 file_path + 结果里既有
|
|
25
|
+
* IMAGE_ENVELOPE 文本又有 image 块的附件引用,才出图片卡;任一不满足都回通用卡。
|
|
26
|
+
* @param content - 已结算结果的内容块(图片引用与 envelope 的唯一真源)。
|
|
27
|
+
*/
|
|
28
|
+
export declare function imageCardFace(name: string, argsRaw: string, content: readonly ContentBlockLike[] | undefined, meta: unknown, isError: boolean, settled: boolean): ImageCardFace | null;
|
|
13
29
|
/** 搜索结果卡两面(官方 searchCardModel 的返回;recovery = 截断时的完整结果正文)。 */
|
|
14
30
|
interface SearchFace {
|
|
15
31
|
card: {
|
|
@@ -135,6 +151,10 @@ export declare function GenericCommandCard(props: {
|
|
|
135
151
|
onOpenFile?: (path: string, options?: {
|
|
136
152
|
line?: number;
|
|
137
153
|
}) => void;
|
|
154
|
+
/** `read_image` 的图片卡面(imageCardFace 的结果);undefined = 走通用卡。 */
|
|
155
|
+
image?: ImageCardFace;
|
|
156
|
+
/** 图片 loader(view.loadImage);缺席 = 只出路径与尺寸文字,不画图。 */
|
|
157
|
+
loadImage?: MessageImageLoader;
|
|
138
158
|
t: Translate;
|
|
139
159
|
}): ReturnType<typeof h>;
|
|
140
160
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericCommandCard.d.ts","sourceRoot":"","sources":["../../../../src/adv/session/mirror/GenericCommandCard.ts"],"names":[],"mappings":"AAaA,OAAO,EAAY,aAAa,IAAI,CAAC,EAAqB,MAAM,OAAO,CAAA;AAoBvE,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"GenericCommandCard.d.ts","sourceRoot":"","sources":["../../../../src/adv/session/mirror/GenericCommandCard.ts"],"names":[],"mappings":"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"}
|