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.
Files changed (99) hide show
  1. package/dist/adv/session/SessionViewModal.d.ts +20 -2
  2. package/dist/adv/session/SessionViewModal.d.ts.map +1 -1
  3. package/dist/adv/session/SessionViewModal.js +186 -73
  4. package/dist/adv/session/SessionViewModal.js.map +1 -1
  5. package/dist/adv/session/faces.d.ts +30 -7
  6. package/dist/adv/session/faces.d.ts.map +1 -1
  7. package/dist/adv/session/index.d.ts +1 -0
  8. package/dist/adv/session/index.d.ts.map +1 -1
  9. package/dist/adv/session/index.js +1 -0
  10. package/dist/adv/session/index.js.map +1 -1
  11. package/dist/adv/session/mirror/BashRow.d.ts.map +1 -1
  12. package/dist/adv/session/mirror/BashRow.js +11 -2
  13. package/dist/adv/session/mirror/BashRow.js.map +1 -1
  14. package/dist/adv/session/mirror/ChatView.d.ts +8 -0
  15. package/dist/adv/session/mirror/ChatView.d.ts.map +1 -1
  16. package/dist/adv/session/mirror/ChatView.js +8 -0
  17. package/dist/adv/session/mirror/ChatView.js.map +1 -1
  18. package/dist/adv/session/mirror/ContextBody.d.ts +24 -0
  19. package/dist/adv/session/mirror/ContextBody.d.ts.map +1 -0
  20. package/dist/adv/session/mirror/ContextBody.js +249 -0
  21. package/dist/adv/session/mirror/ContextBody.js.map +1 -0
  22. package/dist/adv/session/mirror/ContextInjectionRow.d.ts +21 -1
  23. package/dist/adv/session/mirror/ContextInjectionRow.d.ts.map +1 -1
  24. package/dist/adv/session/mirror/ContextInjectionRow.js +57 -29
  25. package/dist/adv/session/mirror/ContextInjectionRow.js.map +1 -1
  26. package/dist/adv/session/mirror/GenericCommandCard.d.ts +20 -0
  27. package/dist/adv/session/mirror/GenericCommandCard.d.ts.map +1 -1
  28. package/dist/adv/session/mirror/GenericCommandCard.js +89 -27
  29. package/dist/adv/session/mirror/GenericCommandCard.js.map +1 -1
  30. package/dist/adv/session/mirror/MessageIconActions.js +1 -1
  31. package/dist/adv/session/mirror/MessageIconActions.js.map +1 -1
  32. package/dist/adv/session/mirror/MessageImage.d.ts +23 -0
  33. package/dist/adv/session/mirror/MessageImage.d.ts.map +1 -0
  34. package/dist/adv/session/mirror/MessageImage.js +107 -0
  35. package/dist/adv/session/mirror/MessageImage.js.map +1 -0
  36. package/dist/adv/session/mirror/MessageItem.d.ts +11 -0
  37. package/dist/adv/session/mirror/MessageItem.d.ts.map +1 -1
  38. package/dist/adv/session/mirror/MessageItem.js +12 -2
  39. package/dist/adv/session/mirror/MessageItem.js.map +1 -1
  40. package/dist/adv/session/official-classes.d.ts +2 -0
  41. package/dist/adv/session/official-classes.d.ts.map +1 -1
  42. package/dist/adv/session/official-classes.js +3 -0
  43. package/dist/adv/session/official-classes.js.map +1 -1
  44. package/dist/adv/session/open-session-view.d.ts +6 -1
  45. package/dist/adv/session/open-session-view.d.ts.map +1 -1
  46. package/dist/adv/session/open-session-view.js +8 -0
  47. package/dist/adv/session/open-session-view.js.map +1 -1
  48. package/dist/adv/session/session-css.generated.d.ts +1 -1
  49. package/dist/adv/session/session-css.generated.d.ts.map +1 -1
  50. package/dist/adv/session/session-css.generated.js +1 -1
  51. package/dist/adv/session/session-css.generated.js.map +1 -1
  52. package/dist/design/tokens-css.generated.d.ts +1 -1
  53. package/dist/design/tokens-css.generated.d.ts.map +1 -1
  54. package/dist/design/tokens-css.generated.js +1 -1
  55. package/dist/design/tokens-css.generated.js.map +1 -1
  56. package/dist/ui/feedback/Modal.d.ts +7 -0
  57. package/dist/ui/feedback/Modal.d.ts.map +1 -1
  58. package/dist/ui/feedback/Modal.js +2 -0
  59. package/dist/ui/feedback/Modal.js.map +1 -1
  60. package/dist/ui/infra/overlay-css.generated.d.ts +1 -1
  61. package/dist/ui/infra/overlay-css.generated.d.ts.map +1 -1
  62. package/dist/ui/infra/overlay-css.generated.js +1 -1
  63. package/dist/ui/infra/overlay-css.generated.js.map +1 -1
  64. package/dist/ui/infra/overlay.d.ts +7 -0
  65. package/dist/ui/infra/overlay.d.ts.map +1 -1
  66. package/dist/ui/infra/overlay.js +6 -1
  67. package/dist/ui/infra/overlay.js.map +1 -1
  68. package/dist/ui/infra/panel-css.generated.d.ts +1 -1
  69. package/dist/ui/infra/panel-css.generated.d.ts.map +1 -1
  70. package/dist/ui/infra/panel-css.generated.js +1 -1
  71. package/dist/ui/infra/panel-css.generated.js.map +1 -1
  72. package/dist/ui/inputs/DateTimePicker.js +1 -1
  73. package/dist/ui/inputs/DateTimePicker.js.map +1 -1
  74. package/dist/ui/inputs/Picker.d.ts.map +1 -1
  75. package/dist/ui/inputs/Picker.js +5 -3
  76. package/dist/ui/inputs/Picker.js.map +1 -1
  77. package/dist/ui/inputs/datetime-css.generated.d.ts +1 -1
  78. package/dist/ui/inputs/datetime-css.generated.d.ts.map +1 -1
  79. package/dist/ui/inputs/datetime-css.generated.js +1 -1
  80. package/dist/ui/inputs/datetime-css.generated.js.map +1 -1
  81. package/dist/ui/inputs/picker-css.generated.d.ts +1 -1
  82. package/dist/ui/inputs/picker-css.generated.d.ts.map +1 -1
  83. package/dist/ui/inputs/picker-css.generated.js +1 -1
  84. package/dist/ui/inputs/picker-css.generated.js.map +1 -1
  85. package/dist/ui/layout/panel-dock-css.generated.d.ts +1 -1
  86. package/dist/ui/layout/panel-dock-css.generated.d.ts.map +1 -1
  87. package/dist/ui/layout/panel-dock-css.generated.js +1 -1
  88. package/dist/ui/layout/panel-dock-css.generated.js.map +1 -1
  89. package/dist/utils/i18n.d.ts +2 -2
  90. package/dist/utils/i18n.d.ts.map +1 -1
  91. package/dist/utils/i18n.js +54 -0
  92. package/dist/utils/i18n.js.map +1 -1
  93. package/docs/design/external/dsh-host.md +22 -0
  94. package/docs/design/style.md +38 -10
  95. package/docs/help/session.doc.ts +19 -2
  96. package/docs/help/session.md +19 -2
  97. package/docs/help/ui.doc.ts +3 -3
  98. package/docs/help/ui.md +3 -3
  99. 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
- /** 系统注入上下文行(官方 ContextInjectionRow 的 opaque 版)。 */
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,mDAAmD;AACnD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAyC1G"}
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
- // 官方对照:ui-chat@0.2.1-rc.5 lib/client.js:4967-5050(ContextInjectionRow)+ 4530-4540(OpaqueBody)。
2
- // 折叠行 = DisclosureRow(图标 + 标题「上下文注入」/「跨会话召回」+ producer 来源);
3
- // 展开体 = 模型面向文本(content 里的 text 块拼成 pre[data-context-text])。
4
- // shortcut: form 细分(instructions/catalog/snapshot/notice/relay/recall 各带 Body + source 解析)未复刻,
5
- // 一律走 opaque 文本;这些 form 低频,等确实需要精确还原时再补。
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 { modelFacingRuns } from './TurnTriggerNodeView.js';
10
- /** 系统注入上下文行(官方 ContextInjectionRow 的 opaque 版)。 */
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 toolBlocks = content.length > 0 && content.every(block => {
18
- const type = block?.type;
19
- return type === 'tool-addition' || type === 'tool-removal';
20
- });
21
- return h(DisclosureRow, {
22
- className: officialClass('ContextInjectionRow', 'root') ?? '',
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, h('span', { className: officialClass('ContextInjectionRow', 'sep') ?? '', 'aria-hidden': true }), h('span', {
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
- open,
36
- expandable: true,
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': node.form ?? undefined,
43
- }, modelFacingRuns(content, t).map((text, index) => h('pre', {
44
- key: index,
45
- className: officialClass('ContextBody', 'text') ?? '',
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":"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"}
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":"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"}
1
+ {"version":3,"file":"GenericCommandCard.d.ts","sourceRoot":"","sources":["../../../../src/adv/session/mirror/GenericCommandCard.ts"],"names":[],"mappings":"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"}