@jingyi0605/codingns4dsh 0.2.1-beta.11 → 0.2.1-beta.12

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 (193) hide show
  1. package/README.en.md +7 -5
  2. package/README.md +9 -5
  3. package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
  4. package/data/build/dist/bootstrap/index.d.ts +1 -1
  5. package/data/build/dist/client/bundle.js +2280 -1495
  6. package/data/build/dist/client/bundle.js.map +1 -1
  7. package/data/build/dist/client/cli-slots.d.ts +3 -2
  8. package/data/build/dist/client/cli-slots.d.ts.map +1 -1
  9. package/data/build/dist/client/cli-slots.js +29 -5
  10. package/data/build/dist/client/cli-slots.js.map +1 -1
  11. package/data/build/dist/client/client.assistant-configuration-view.js +5 -5
  12. package/data/build/dist/client/client.assistant-configuration-view.js.map +1 -1
  13. package/data/build/dist/client/client.moss-voice-output.js +0 -166
  14. package/data/build/dist/client/client.moss-voice-output.js.map +1 -1
  15. package/data/build/dist/client/client.native-workspace-store.js +4 -4
  16. package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
  17. package/data/build/dist/client/client.react-dom.js +166 -0
  18. package/data/build/dist/client/client.react-dom.js.map +1 -1
  19. package/data/build/dist/client/client.session-translation.js +9 -1
  20. package/data/build/dist/client/client.session-translation.js.map +1 -1
  21. package/data/build/dist/client/client.transport.js +46 -0
  22. package/data/build/dist/client/client.transport.js.map +1 -1
  23. package/data/build/dist/client/conversation-translation-settings.d.ts +10 -0
  24. package/data/build/dist/client/conversation-translation-settings.d.ts.map +1 -0
  25. package/data/build/dist/client/conversation-translation-settings.js +52 -0
  26. package/data/build/dist/client/conversation-translation-settings.js.map +1 -0
  27. package/data/build/dist/client/desktop-assistant.js +512 -439
  28. package/data/build/dist/client/features/cli-adapters.js +1 -1
  29. package/data/build/dist/client/features/cli-adapters.js.map +1 -1
  30. package/data/build/dist/client/features/session-translation.d.ts.map +1 -1
  31. package/data/build/dist/client/features/session-translation.js +7 -1
  32. package/data/build/dist/client/features/session-translation.js.map +1 -1
  33. package/data/build/dist/client/locales/panels.d.ts.map +1 -1
  34. package/data/build/dist/client/locales/panels.js +46 -0
  35. package/data/build/dist/client/locales/panels.js.map +1 -1
  36. package/data/build/dist/client/session-translation-chat.d.ts +9 -3
  37. package/data/build/dist/client/session-translation-chat.d.ts.map +1 -1
  38. package/data/build/dist/client/session-translation-chat.js +146 -48
  39. package/data/build/dist/client/session-translation-chat.js.map +1 -1
  40. package/data/build/dist/client/session-translation-pending-dom.d.ts +1 -1
  41. package/data/build/dist/client/session-translation-pending-dom.d.ts.map +1 -1
  42. package/data/build/dist/client/session-translation-pending-dom.js +4 -4
  43. package/data/build/dist/client/session-translation-pending-dom.js.map +1 -1
  44. package/data/build/dist/client/session-translation-retry.d.ts +16 -0
  45. package/data/build/dist/client/session-translation-retry.d.ts.map +1 -0
  46. package/data/build/dist/client/session-translation-retry.js +66 -0
  47. package/data/build/dist/client/session-translation-retry.js.map +1 -0
  48. package/data/build/dist/client/session-translation-rules.d.ts +13 -0
  49. package/data/build/dist/client/session-translation-rules.d.ts.map +1 -0
  50. package/data/build/dist/client/session-translation-rules.js +58 -0
  51. package/data/build/dist/client/session-translation-rules.js.map +1 -0
  52. package/data/build/dist/client/style.css +276 -276
  53. package/data/build/dist/dsh-capabilities/client/interaction-presentation-adapter.d.ts.map +1 -1
  54. package/data/build/dist/dsh-capabilities/client/interaction-presentation-adapter.js +4 -13
  55. package/data/build/dist/dsh-capabilities/client/interaction-presentation-adapter.js.map +1 -1
  56. package/data/build/dist/dsh-capabilities/client/interaction-text-dom.js +1 -1
  57. package/data/build/dist/dsh-capabilities/client/interaction-text-dom.js.map +1 -1
  58. package/data/build/dist/dsh-capabilities/client/message-presentation-adapter.d.ts +19 -0
  59. package/data/build/dist/dsh-capabilities/client/message-presentation-adapter.d.ts.map +1 -0
  60. package/data/build/dist/dsh-capabilities/client/message-presentation-adapter.js +39 -0
  61. package/data/build/dist/dsh-capabilities/client/message-presentation-adapter.js.map +1 -0
  62. package/data/build/dist/dsh-capabilities/client/slot-presentation-mirror.d.ts +2 -0
  63. package/data/build/dist/dsh-capabilities/client/slot-presentation-mirror.d.ts.map +1 -1
  64. package/data/build/dist/dsh-capabilities/client/slot-presentation-mirror.js +28 -0
  65. package/data/build/dist/dsh-capabilities/client/slot-presentation-mirror.js.map +1 -1
  66. package/data/build/dist/dsh-capabilities/host/connection-peer-adapter.d.ts +10 -0
  67. package/data/build/dist/dsh-capabilities/host/connection-peer-adapter.d.ts.map +1 -0
  68. package/data/build/dist/dsh-capabilities/host/connection-peer-adapter.js +34 -0
  69. package/data/build/dist/dsh-capabilities/host/connection-peer-adapter.js.map +1 -0
  70. package/data/build/dist/dsh-capabilities/host/native-dispatch-adapter.d.ts +21 -0
  71. package/data/build/dist/dsh-capabilities/host/native-dispatch-adapter.d.ts.map +1 -0
  72. package/data/build/dist/dsh-capabilities/host/native-dispatch-adapter.js +11 -0
  73. package/data/build/dist/dsh-capabilities/host/native-dispatch-adapter.js.map +1 -0
  74. package/data/build/dist/dsh-capabilities/host/session-activation-adapter.d.ts +17 -0
  75. package/data/build/dist/dsh-capabilities/host/session-activation-adapter.d.ts.map +1 -0
  76. package/data/build/dist/dsh-capabilities/host/session-activation-adapter.js +37 -0
  77. package/data/build/dist/dsh-capabilities/host/session-activation-adapter.js.map +1 -0
  78. package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.d.ts +17 -0
  79. package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.d.ts.map +1 -0
  80. package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.js +45 -0
  81. package/data/build/dist/dsh-capabilities/host/session-model-selection-adapter.js.map +1 -0
  82. package/data/build/dist/dsh-capabilities/host/session-prompt-adapter.d.ts +28 -0
  83. package/data/build/dist/dsh-capabilities/host/session-prompt-adapter.d.ts.map +1 -0
  84. package/data/build/dist/dsh-capabilities/host/session-prompt-adapter.js +31 -0
  85. package/data/build/dist/dsh-capabilities/host/session-prompt-adapter.js.map +1 -0
  86. package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
  87. package/data/build/dist/dsh-capabilities/matrix.js +12 -4
  88. package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
  89. package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
  90. package/data/build/dist/dsh-capabilities/routes.js +25 -5
  91. package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
  92. package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
  93. package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
  94. package/data/build/dist/dsh-capabilities/types.js.map +1 -1
  95. package/data/build/dist/host/cli-adapters/antigravity-driver.js +1 -1
  96. package/data/build/dist/host/cli-adapters/antigravity-driver.js.map +1 -1
  97. package/data/build/dist/host/cli-adapters/attachment-utils.d.ts +4 -3
  98. package/data/build/dist/host/cli-adapters/attachment-utils.d.ts.map +1 -1
  99. package/data/build/dist/host/cli-adapters/attachment-utils.js +9 -8
  100. package/data/build/dist/host/cli-adapters/attachment-utils.js.map +1 -1
  101. package/data/build/dist/host/cli-adapters/claude-driver.js +1 -1
  102. package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
  103. package/data/build/dist/host/cli-adapters/command-code-driver.js +1 -1
  104. package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
  105. package/data/build/dist/host/cli-adapters/driver.d.ts +2 -0
  106. package/data/build/dist/host/cli-adapters/driver.d.ts.map +1 -1
  107. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts +2 -0
  108. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
  109. package/data/build/dist/host/cli-adapters/dsh-message-projector.js +11 -3
  110. package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
  111. package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
  112. package/data/build/dist/host/cli-adapters/feature.js +154 -68
  113. package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
  114. package/data/build/dist/host/cli-adapters/gemini-driver.js +1 -1
  115. package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -1
  116. package/data/build/dist/host/cli-adapters/grok-driver.d.ts +1 -0
  117. package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
  118. package/data/build/dist/host/cli-adapters/grok-driver.js +128 -40
  119. package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
  120. package/data/build/dist/host/cli-adapters/kimi-driver.js +2 -2
  121. package/data/build/dist/host/cli-adapters/kimi-driver.js.map +1 -1
  122. package/data/build/dist/host/cli-adapters/mcode-driver.js +1 -1
  123. package/data/build/dist/host/cli-adapters/mcode-driver.js.map +1 -1
  124. package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts.map +1 -1
  125. package/data/build/dist/host/cli-adapters/native-team-subagent.js +2 -1
  126. package/data/build/dist/host/cli-adapters/native-team-subagent.js.map +1 -1
  127. package/data/build/dist/host/cli-adapters/pi-driver.js +1 -1
  128. package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -1
  129. package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
  130. package/data/build/dist/host/cli-adapters/registry.js +23 -16
  131. package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
  132. package/data/build/dist/host/cli-adapters/zcode-driver.js +1 -1
  133. package/data/build/dist/host/cli-adapters/zcode-driver.js.map +1 -1
  134. package/data/build/dist/host/features/global-voice-rpc.d.ts.map +1 -1
  135. package/data/build/dist/host/features/global-voice-rpc.js +2 -3
  136. package/data/build/dist/host/features/global-voice-rpc.js.map +1 -1
  137. package/data/build/dist/host/features/peer-host.js +6 -6
  138. package/data/build/dist/host/features/peer-host.js.map +1 -1
  139. package/data/build/dist/host/features/session-prompt-translation.d.ts +10 -0
  140. package/data/build/dist/host/features/session-prompt-translation.d.ts.map +1 -0
  141. package/data/build/dist/host/features/session-prompt-translation.js +197 -0
  142. package/data/build/dist/host/features/session-prompt-translation.js.map +1 -0
  143. package/data/build/dist/host/features/session-translation-protection.d.ts +6 -1
  144. package/data/build/dist/host/features/session-translation-protection.d.ts.map +1 -1
  145. package/data/build/dist/host/features/session-translation-protection.js +23 -5
  146. package/data/build/dist/host/features/session-translation-protection.js.map +1 -1
  147. package/data/build/dist/host/features/session-translation-recovery.d.ts +20 -0
  148. package/data/build/dist/host/features/session-translation-recovery.d.ts.map +1 -0
  149. package/data/build/dist/host/features/session-translation-recovery.js +122 -0
  150. package/data/build/dist/host/features/session-translation-recovery.js.map +1 -0
  151. package/data/build/dist/host/features/session-translation-service.d.ts +5 -2
  152. package/data/build/dist/host/features/session-translation-service.d.ts.map +1 -1
  153. package/data/build/dist/host/features/session-translation-service.js +60 -16
  154. package/data/build/dist/host/features/session-translation-service.js.map +1 -1
  155. package/data/build/dist/host/features/session-translation.d.ts.map +1 -1
  156. package/data/build/dist/host/features/session-translation.js +4 -1
  157. package/data/build/dist/host/features/session-translation.js.map +1 -1
  158. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts +2 -2
  159. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.d.ts.map +1 -1
  160. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js +10 -9
  161. package/data/build/dist/host/modules/peer-host/peer-host-native-dispatch.js.map +1 -1
  162. package/data/build/dist/host/modules/peer-host/peer-host-native-streams.d.ts +3 -3
  163. package/data/build/dist/host/modules/peer-host/peer-host-native-streams.d.ts.map +1 -1
  164. package/data/build/dist/host/modules/peer-host/peer-host-native-streams.js +26 -14
  165. package/data/build/dist/host/modules/peer-host/peer-host-native-streams.js.map +1 -1
  166. package/data/build/dist/host/native-session-bridge.d.ts +2 -1
  167. package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
  168. package/data/build/dist/host/native-session-bridge.js +5 -13
  169. package/data/build/dist/host/native-session-bridge.js.map +1 -1
  170. package/data/build/dist/host/rpc.d.ts.map +1 -1
  171. package/data/build/dist/host/rpc.js +14 -8
  172. package/data/build/dist/host/rpc.js.map +1 -1
  173. package/data/build/dist/host/settings.d.ts.map +1 -1
  174. package/data/build/dist/host/settings.js +5 -1
  175. package/data/build/dist/host/settings.js.map +1 -1
  176. package/data/build/dist/shared/attachment-prompts.d.ts +11 -0
  177. package/data/build/dist/shared/attachment-prompts.d.ts.map +1 -0
  178. package/data/build/dist/shared/attachment-prompts.js +17 -0
  179. package/data/build/dist/shared/attachment-prompts.js.map +1 -0
  180. package/data/build/dist/shared/contracts/cli-adapter.d.ts +8 -1
  181. package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
  182. package/data/build/dist/shared/contracts/errors.d.ts +2 -2
  183. package/data/build/dist/shared/contracts/session-translation.d.ts +13 -0
  184. package/data/build/dist/shared/contracts/session-translation.d.ts.map +1 -1
  185. package/data/build/dist/shared/contracts/session-translation.js +10 -0
  186. package/data/build/dist/shared/contracts/session-translation.js.map +1 -1
  187. package/data/build/dist/shared/contracts/version.d.ts +4 -4
  188. package/data/build/dist/shared/contracts/version.js +3 -3
  189. package/package.json +35 -34
  190. package/profile/README.md +2 -2
  191. package/profile/package.json +3 -3
  192. package/profile/version.json +3 -3
  193. package/version.json +3 -3
@@ -47,6 +47,8 @@ export class CodingNsDshMessageProjector {
47
47
  nextBlockIndex = 2;
48
48
  reasoningText = '';
49
49
  textText = '';
50
+ /** Decide buffering once per block so settings changes cannot split its deltas. */
51
+ translatedBlocks = new Set();
50
52
  finished = false;
51
53
  /** 只要收到正文、工具、usage 或交互事件,就说明 Provider 确实产出了结果。 */
52
54
  receivedProviderEvent = false;
@@ -191,7 +193,10 @@ export class CodingNsDshMessageProjector {
191
193
  else
192
194
  this.textText += text;
193
195
  const delta = { type: `${channel}-delta`, index, text };
194
- if (this.options.translation?.shouldTranslate(this.options.adapterId, channel === 'reasoning' ? 'reasoning' : 'assistant', this.options.translationEnabled) === true)
196
+ if (opened && this.options.translation?.shouldTranslate(this.options.adapterId, channel === 'reasoning' ? 'reasoning' : 'assistant', this.options.translationEnabled) === true) {
197
+ this.translatedBlocks.add(index);
198
+ }
199
+ if (this.translatedBlocks.has(index))
195
200
  return [];
196
201
  return opened ? [{ type: 'block-start', index, blockType: channel }, delta] : [delta];
197
202
  }
@@ -217,7 +222,7 @@ export class CodingNsDshMessageProjector {
217
222
  const original = this.reasoningText;
218
223
  this.reasoningText = '';
219
224
  this.reasoningIndex = undefined;
220
- if (this.options.translation?.shouldTranslate(this.options.adapterId, 'reasoning', this.options.translationEnabled) !== true) {
225
+ if (!this.translatedBlocks.delete(index)) {
221
226
  return [{ type: 'block-end', index, block: { type: 'reasoning', text: original } }];
222
227
  }
223
228
  return this.translatedBlock('reasoning', index, original);
@@ -230,7 +235,7 @@ export class CodingNsDshMessageProjector {
230
235
  const original = this.textText;
231
236
  this.textText = '';
232
237
  this.textIndex = undefined;
233
- if (this.options.translation?.shouldTranslate(this.options.adapterId, 'assistant', this.options.translationEnabled) !== true) {
238
+ if (!this.translatedBlocks.delete(index)) {
234
239
  return [{ type: 'block-end', index, block: { type: 'text', text: original } }];
235
240
  }
236
241
  return this.translatedBlock('text', index, original);
@@ -338,6 +343,7 @@ export class CodingNsDshMessageProjector {
338
343
  await responder({ requestId: event.requestId, approved, ...(reason === undefined ? {} : { reason }) });
339
344
  }
340
345
  async requestQuestions(event) {
346
+ this.options.signal?.throwIfAborted();
341
347
  const responder = this.options.respondQuestion;
342
348
  if (responder === undefined)
343
349
  throw new Error('外部 Agent 发送了问题请求,但适配器没有问题回复接口');
@@ -357,6 +363,8 @@ export class CodingNsDshMessageProjector {
357
363
  questions: event.questions,
358
364
  ...(this.options.signal === undefined ? {} : { signal: this.options.signal }),
359
365
  }) ?? null;
366
+ // A submitted answer can race with cancellation or adapter reload.
367
+ this.options.signal?.throwIfAborted();
360
368
  if (response === null)
361
369
  throw new Error('DSH 原生问题组件不可用或问题已取消');
362
370
  await responder(response);
@@ -1 +1 @@
1
- {"version":3,"file":"dsh-message-projector.js","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/dsh-message-projector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dsh-message-projector.js","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/dsh-message-projector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,mCAAmC,CAAA;AAkB5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAM1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAsBhE,wBAAgB,wBAAwB,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,0BAA0B,CAAA;CAAO,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAucrI"}
1
+ {"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/feature.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,mCAAmC,CAAA;AAkB5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAM1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AA4BhE,wBAAgB,wBAAwB,CAAC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,0BAA0B,CAAA;CAAO,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAofrI"}
@@ -33,7 +33,12 @@ import { debugInfo } from '../../shared/debug.js';
33
33
  import { hasLegacySessionAdapterHint } from './legacy-session-adapter.js';
34
34
  import { DSH_NATIVE_SESSION_ADAPTER_ID, formatSessionTranslationOutput, readSessionTranslationMetrics, } from '../../shared/contracts/session-translation.js';
35
35
  import { createInteractionTranslation } from '../features/interaction-translation.js';
36
+ import { createSessionTranslationRecovery, SessionTranslationCancelled } from '../features/session-translation-recovery.js';
36
37
  import { ASSISTANT_AGENT_PREFIX } from '../../dsh-capabilities/host/assistant-agent-adapter.js';
38
+ import { createDshCapabilityRegistry } from '../../dsh-capabilities/routes.js';
39
+ import { attachmentFileNotice } from '../../shared/attachment-prompts.js';
40
+ import { sessionPromptScope } from '../../dsh-capabilities/host/session-prompt-adapter.js';
41
+ import { createSessionPromptTranslation } from '../features/session-prompt-translation.js';
37
42
  export function createCliAdaptersFeature(options = {}) {
38
43
  return {
39
44
  descriptor: {
@@ -42,8 +47,10 @@ export function createCliAdaptersFeature(options = {}) {
42
47
  enabledByDefault: true,
43
48
  dependencies: [],
44
49
  runtime: 'host',
50
+ requires: [{ capability: 'session.external-model-selection', required: false, fallback: 'degrade' }],
45
51
  },
46
52
  async start(context) {
53
+ const lifetime = new AbortController();
47
54
  // 用量查询超时对所有适配器统一生效:同一个 timeoutMs 下发给全部网络读取器,
48
55
  // 设置变更时整体重建,避免旧超时继续生效。
49
56
  const buildSubscriptions = (settings) => {
@@ -93,6 +100,18 @@ export function createCliAdaptersFeature(options = {}) {
93
100
  virtualProviders?.setProviders(registry.enabledAdapterIds());
94
101
  if (virtualProviders !== undefined)
95
102
  context.resources.add(() => virtualProviders.dispose());
103
+ if (context.services.dshContext !== undefined && context.services.dshVersion !== undefined) {
104
+ const selection = createDshCapabilityRegistry(context.services.dshVersion, 'host', context.services.dshContext)
105
+ .getProfile(context.services.dshContext).capabilities.get('session.external-model-selection')
106
+ ?.value;
107
+ if (selection !== undefined)
108
+ context.resources.add(selection.install((sessionId) => {
109
+ const config = registry.getSession(sessionId);
110
+ if (config.adapterId === 'dsh' || !registry.isEnabled(config.adapterId))
111
+ return undefined;
112
+ return { provider: config.adapterId, model: config.modelId?.trim() || 'provider-default' };
113
+ }));
114
+ }
96
115
  registry.warmCatalog();
97
116
  // 外部适配器没有经过 DSH 原生 Agent Loop,必须把同一套运行状态投影给
98
117
  // subagentCatalog。这里集中去重,避免 llm/stream、原生 session/event 和
@@ -132,10 +151,27 @@ export function createCliAdaptersFeature(options = {}) {
132
151
  });
133
152
  context.resources.add(disposeNativeEvents);
134
153
  }
135
- registerDelegationAgentHooks(context.services.dshContext, registry, context.resources, publishExternalStatus, translation, nativeSessions);
154
+ const translationRecovery = createSessionTranslationRecovery(translation, sessionId => registry.getSession(sessionId));
155
+ context.resources.add(() => translationRecovery.dispose());
156
+ const promptTranslation = createSessionPromptTranslation(translation, sessionId => {
157
+ if (!sessionId || isAssistantSession(sessionId) || readNativeSessionHeader(nativeSessions, sessionId)?.origin === 'subagent')
158
+ return undefined;
159
+ const config = registry.getSession(sessionId);
160
+ return (config.translationEnabled ?? (config.adapterId === 'dsh' && translation?.nativeEnabled === true)) ? config.adapterId : undefined;
161
+ });
162
+ context.resources.add(() => promptTranslation.dispose());
163
+ if (context.services.dshContext !== undefined && context.services.dshVersion !== undefined) {
164
+ const adapter = createDshCapabilityRegistry(context.services.dshVersion, 'host', context.services.dshContext)
165
+ .getProfile(context.services.dshContext).capabilities.get('session.prompt-assembly')?.value;
166
+ if (adapter !== undefined)
167
+ context.resources.add(adapter.install((assembly, scope) => promptTranslation.translateAssembly(assembly, scope)));
168
+ }
169
+ registerDelegationAgentHooks(context.services.dshContext, registry, context.resources, publishExternalStatus, translation, translationRecovery, promptTranslation, nativeSessions);
136
170
  const interactionTranslation = createInteractionTranslation(translation, sessionId => registry.getSession(sessionId));
137
171
  context.resources.add(() => interactionTranslation.dispose());
138
172
  context.resources.add(context.services.rpc.register('cli', (action, payload, rpcContext) => {
173
+ const rpcSignal = asRecord(rpcContext)?.signal;
174
+ const signal = isAbortSignal(rpcSignal) ? rpcSignal : undefined;
139
175
  switch (action) {
140
176
  case 'catalog': return registry.catalog();
141
177
  case 'catalog/refresh': return registry.refreshCatalog(asRecord(payload)?.adapterId === undefined ? undefined : readAdapterId(payload)).then((catalog) => {
@@ -147,10 +183,10 @@ export function createCliAdaptersFeature(options = {}) {
147
183
  return adapterId === 'dsh' ? readDshModelCatalog(context.services.dshContext) : registry.models(adapterId);
148
184
  }
149
185
  case 'translation/models': return context.services.sessionTranslation?.catalog() ?? { models: [], default: null, errors: ['翻译模型目录不可用'] };
150
- case 'translation/fields': {
151
- const signal = asRecord(rpcContext)?.signal;
152
- return interactionTranslation.translate(payload, isAbortSignal(signal) ? signal : undefined);
153
- }
186
+ case 'translation/pending': return translationRecovery.pending(payload);
187
+ case 'translation/resolve': return translationRecovery.resolve(payload);
188
+ case 'translation/retry-output': return translationRecovery.retryOutput(payload, signal);
189
+ case 'translation/fields': return interactionTranslation.translate(payload, signal);
154
190
  case 'skills': {
155
191
  const request = readSkillsRequest(payload);
156
192
  const cwd = resolveSessionCwd(context.services.nativeSessions, request.sessionId, null);
@@ -168,15 +204,26 @@ export function createCliAdaptersFeature(options = {}) {
168
204
  }
169
205
  return registry.getSession(sessionId);
170
206
  }
171
- case 'session/set': return registry.setSession(readSessionId(payload), readSessionConfig(payload));
207
+ case 'session/set': {
208
+ const sessionId = readSessionId(payload);
209
+ const previous = registry.getSession(sessionId);
210
+ const config = registry.setSession(sessionId, readSessionConfig(payload));
211
+ if (config.translationEnabled === false || previous.adapterId !== config.adapterId)
212
+ translationRecovery.cancelSession(sessionId);
213
+ return config;
214
+ }
172
215
  case 'session/list': return registry.listSessions(readSessionListOptions(payload));
173
216
  case 'session/adapter-map':
174
217
  // 列表查询只返回持久化索引,不能触发会话加载或历史解析。
175
218
  return sessionStore.adapterBindings();
176
219
  case 'session/archive': return registry.archiveSession(readSessionId(payload));
177
- case 'session/steer': return translateSteerPrompt(translation, registry, readSessionId(payload), readPrompt(payload), false);
178
- case 'session/follow-up': return translateSteerPrompt(translation, registry, readSessionId(payload), readPrompt(payload), true);
179
- case 'session/interrupt': return registry.interrupt(readSessionId(payload));
220
+ case 'session/steer': return translateSteerPrompt(translationRecovery, registry, readSessionId(payload), readPrompt(payload), false, signal);
221
+ case 'session/follow-up': return translateSteerPrompt(translationRecovery, registry, readSessionId(payload), readPrompt(payload), true, signal);
222
+ case 'session/interrupt': {
223
+ const sessionId = readSessionId(payload);
224
+ translationRecovery.cancelSession(sessionId);
225
+ return registry.interrupt(sessionId);
226
+ }
180
227
  case 'team/status': return context.services.nativeTeam?.diagnostic() ?? registry.teamDiagnostic();
181
228
  case 'team/members': return requireTeam(context).invoke('members', payload);
182
229
  case 'team/tasks': return requireTeam(context).invoke('tasks', payload);
@@ -267,6 +314,7 @@ export function createCliAdaptersFeature(options = {}) {
267
314
  virtualProviders?.setProviders(registry.enabledAdapterIds());
268
315
  registry.syncPreferences(next.agentAdapterPreferences);
269
316
  sessionStore.sync(next.cliSessions);
317
+ translationRecovery.cancelDisabled(next.sessionTranslation?.nativeEnabled === true, next.sessionTranslation?.inputEnabled !== false);
270
318
  const nextSubscriptionSettings = JSON.stringify(next.subscriptionUsage ?? null);
271
319
  if (nextSubscriptionSettings !== subscriptionSettings) {
272
320
  subscriptionSettings = nextSubscriptionSettings;
@@ -371,19 +419,24 @@ export function createCliAdaptersFeature(options = {}) {
371
419
  const turnInput = extractTurnInput(messages, context.services.dshContext);
372
420
  const turnOptions = readCliTurnOptions(value);
373
421
  const runtimeEnv = readCliRuntimeEnv(value);
374
- const requestSignal = isAbortSignal(value?.signal) ? value.signal : undefined;
422
+ const requestSignal = isAbortSignal(value?.signal)
423
+ ? AbortSignal.any([value.signal, lifetime.signal])
424
+ : lifetime.signal;
425
+ const translationLanguage = translation?.enabled && translation.inputEnabled !== false && config.translationEnabled === true ? readInputTargetLanguage(translation) : undefined;
375
426
  let translatedPrompt = turnInput.translationPrompt;
376
- if (turnInput.translatePrompt && translation !== undefined) {
427
+ if (turnInput.translatePrompt && turnInput.translationPrompt.trim() !== '' && translationLanguage !== undefined) {
377
428
  try {
378
- translatedPrompt = await translation.translateInput(config.adapterId, turnInput.translationPrompt, requestSignal, config.translationEnabled === true);
429
+ translatedPrompt = (await translationRecovery.translateInput(sessionId, config.adapterId, turnInput.translationPrompt, requestSignal)).translated;
379
430
  }
380
- catch {
381
- // 翻译服务异常不能阻断外部 Agent 主任务;本轮直接发送原文。
382
- translatedPrompt = turnInput.translationPrompt;
431
+ catch (error) {
432
+ if (!(error instanceof SessionTranslationCancelled) && !requestSignal?.aborted)
433
+ throw error;
434
+ yield { type: 'finish', reason: { kind: 'stop' } };
435
+ return;
383
436
  }
384
437
  }
385
438
  const prompt = turnInput.translatePrompt
386
- ? [translatedPrompt, turnInput.untranslatedPrompt].filter((part) => part.trim() !== '').join('\n\n')
439
+ ? [translatedPrompt, translationLanguage === undefined ? turnInput.untranslatedPrompt : attachmentNotices(turnInput.attachments, translationLanguage)].filter((part) => part.trim() !== '').join('\n\n')
387
440
  : turnInput.prompt;
388
441
  // 权限状态必须与 DSH 会话当前生效值同源。驱动不能自行假设“完全权限”,
389
442
  // 也不能把缺省当成“已确认无限制”:解析失败时留空,由驱动沿用保守默认。
@@ -396,6 +449,7 @@ export function createCliAdaptersFeature(options = {}) {
396
449
  sessionId,
397
450
  messages: turnInput.messages,
398
451
  prompt,
452
+ ...(translationLanguage === undefined ? {} : { translationLanguage }),
399
453
  ...(turnInput.attachments.length === 0 ? {} : { attachments: turnInput.attachments }),
400
454
  ...(permission === undefined ? {} : { permission }),
401
455
  ...(turnOptions.plan === true ? { plan: true } : {}),
@@ -492,6 +546,8 @@ export function createCliAdaptersFeature(options = {}) {
492
546
  // DSH 先停用设置上下文再执行异步资源清理时,旧的写队列不能继续调用
493
547
  // configEditor,否则会出现 inactive context 并污染退出日志。
494
548
  sessionStore.dispose();
549
+ // Close native interaction cards before unloading their provider transports.
550
+ lifetime.abort();
495
551
  await registry.dispose();
496
552
  await sessionStore.flush();
497
553
  setAdapterRegistry(undefined);
@@ -546,12 +602,13 @@ function createExternalSessionStatusPublisher(events, registry, sessionStore) {
546
602
  * `messages`,会直接抛出只读属性异常。`agent/pre-step` 返回的新消息保留用户原文,并把
547
603
  * 译文写入 source 元数据;外部适配器再据此构造发给 Agent 的译文。
548
604
  */
549
- function registerDelegationAgentHooks(dshContext, registry, resources, publishExternalStatus, translation, nativeSessions) {
605
+ function registerDelegationAgentHooks(dshContext, registry, resources, publishExternalStatus, translation, translationRecovery, promptTranslation, nativeSessions) {
550
606
  if (dshContext === undefined || typeof dshContext.on !== 'function')
551
607
  return;
552
608
  const disposers = [];
553
609
  const register = (name, listener) => {
554
- const disposer = dshContext.on(name, listener, { global: true });
610
+ // Wrap existing pre-step producers so their after-next catalogs are visible.
611
+ const disposer = dshContext.on(name, listener, { global: true, prepend: name === 'agent/pre-step' });
555
612
  if (typeof disposer === 'function')
556
613
  disposers.push(disposer);
557
614
  };
@@ -608,20 +665,44 @@ function registerDelegationAgentHooks(dshContext, registry, resources, publishEx
608
665
  messages = [...delegation.value.messages];
609
666
  }
610
667
  }
611
- const translatedInput = await translatePreStepInput(translation, registry, sessionId, messages, dshContext, isAbortSignal(record?.signal) ? record.signal : undefined, nativePreStepContext(translation, registry, sessionId, nativeSessions));
668
+ let translatedInput;
669
+ try {
670
+ translatedInput = await translatePreStepInput(translation, translationRecovery, registry, sessionId, messages, dshContext, isAbortSignal(record?.signal) ? record.signal : undefined, nativePreStepContext(translation, registry, sessionId, nativeSessions));
671
+ }
672
+ catch (error) {
673
+ if (error instanceof SessionTranslationCancelled || record?.signal?.aborted === true)
674
+ return { kind: 'reject' };
675
+ throw error;
676
+ }
612
677
  if (translatedInput !== undefined)
613
678
  messages = [...translatedInput];
614
679
  const decision = await next();
615
680
  if (!isEnterPreStepDecision(decision))
616
681
  return decision;
617
- if (delegation?.kind !== 'rewritten' && translatedInput === undefined)
618
- return decision;
619
- // `next()` 可能已经追加系统上下文或模型切换通知,只替换它前面的本轮用户消息。
620
- const suffix = decision.messages.slice(messages.length);
621
- return {
622
- ...decision,
623
- messages: [...messages, ...suffix],
624
- };
682
+ // Match producer-owned messages by identity. Downstream middleware may insert
683
+ // instructions before the human message, so a positional prefix loses data.
684
+ const incoming = Array.isArray(record?.messages) ? record.messages.filter(isMessage) : [];
685
+ const replaced = new Set();
686
+ const accepted = delegation?.kind === 'rewritten' || translatedInput !== undefined
687
+ ? decision.messages.map(message => {
688
+ const index = incoming.findIndex((original, position) => !replaced.has(position) && (original === message || typeof original.id === 'string' && original.id === message.id
689
+ // Legacy callers can return detached messages without durable IDs.
690
+ || original.id === undefined && message.id === undefined && original.role === message.role
691
+ && original.source?.kind === message.source?.kind && original.source?.form === message.source?.form
692
+ && JSON.stringify(original.content) === JSON.stringify(message.content)));
693
+ if (index >= 0)
694
+ replaced.add(index);
695
+ return index < 0 ? message : messages[index] ?? message;
696
+ }) : decision.messages;
697
+ try {
698
+ const scope = sessionPromptScope(record?.agent, isAbortSignal(record?.signal) ? record.signal : undefined);
699
+ return { ...decision, messages: await promptTranslation.translateMessages(accepted, scope) };
700
+ }
701
+ catch (error) {
702
+ if (error instanceof SessionTranslationCancelled || record?.signal?.aborted === true)
703
+ return { kind: 'reject' };
704
+ throw error;
705
+ }
625
706
  });
626
707
  // 正常结束、异常结束和中断最终都会进入 idle;在此清理本轮授权,避免下一轮
627
708
  // 没有 carrier 时继承上一轮的目标白名单。
@@ -631,12 +712,14 @@ function registerDelegationAgentHooks(dshContext, registry, resources, publishEx
631
712
  if (record?.status === 'running')
632
713
  publishExternalStatus(sessionId, true);
633
714
  else if (record?.status === 'idle') {
715
+ translationRecovery.cancelSession(sessionId);
634
716
  publishExternalStatus(sessionId, false);
635
717
  clearDelegationAuthorization(sessionId);
636
718
  }
637
719
  });
638
720
  register('agent/disposed', (payload) => {
639
721
  const sessionId = readAgentSessionId(asRecord(payload)?.agent);
722
+ translationRecovery.cancelSession(sessionId);
640
723
  // disposed 只代表运行时释放;subagentCatalog 没有删除语义,保留目录项并
641
724
  // 把它标成 idle,后续若 DSH 重新激活会再次收到 running。
642
725
  publishExternalStatus(sessionId, false);
@@ -999,18 +1082,20 @@ async function setAdapterEnabled(settings, registry, value) {
999
1082
  return { adapterId, enabled };
1000
1083
  }
1001
1084
  /** 运行中的外部 Agent 插话也必须经过同一条输入翻译路径。 */
1002
- async function translateSteerPrompt(translation, registry, sessionId, prompt, followUp) {
1085
+ async function translateSteerPrompt(translationRecovery, registry, sessionId, prompt, followUp, signal) {
1003
1086
  const session = registry.getSession(sessionId);
1004
1087
  let translated = prompt;
1005
- if (translation !== undefined) {
1088
+ if (session.translationEnabled === true) {
1006
1089
  try {
1007
- translated = await translation.translateInput(session.adapterId, prompt, undefined, session.translationEnabled === true);
1090
+ translated = (await translationRecovery.translateInput(sessionId, session.adapterId, prompt, signal)).translated;
1008
1091
  }
1009
- catch {
1010
- // 插话翻译失败时仍把用户原文交给外部 Agent。
1011
- translated = prompt;
1092
+ catch (error) {
1093
+ if (error instanceof SessionTranslationCancelled)
1094
+ return;
1095
+ throw error;
1012
1096
  }
1013
1097
  }
1098
+ signal?.throwIfAborted();
1014
1099
  await registry.steer(sessionId, translated, followUp);
1015
1100
  }
1016
1101
  /**
@@ -1019,8 +1104,8 @@ async function translateSteerPrompt(translation, registry, sessionId, prompt, fo
1019
1104
  * DSH 随后会把返回的消息写入 `user/message`。正文只放实际发送的译文;原文和模型
1020
1105
  * 记录在 source 元数据中供 Client 详情按钮读取。外部 CLI 边界也会移除该元数据。
1021
1106
  */
1022
- async function translatePreStepInput(translation, registry, sessionId, messages, dshContext, signal, nativeSession) {
1023
- if (translation === undefined || !translation.enabled || sessionId.trim() === '')
1107
+ async function translatePreStepInput(translation, translationRecovery, registry, sessionId, messages, dshContext, signal, nativeSession) {
1108
+ if (translation === undefined || !translation.enabled || translation.inputEnabled === false || sessionId.trim() === '')
1024
1109
  return undefined;
1025
1110
  const messageIndex = findLatestHumanMessage(messages);
1026
1111
  const current = messageIndex < 0 ? undefined : messages[messageIndex];
@@ -1031,10 +1116,10 @@ async function translatePreStepInput(translation, registry, sessionId, messages,
1031
1116
  if (nativeSession.translationEnabled !== true)
1032
1117
  return undefined;
1033
1118
  const input = extractTurnInput(messages, dshContext);
1034
- if (input.translationPrompt.trim() === '')
1119
+ if (input.prompt.trim() === '')
1035
1120
  return undefined;
1036
- const result = await runInputTranslation(translation, nativeSession.adapterId, input.translationPrompt, signal);
1037
- const translated = [result.translated, input.untranslatedPrompt].filter((part) => part.trim() !== '').join('\n\n').trim();
1121
+ const result = await translationRecovery.translateInput(sessionId, nativeSession.adapterId, input.translationPrompt, signal);
1122
+ const translated = [result.translated, attachmentNotices(input.attachments, readInputTargetLanguage(translation))].filter((part) => part.trim() !== '').join('\n\n').trim();
1038
1123
  if (translated === '')
1039
1124
  return undefined;
1040
1125
  const record = {
@@ -1050,7 +1135,7 @@ async function translatePreStepInput(translation, registry, sessionId, messages,
1050
1135
  const next = [...messages];
1051
1136
  next[messageIndex] = {
1052
1137
  ...current,
1053
- content: [{ type: 'text', text: translated }],
1138
+ content: result.failed ? current.content : replaceInputTranslationContent(nativeTranslationContent(current.content, dshContext), translated),
1054
1139
  source: { ...(current.source ?? {}), kind: 'user', codingnsTranslationInput: record },
1055
1140
  };
1056
1141
  return next;
@@ -1065,10 +1150,10 @@ async function translatePreStepInput(translation, registry, sessionId, messages,
1065
1150
  if (session.adapterId === 'dsh' || session.translationEnabled !== true)
1066
1151
  return undefined;
1067
1152
  const input = extractTurnInput(messages, dshContext);
1068
- if (input.translationPrompt.trim() === '')
1153
+ if (input.prompt.trim() === '')
1069
1154
  return undefined;
1070
- const result = await runInputTranslation(translation, session.adapterId, input.translationPrompt, signal);
1071
- const translated = [result.translated, input.untranslatedPrompt]
1155
+ const result = await translationRecovery.translateInput(sessionId, session.adapterId, input.translationPrompt, signal);
1156
+ const translated = [result.translated, attachmentNotices(input.attachments, readInputTargetLanguage(translation))]
1072
1157
  .filter((part) => part.trim() !== '')
1073
1158
  .join('\n\n')
1074
1159
  .trim();
@@ -1095,26 +1180,6 @@ async function translatePreStepInput(translation, registry, sessionId, messages,
1095
1180
  };
1096
1181
  return next;
1097
1182
  }
1098
- /** 输入翻译统一入口:翻译只是增强能力,异常时回退原文并标记失败。 */
1099
- async function runInputTranslation(translation, adapterId, text, signal) {
1100
- try {
1101
- if (translation.translateInputDetailed !== undefined) {
1102
- const detailed = await translation.translateInputDetailed(adapterId, text, signal, true);
1103
- return {
1104
- translated: detailed.translated,
1105
- ...(detailed.sourceLanguage === undefined ? {} : { sourceLanguage: detailed.sourceLanguage }),
1106
- ...(detailed.alreadyTargetLanguage === true ? { alreadyTargetLanguage: true } : {}),
1107
- ...(detailed.model === undefined ? {} : { model: detailed.model }),
1108
- ...(detailed.failed === true ? { failed: true } : {}),
1109
- ...readSessionTranslationMetrics(detailed),
1110
- };
1111
- }
1112
- return { translated: await translation.translateInput(adapterId, text, signal, true) };
1113
- }
1114
- catch {
1115
- return { translated: text, failed: true };
1116
- }
1117
- }
1118
1183
  /** 旧测试替身没有 inputLanguage 时沿用历史默认值英语。 */
1119
1184
  function readInputTargetLanguage(translation) {
1120
1185
  const language = translation.inputLanguage;
@@ -1177,7 +1242,10 @@ async function* translateNativeStream(stream, translation, bilingual, signal) {
1177
1242
  const existing = blocks.get(index);
1178
1243
  if (existing !== undefined)
1179
1244
  return existing.kind === kind && !existing.closed ? existing : undefined;
1180
- const created = { index, kind, text: '', closed: false };
1245
+ const created = {
1246
+ index, kind, text: '', closed: false,
1247
+ translate: translation.shouldTranslate(DSH_NATIVE_SESSION_ADAPTER_ID, kind === 'reasoning' ? 'reasoning' : 'assistant', true),
1248
+ };
1181
1249
  blocks.set(index, created);
1182
1250
  return created;
1183
1251
  };
@@ -1210,7 +1278,7 @@ async function* translateNativeStream(stream, translation, bilingual, signal) {
1210
1278
  if (record === undefined)
1211
1279
  return [];
1212
1280
  const visible = formatSessionTranslationOutput(record);
1213
- if (visible.trim() === '' || visible === original)
1281
+ if (visible.trim() === '' || visible === original && record.failed !== true)
1214
1282
  return [];
1215
1283
  return [
1216
1284
  // Keep the provider text in the native history. The client chooses the translated
@@ -1231,7 +1299,9 @@ async function* translateNativeStream(stream, translation, bilingual, signal) {
1231
1299
  }
1232
1300
  const kind = type === 'text-delta' ? 'text' : 'reasoning';
1233
1301
  const block = bufferOf(index, kind);
1234
- if (block === undefined) {
1302
+ // Decide once per block: changing settings must not translate only a suffix
1303
+ // or drop a prefix that was already buffered.
1304
+ if (block === undefined || !block.translate) {
1235
1305
  yield chunk;
1236
1306
  continue;
1237
1307
  }
@@ -1248,6 +1318,7 @@ async function* translateNativeStream(stream, translation, bilingual, signal) {
1248
1318
  yield item;
1249
1319
  if (emitted.length > 0)
1250
1320
  continue;
1321
+ yield { type: `${block.kind}-delta`, index: block.index, text: block.text };
1251
1322
  }
1252
1323
  }
1253
1324
  yield chunk;
@@ -1338,7 +1409,7 @@ function readInputTranslation(value) {
1338
1409
  return undefined;
1339
1410
  if (candidate.original.trim() === '' || candidate.translated.trim() === '')
1340
1411
  return undefined;
1341
- const targetLanguage = candidate.targetLanguage === 'fr' || candidate.targetLanguage === 'de' || candidate.targetLanguage === 'ja'
1412
+ const targetLanguage = candidate.targetLanguage === 'fr' || candidate.targetLanguage === 'de' || candidate.targetLanguage === 'ja' || candidate.targetLanguage === 'zh'
1342
1413
  ? candidate.targetLanguage
1343
1414
  : 'en';
1344
1415
  const sourceLanguage = candidate.sourceLanguage === 'zh' || candidate.sourceLanguage === 'en' || candidate.sourceLanguage === 'fr' || candidate.sourceLanguage === 'de' || candidate.sourceLanguage === 'ja'
@@ -1388,6 +1459,19 @@ function replaceInputTranslationContent(content, text) {
1388
1459
  });
1389
1460
  return replaced ? blocks : [{ type: 'text', text }, ...content];
1390
1461
  }
1462
+ /** Resolved files already have localized path notices. Leaving their file blocks
1463
+ * would make DSH append another, English-only file notice at adapter dispatch.
1464
+ * Preserve images and unresolved files so DSH retains modality/error handling.
1465
+ */
1466
+ function nativeTranslationContent(content, dshContext) {
1467
+ if (!Array.isArray(content))
1468
+ return content;
1469
+ return content.filter(part => {
1470
+ if (!isRecord(part) || part.type !== 'file')
1471
+ return true;
1472
+ return resolveDshAttachmentPath(dshContext, 'file', isRecord(part.attachment) ? part.attachment : part) === undefined;
1473
+ });
1474
+ }
1391
1475
  /** DSH 为工具分段注入的继续提示必须成为下一次 Provider 请求的 prompt。 */
1392
1476
  function isInjectedStepNotice(message) {
1393
1477
  if (message.role !== 'user' || !isRecord(message.source))
@@ -1443,11 +1527,13 @@ function extractMessageInput(content, dshContext) {
1443
1527
  const mimeType = typeof reference.mediaType === 'string' && reference.mediaType.trim() !== '' ? reference.mediaType.trim() : undefined;
1444
1528
  attachments.push({ kind, path, ...(name === undefined ? {} : { name }), ...(mimeType === undefined ? {} : { mimeType }) });
1445
1529
  }
1446
- const fileNotes = attachments.filter((attachment) => attachment.kind === 'file').map((attachment) => `附件文件${attachment.name === undefined ? '' : `「${attachment.name}」`}位于:${attachment.path}\n请使用工具读取该文件的内容。`);
1447
1530
  const translationPrompt = text.join('\n\n').trim();
1448
- const untranslatedPrompt = fileNotes.join('\n\n').trim();
1531
+ const untranslatedPrompt = attachmentNotices(attachments);
1449
1532
  return { prompt: [translationPrompt, untranslatedPrompt].filter(value => value !== '').join('\n\n'), translationPrompt, untranslatedPrompt, attachments };
1450
1533
  }
1534
+ function attachmentNotices(attachments, language) {
1535
+ return attachments.filter(attachment => attachment.kind === 'file').map(attachment => attachmentFileNotice(attachment, language)).join('\n\n');
1536
+ }
1451
1537
  function resolveDshAttachmentPath(dshContext, kind, reference) {
1452
1538
  if (dshContext === undefined || typeof reference.attachmentId !== 'string')
1453
1539
  return undefined;