@deepseek-ai/dsh-client-ui-conversation 0.2.1-alpha.1 → 0.2.1-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -18,8 +18,8 @@
18
18
  en: 1d2a3a7f98c2cc9b
19
19
  zh: f895dd5e9f91e0a9
20
20
  /deepseek-ai-dsh-client-ui-conversation/shell-and-standard-props:
21
- en: 8fddd7e838da57d8
22
- zh: 98748142be2e61d4
21
+ en: 50b5e00a5fb7c2e5
22
+ zh: 91333db3947f395d
23
23
  /deepseek-ai-dsh-client-ui-conversation/temporary-composer-entries:
24
24
  en: bb1244310f5c0382
25
25
  zh: 824b84077432b559
package/README.md CHANGED
@@ -88,11 +88,11 @@ Plain Enter uses the configured delivery mode, exactly Ctrl+Enter or Cmd+Enter u
88
88
 
89
89
  Each composer attempt carries its original occurrence time, gesture, delivery intent, and Session model/run-state snapshot through asynchronous command arbitration. The ordinary-message notification fires once before reference serialization, including attachment-only submissions; handled or claimed commands do not notify. Snapshot and notification failures cannot block sending.
90
90
 
91
- Default sends commit optimistically: Enter clears the draft, occurrence table, and undo history in the same transaction, keeps the composer in `plain`, and runs the send as a detached attempt, so typing and further sends continue during the flight. `sendSession` registers a Session submission echo (`session.beginSubmission`) with the delivery mode before serializing, preserving selected image and file order in `pendingSubmissions`; Session derives the placement from that mode and its current running state, so idle sends use the transcript, busy Queue sends use QueueDock, and busy Steer sends use the pending-steering surface. It then yields one paint, encodes images through the browser's native `FileReader` data-URL path, and cites staged file receipts. Command submissions use the same receipts for generic files, so sending `/goal` or `/plan` never reads those browser files again. The prompt reuses the submission `requestId`; Session retires the echo once at its display handoff, correlated by that `rpcId`. Concurrent failures are restored together in submission order until the user edits the restored content; command submissions keep the frozen `submitting` phase. Detached attempts retain their attachment ids through admission and Session scope disposal. An observed retirement immediately exposes each image preview through the durable cache, replaces it with the canonical URL after fetching the admitted attachment, revokes each URL after its use ends, and releases file cards. Selected generic files enter one FIFO background-upload queue; `maxConcurrentFileUploads` defaults to two active Worker transports, the Conversation service retains queued and active operations plus byte progress across Session navigation, and removing a draft skips its queued transfer or aborts its active transport. Where the browser shell exposes `__DSH_HOST_PATHS__` (the Desktop application), dropped or pasted folders and dropped, picked, or pasted non-image files with a real path become `@path` chips; images keep uploading. Drag-and-drop and paste identify directories through the browser entry API; when that API is absent or returns no entry, pasted items retain ordinary file handling. The file picker cannot select directories. References require the `ui-reference` plugin and the original paths to remain readable by the model's file tools. Paths inside the workspace are relative; others remain absolute. The whole batch is validated before insertion, retains source order and selected text, and uses whitespace-separated, closed-quote mentions. A browser without the bridge refuses dropped or pasted folders; a Desktop folder without a reported path is rejected separately. Continuable subagents disable attachment intake and skip local echoes because their transport does not preserve the browser request id.
91
+ Default sends commit optimistically: Enter clears the draft, occurrence table, and undo history in the same transaction, keeps the composer in `plain`, and runs the send as a detached attempt, so typing and further sends continue during the flight. `sendSession` registers a Session submission echo (`session.beginSubmission`) with the delivery mode before serializing, preserving selected image and file order in `pendingSubmissions`; Session derives the placement from that mode and its current running state, so idle sends use the transcript, busy Queue sends use QueueDock, and busy Steer sends use the pending-steering surface. It then yields one paint, encodes images through the browser's native `FileReader` data-URL path, and cites staged file receipts. Command submissions use the same receipts for generic files, so sending `/goal` or `/plan` never reads those browser files again. The prompt reuses the submission `requestId`; Session retires the echo once at its display handoff, correlated by that `rpcId`. Concurrent failures are restored together in submission order until the user edits the restored content; command submissions keep the frozen `submitting` phase. Detached attempts retain their attachment ids through admission and Session scope disposal. An observed retirement immediately exposes each image preview through the durable cache, replaces it with the canonical URL after fetching the admitted attachment, revokes each URL after its use ends, and releases file cards. Selected generic files enter one FIFO background-upload queue; `maxConcurrentFileUploads` defaults to two active Worker transports, the Conversation service retains queued and active operations plus byte progress across Session navigation, and removing a draft skips its queued transfer or aborts its active transport. Where the browser shell exposes `__DSH_HOST_PATHS__` (the Desktop application), dropped or pasted folders and dropped, picked, or pasted non-image files with a real path become `@path` chips; images keep uploading. Drag-and-drop and paste identify directories through the browser entry API; when that API is absent or returns no entry, pasted items retain ordinary file handling. The file picker cannot select directories. References require the `ui-reference` plugin and the original paths to remain readable by the model's file tools. Paths inside the workspace are relative; others remain absolute. The whole batch is validated before insertion, retains source order and selected text, and uses whitespace-separated, closed-quote mentions. A browser without the bridge refuses dropped or pasted folders; a Desktop folder without a reported path is rejected separately. Continuable subagents accept pasted and dropped PNG, JPEG, WebP, and GIF images with the same projected limits; a batch containing a generic file, unsupported image format, or directory is refused before intake. They skip local echoes because their transport does not preserve the browser request id.
92
92
 
93
93
  Queued submission echoes show “Sending…” beside disabled edit, remove, and steer buttons; a collapsed dock keeps the sending status in its header. A matching Host queue row replaces the echo and enables each action according to its normal text-content and running-state requirements. Prompt acknowledgement alone does not enable queue actions. A failed submission removes its echo and displays an error; the composer restores the failed draft when it is empty or still contains the previous automatic restoration, preserving subsequently typed text.
94
94
 
95
- Disabled Send and Stop buttons suppress their tooltips, including a Stop button that becomes a disabled Send button when the turn ends. While a normal composer is running, its primary pointer action remains Stop when the draft is empty or input is unavailable. Actionable text or attachments switch the same seat to Send; clearing or successfully submitting the draft restores Stop. The busy-Enter setting selects the Queue or Steer delivery for ordinary Sessions and continuable children, and the running Send button delivers through the same mode plain Enter resolves to; while it is enabled (no upload pending) over a plain message draft its label names that mode (Queue message or Steer message), so the setting governs Enter and the button together while Cmd/Ctrl+Enter still uses the other mode, and idle sessions, empty drafts, and `/` command lines keep the plain Send label. Their QueueDock rows share Edit, Remove, and Steer, and an empty draft shares the steer-all chord. One-shot children remain read-only. Plan mode and active goals do not change attachment intake. Continuable children keep separate Send and Stop actions but expose no File row, paste, or drop intake; if their parent is offline, Send and the composer gestures lock while QueueDock controls for the live inbox remain available ([decisions](../../../.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.md), [inbox controls](../../subagent/subagent/README.md)).
95
+ Disabled Send and Stop buttons suppress their tooltips, including a Stop button that becomes a disabled Send button when the turn ends. While a normal composer is running, its primary pointer action remains Stop when the draft is empty or input is unavailable. Actionable text or attachments switch the same seat to Send; clearing or successfully submitting the draft restores Stop. The busy-Enter setting selects the Queue or Steer delivery for ordinary Sessions and continuable children, and the running Send button delivers through the same mode plain Enter resolves to; while it is enabled (no upload pending) over a plain message draft its label names that mode (Queue message or Steer message), so the setting governs Enter and the button together while Cmd/Ctrl+Enter still uses the other mode, and idle sessions, empty drafts, and `/` command lines keep the plain Send label. Their QueueDock rows share Edit, Remove, and Steer, and an empty draft shares the steer-all chord. One-shot children remain read-only. Plan mode and active goals do not change attachment intake. Continuable children keep separate Send and Stop actions and accept pasted or dropped images, but expose no File row; if their parent is offline, Send and the composer gestures lock while QueueDock controls for the live inbox remain available ([decisions](../../../.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.md), [inbox controls](../../subagent/subagent/README.md)).
96
96
 
97
97
  File chips and editable skill references share a whole-reference hover background and follow the composer's line height and text baseline. The first click delegates preview opening to the registered reference source immediately, including the first click of a double-click sequence. Subsequent clicks retain native text selection; an existing noncollapsed selection suppresses pointer preview activation. Previewing does not change the draft, its clipboard projection, or submission.
98
98
 
package/README.zh.md CHANGED
@@ -88,11 +88,11 @@ Session 首次绑定或缓存的 Session 成为 current 时,shell 会在渲染
88
88
 
89
89
  每次输入框提交都携带原始发生时间、操作来源、投递意图以及会话模型和运行状态快照,贯穿异步命令裁决。普通消息通知在引用序列化前发出一次,纯附件提交也遵循这一规则;已处理或认领的命令不发出通知。快照读取与通知消费异常不能阻断发送。
90
90
 
91
- 默认发送采用乐观提交:Enter 在同一事务里清空草稿、occurrence 表和撤销历史,composer 保持 `plain`,发送作为 detached attempt 运行,发送期间可以继续输入和提交。`sendSession` 在序列化之前用投递模式注册 Session 提交回显(`session.beginSubmission`),并在 `pendingSubmissions` 中保留图片与文件的选择顺序;Session 根据该模式与当前运行状态推导位置,因此空闲发送进入 transcript(文本记录),繁忙时 Queue 进入 QueueDock,繁忙时 Steer 进入 pending-steering 区域。随后让出一帧,图片经浏览器原生 `FileReader` data-URL 路径编码,文件则引用已暂存凭证。命令提交也用同一凭证表示通用文件,因此发送 `/goal` 或 `/plan` 时不会再次读取这些浏览器文件。提示词复用提交 `requestId`;Session 按同一 `rpcId` 关联展示接管,并仅退休回显一次。多个并发发送失败时,在用户编辑还原内容之前按提交顺序合并还原;命令提交保持冻结的 `submitting` 阶段。Detached attempt 持有附件 id,直到 admission 完成或 Session scope 销毁。回显以 observed 退休时,durable 图片缓存立即公开每个预览 URL,读取 admitted 附件后用规范化 URL 替换预览,并在各 URL 停止使用后撤销,同时释放文件卡。选中的通用文件进入同一个先进先出的后台上传队列;`maxConcurrentFileUploads` 默认允许两个 Worker transport 同时运行,Conversation 服务在切换 Session 时继续持有排队和运行中的传输操作及字节进度,移除草稿会跳过排队中的传输或中止正在运行的传输。浏览器 shell 暴露 `__DSH_HOST_PATHS__` 时(桌面应用),拖入或粘贴的文件夹以及拖入、选择或粘贴的带真实路径的非图片文件会成为 `@路径` chip;图片仍然上传。拖放和粘贴通过浏览器 entry API 识别目录;该 API 不可用或没有返回 entry 时,粘贴项沿用普通文件处理。文件选择器不能选择目录。引用需要启用 `ui-reference` 插件,原路径也必须仍可由模型的文件工具读取。工作区内的路径使用相对形式,其他路径保留绝对形式。整批文件先校验再插入,保留来源顺序和已选中的文字,引用之间有空白分隔,含空格的路径使用闭合引号。没有该桥的浏览器会拒绝拖入或粘贴的文件夹,桌面端无法获取文件夹路径时单独报错。continuable 子代理禁用附件入口,也不创建本地回显,因为其 transport 不保留浏览器 request id。
91
+ 默认发送采用乐观提交:Enter 在同一事务里清空草稿、occurrence 表和撤销历史,composer 保持 `plain`,发送作为 detached attempt 运行,发送期间可以继续输入和提交。`sendSession` 在序列化之前用投递模式注册 Session 提交回显(`session.beginSubmission`),并在 `pendingSubmissions` 中保留图片与文件的选择顺序;Session 根据该模式与当前运行状态推导位置,因此空闲发送进入 transcript(文本记录),繁忙时 Queue 进入 QueueDock,繁忙时 Steer 进入 pending-steering 区域。随后让出一帧,图片经浏览器原生 `FileReader` data-URL 路径编码,文件则引用已暂存凭证。命令提交也用同一凭证表示通用文件,因此发送 `/goal` 或 `/plan` 时不会再次读取这些浏览器文件。提示词复用提交 `requestId`;Session 按同一 `rpcId` 关联展示接管,并仅退休回显一次。多个并发发送失败时,在用户编辑还原内容之前按提交顺序合并还原;命令提交保持冻结的 `submitting` 阶段。Detached attempt 持有附件 id,直到 admission 完成或 Session scope 销毁。回显以 observed 退休时,durable 图片缓存立即公开每个预览 URL,读取 admitted 附件后用规范化 URL 替换预览,并在各 URL 停止使用后撤销,同时释放文件卡。选中的通用文件进入同一个先进先出的后台上传队列;`maxConcurrentFileUploads` 默认允许两个 Worker transport 同时运行,Conversation 服务在切换 Session 时继续持有排队和运行中的传输操作及字节进度,移除草稿会跳过排队中的传输或中止正在运行的传输。浏览器 shell 暴露 `__DSH_HOST_PATHS__` 时(桌面应用),拖入或粘贴的文件夹以及拖入、选择或粘贴的带真实路径的非图片文件会成为 `@路径` chip;图片仍然上传。拖放和粘贴通过浏览器 entry API 识别目录;该 API 不可用或没有返回 entry 时,粘贴项沿用普通文件处理。文件选择器不能选择目录。引用需要启用 `ui-reference` 插件,原路径也必须仍可由模型的文件工具读取。工作区内的路径使用相对形式,其他路径保留绝对形式。整批文件先校验再插入,保留来源顺序和已选中的文字,引用之间有空白分隔,含空格的路径使用闭合引号。没有该桥的浏览器会拒绝拖入或粘贴的文件夹,桌面端无法获取文件夹路径时单独报错。continuable 子代理允许粘贴和拖入 PNG、JPEG、WebP、GIF 图片,并沿用相同的投影限制;包含通用文件、不支持的图片格式或目录的批次会在进入草稿前整批拒绝。它们不创建本地回显,因为其 transport 不保留浏览器 request id。
92
92
 
93
93
  排队提交的本地回显在禁用的编辑、删除、插话按钮旁显示“发送中…”;折叠后的队列在标题栏保留发送状态。匹配的 Host 队列行替换回显后,各操作按原有的纯文本内容和运行状态要求启用。仅收到提示词确认不会启用队列操作。提交失败会移除回显并显示错误;输入框为空或仍保留上一次自动恢复的内容时,composer 恢复失败草稿,保留用户随后输入的文字。
94
94
 
95
- Send 和 Stop 按钮禁用时不显示提示气泡,轮次结束后由 Stop 切换成禁用 Send 的按钮也遵循此规则。普通 composer 运行时,如果草稿为空或输入不可用,主指针操作保持为 Stop。可提交的文字或附件会把同一位置切换为 Send;清空或成功提交草稿后恢复 Stop。繁忙态 Enter 设置为普通 Session 与可继续 child 选择 Queue 或 Steer 投递,运行中的 Send 按钮按 plain Enter 解析出的同一模式投递;当它在普通消息草稿上可用(没有待上传文件)时,其标签以该模式命名(排队发送或插话发送),因此该设置同时约束 Enter 与按钮,而 Cmd/Ctrl+Enter 仍使用另一模式;空闲会话、空草稿与 `/` 命令行保留普通的 Send 标签。它们的 QueueDock 行共享 Edit、Remove 与 Steer,空草稿也共享 steer-all 组合键。One-shot child 继续只读。Plan Mode 与 active goal 不改变附件入口。可继续 child 保留独立的 Send 与 Stop 操作,但不提供「文件」菜单项、粘贴或拖放入口;parent 离线时,Send 与 composer 手势锁定,但在线 inbox 的 QueueDock 控制仍可使用([决策](../../../.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.md)、[inbox 控制](../../subagent/subagent/README.zh.md))。
95
+ Send 和 Stop 按钮禁用时不显示提示气泡,轮次结束后由 Stop 切换成禁用 Send 的按钮也遵循此规则。普通 composer 运行时,如果草稿为空或输入不可用,主指针操作保持为 Stop。可提交的文字或附件会把同一位置切换为 Send;清空或成功提交草稿后恢复 Stop。繁忙态 Enter 设置为普通 Session 与可继续 child 选择 Queue 或 Steer 投递,运行中的 Send 按钮按 plain Enter 解析出的同一模式投递;当它在普通消息草稿上可用(没有待上传文件)时,其标签以该模式命名(排队发送或插话发送),因此该设置同时约束 Enter 与按钮,而 Cmd/Ctrl+Enter 仍使用另一模式;空闲会话、空草稿与 `/` 命令行保留普通的 Send 标签。它们的 QueueDock 行共享 Edit、Remove 与 Steer,空草稿也共享 steer-all 组合键。One-shot child 继续只读。Plan Mode 与 active goal 不改变附件入口。可继续 child 保留独立的 Send 与 Stop 操作,允许粘贴或拖入图片,但不提供「文件」菜单项;parent 离线时,Send 与 composer 手势锁定,但在线 inbox 的 QueueDock 控制仍可使用([决策](../../../.agents/notes/archived/bug-fix/2026-08-20-running-draft-primary-send.md)、[inbox 控制](../../subagent/subagent/README.zh.md))。
96
96
 
97
97
  文件标签和可编辑的 skill 引用共用覆盖整个引用的悬停背景,并跟随输入框的行高与文字基线。首次点击立即由已注册的引用来源负责打开预览,包括双击序列的第一次点击。后续点击保留原生文本选择行为;已有非折叠选区时,指针点击不打开预览。预览不改变草稿、剪贴板文本或提交内容。
98
98
 
package/lib/client.js CHANGED
@@ -17642,8 +17642,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
17642
17642
  return;
17643
17643
  }
17644
17644
  if (text.length > token.length) {
17645
- const [tokenNode] = node.splitText(token.length);
17645
+ const [tokenNode, overflow] = node.splitText(token.length);
17646
17646
  if (tokenNode !== void 0 && tokenNode.getStyle() !== TOKEN_STYLE) tokenNode.setStyle(TOKEN_STYLE);
17647
+ overflow?.setStyle("");
17647
17648
  return;
17648
17649
  }
17649
17650
  if (node.getStyle() !== TOKEN_STYLE) node.setStyle(TOKEN_STYLE);
@@ -19632,6 +19633,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
19632
19633
  "row.preparing": "正在准备调用",
19633
19634
  "row.failed": "失败",
19634
19635
  "row.stopped": "已停止",
19636
+ "row.commandArguments": "命令参数",
19635
19637
  "row.input": "输入",
19636
19638
  "row.output": "输出",
19637
19639
  "row.inspect": "查看",
@@ -19693,6 +19695,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
19693
19695
  "terminal.signal": "信号 {signal}",
19694
19696
  "terminal.exitCode": "退出码 {code}",
19695
19697
  "terminal.noExitCode": "未正常退出",
19698
+ "terminal.commandLine": "命令第 {n} 行",
19696
19699
  "terminal.running": "运行中",
19697
19700
  "terminal.failed": "失败",
19698
19701
  "terminal.done": "已完成",
@@ -20004,6 +20007,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
20004
20007
  "row.preparing": "Preparing tool call",
20005
20008
  "row.failed": "Failed",
20006
20009
  "row.stopped": "Stopped",
20010
+ "row.commandArguments": "Command arguments",
20007
20011
  "row.input": "IN",
20008
20012
  "row.output": "OUT",
20009
20013
  "row.inspect": "Inspect",
@@ -20065,6 +20069,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
20065
20069
  "terminal.signal": "signal {signal}",
20066
20070
  "terminal.exitCode": "exit code {code}",
20067
20071
  "terminal.noExitCode": "no exit code",
20072
+ "terminal.commandLine": "Command line {n}",
20068
20073
  "terminal.running": "Running",
20069
20074
  "terminal.failed": "Failed",
20070
20075
  "terminal.done": "Done",
@@ -21627,7 +21632,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
21627
21632
  */
21628
21633
  function installDraftFilePicker(keyboard, gate, fileInputRef) {
21629
21634
  return keyboard.bindFilePicker({
21630
- available: () => gate.current.canAcceptDrop && fileInputRef.current !== null,
21635
+ available: () => gate.current.canAcceptDrop && fileInputRef.current !== null && !fileInputRef.current.disabled,
21631
21636
  open: () => {
21632
21637
  fileInputRef.current?.click();
21633
21638
  }
@@ -22147,8 +22152,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22147
22152
  return installDraftWheel(scrollRef);
22148
22153
  }, []);
22149
22154
  const intakeFiles = (0, react.useCallback)((files, directories) => {
22150
- if (subagent !== null || addFiles === void 0 || files.length === 0) return;
22155
+ if (locked || machineBusy || subagent !== null && !continuable || addFiles === void 0 || files.length === 0) return;
22151
22156
  const rejected = (() => {
22157
+ if (continuable && files.some((file) => directories?.has(file) || !isImageMediaType(file.type))) return t("image.unsupportedType");
22152
22158
  if (imageLimits !== void 0) {
22153
22159
  const mediaTypes = imageLimits.mediaTypes;
22154
22160
  const images = files.filter((file) => mediaTypes.includes(file.type));
@@ -22161,14 +22167,17 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
22161
22167
  })();
22162
22168
  if (rejected !== null) showToast(rejected);
22163
22169
  }, [
22170
+ locked,
22171
+ machineBusy,
22164
22172
  subagent,
22173
+ continuable,
22165
22174
  addFiles,
22166
22175
  attachments,
22167
22176
  imageLimits,
22168
22177
  showToast,
22169
22178
  t
22170
22179
  ]);
22171
- const canAcceptDrop = subagent === null && !locked && !machineBusy && addFiles !== void 0;
22180
+ const canAcceptDrop = (subagent === null || continuable) && !locked && !machineBusy && addFiles !== void 0;
22172
22181
  const fileInputRef = (0, react.useRef)(null);
22173
22182
  const onPickFiles = (e) => {
22174
22183
  const picked = e.target.files === null ? [] : [...e.target.files];
@@ -83,8 +83,9 @@ interface RequestViewBase {
83
83
  startedAt: number;
84
84
  completedAt: number | null;
85
85
  status: 'running' | 'complete' | 'error';
86
+ /** Failure detail; with assistant retry metadata, the last failed attempt even while running or after recovery. */
86
87
  error?: string;
87
- /** Stable provider code for localized presentation of known failures. */
88
+ /** Stable provider code for `error`, including retained attempt failures, for localized presentation. */
88
89
  errorCode?: string;
89
90
  providerMetadata?: AssistantProviderMetadataView;
90
91
  requestConfig?: AssistantRequestConfig;
@@ -302,6 +302,7 @@ export declare const zh: {
302
302
  'row.preparing': string;
303
303
  'row.failed': string;
304
304
  'row.stopped': string;
305
+ 'row.commandArguments': string;
305
306
  'row.input': string;
306
307
  'row.output': string;
307
308
  'row.inspect': string;
@@ -363,6 +364,7 @@ export declare const zh: {
363
364
  'terminal.signal': string;
364
365
  'terminal.exitCode': string;
365
366
  'terminal.noExitCode': string;
367
+ 'terminal.commandLine': string;
366
368
  'terminal.running': string;
367
369
  'terminal.failed': string;
368
370
  'terminal.done': string;
@@ -676,6 +678,7 @@ export declare const en: {
676
678
  'row.preparing': string;
677
679
  'row.failed': string;
678
680
  'row.stopped': string;
681
+ 'row.commandArguments': string;
679
682
  'row.input': string;
680
683
  'row.output': string;
681
684
  'row.inspect': string;
@@ -737,6 +740,7 @@ export declare const en: {
737
740
  'terminal.signal': string;
738
741
  'terminal.exitCode': string;
739
742
  'terminal.noExitCode': string;
743
+ 'terminal.commandLine': string;
740
744
  'terminal.running': string;
741
745
  'terminal.failed': string;
742
746
  'terminal.done': string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-client-ui-conversation",
3
3
  "description": "Target-neutral Conversation assembly, shell, composer, queue, and view navigation",
4
- "version": "0.2.1-alpha.1",
4
+ "version": "0.2.1-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -48,6 +48,36 @@
48
48
  "@deepseek-ai/cordis": "~4.0.5-alpha.1"
49
49
  },
50
50
  "devDependencies": {
51
+ "@deepseek-ai/cordis": "~4.0.5-alpha.1",
52
+ "@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.2",
53
+ "@deepseek-ai/dsh-api-session-controller": "0.2.1-alpha.2",
54
+ "@deepseek-ai/dsh-api-workspace-controller": "0.2.1-alpha.2",
55
+ "@deepseek-ai/dsh-attachment": "0.2.1-alpha.2",
56
+ "@deepseek-ai/dsh-brand": "0.2.1-alpha.2",
57
+ "@deepseek-ai/dsh-client-locale": "0.2.1-alpha.2",
58
+ "@deepseek-ai/dsh-client-file-upload": "0.2.1-alpha.2",
59
+ "@deepseek-ai/dsh-client-store": "0.2.1-alpha.2",
60
+ "@deepseek-ai/dsh-client-test-runtime": "0.2.1-alpha.2",
61
+ "@deepseek-ai/dsh-client-ui-layout": "0.2.1-alpha.2",
62
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-alpha.2",
63
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.2",
64
+ "@deepseek-ai/dsh-client-ui-session": "0.2.1-alpha.2",
65
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.1-alpha.2",
66
+ "@deepseek-ai/dsh-client-ui-workspace": "0.2.1-alpha.2",
67
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.2",
68
+ "@deepseek-ai/dsh-commands": "0.2.1-alpha.2",
69
+ "@deepseek-ai/dsh-goal": "0.2.1-alpha.2",
70
+ "@deepseek-ai/dsh-llm": "0.2.1-alpha.2",
71
+ "@deepseek-ai/dsh-llm-retry": "0.2.1-alpha.2",
72
+ "@deepseek-ai/dsh-plan-mode": "0.2.1-alpha.2",
73
+ "@deepseek-ai/dsh-session": "0.2.1-alpha.2",
74
+ "@deepseek-ai/dsh-util-values": "0.2.1-alpha.2",
75
+ "@deepseek-ai/dsh-token-meter": "0.2.1-alpha.2",
76
+ "@deepseek-ai/dsh-tool-todo": "0.2.1-alpha.2",
77
+ "@deepseek-ai/dsh-util-crypto": "0.2.1-alpha.2",
78
+ "@deepseek-ai/dsh-workspace": "0.2.1-alpha.2",
79
+ "@deepseek-ai/dsh-file-reference": "0.2.1-alpha.2",
80
+ "@deepseek-ai/dsh-util-workspace-path": "0.2.1-alpha.2",
51
81
  "@types/react": "~18.3.1",
52
82
  "react": "^18.2.0",
53
83
  "@lexical/headless": "^0.49.0",
@@ -60,40 +90,10 @@
60
90
  "@lexical/text": "^0.49.0",
61
91
  "@lexical/plain-text": "^0.49.0",
62
92
  "@lexical/history": "^0.49.0",
63
- "@deepseek-ai/dsh-api-session-controller": "0.2.1-alpha.1",
64
- "@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.1",
65
- "@deepseek-ai/cordis": "~4.0.5-alpha.1",
66
- "@deepseek-ai/dsh-api-workspace-controller": "0.2.1-alpha.1",
67
- "@deepseek-ai/dsh-attachment": "0.2.1-alpha.1",
68
- "@deepseek-ai/dsh-brand": "0.2.1-alpha.1",
69
- "@deepseek-ai/dsh-client-file-upload": "0.2.1-alpha.1",
70
- "@deepseek-ai/dsh-client-store": "0.2.1-alpha.1",
71
- "@deepseek-ai/dsh-client-test-runtime": "0.2.1-alpha.1",
72
- "@deepseek-ai/dsh-client-ui-layout": "0.2.1-alpha.1",
73
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-alpha.1",
74
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.1",
75
- "@deepseek-ai/dsh-client-locale": "0.2.1-alpha.1",
76
- "@deepseek-ai/dsh-client-ui-settings": "0.2.1-alpha.1",
77
- "@deepseek-ai/dsh-client-ui-workspace": "0.2.1-alpha.1",
78
- "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.1",
79
- "@deepseek-ai/dsh-commands": "0.2.1-alpha.1",
80
- "@deepseek-ai/dsh-goal": "0.2.1-alpha.1",
81
- "@deepseek-ai/dsh-llm": "0.2.1-alpha.1",
82
- "@deepseek-ai/dsh-client-ui-session": "0.2.1-alpha.1",
83
- "@deepseek-ai/dsh-plan-mode": "0.2.1-alpha.1",
84
- "@deepseek-ai/dsh-session": "0.2.1-alpha.1",
85
- "@deepseek-ai/dsh-util-values": "0.2.1-alpha.1",
86
- "@deepseek-ai/dsh-token-meter": "0.2.1-alpha.1",
87
- "@deepseek-ai/dsh-tool-todo": "0.2.1-alpha.1",
88
- "@deepseek-ai/dsh-util-crypto": "0.2.1-alpha.1",
89
- "@deepseek-ai/dsh-workspace": "0.2.1-alpha.1",
90
- "@deepseek-ai/dsh-file-reference": "0.2.1-alpha.1",
91
- "@deepseek-ai/dsh-util-workspace-path": "0.2.1-alpha.1",
92
- "@deepseek-ai/dsh-llm-retry": "0.2.1-alpha.1",
93
- "@deepseek-ai/dsh-settings": "0.2.1-alpha.1",
94
- "@deepseek-ai/dsh-client-shortcuts": "0.2.1-alpha.1",
95
- "@deepseek-ai/dsh-client-product-analytics": "0.2.1-alpha.1",
96
- "@deepseek-ai/dsh-agent": "0.2.1-alpha.1"
93
+ "@deepseek-ai/dsh-agent": "0.2.1-alpha.2",
94
+ "@deepseek-ai/dsh-settings": "0.2.1-alpha.2",
95
+ "@deepseek-ai/dsh-client-shortcuts": "0.2.1-alpha.2",
96
+ "@deepseek-ai/dsh-client-product-analytics": "0.2.1-alpha.2"
97
97
  },
98
98
  "files": [
99
99
  "lib/index.js",