@deepseek-ai/dsh-client-ui-chat 0.1.7-rc.1 → 0.1.7-rc.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 +51 -5
- package/README.md +3 -3
- package/README.zh.md +3 -3
- package/lib/client.js +187 -38
- package/lib/types/client/chat/AssistantMarkdown.d.ts +1 -1
- package/lib/types/client/chat/QuotaNoticeHost.d.ts +7 -0
- package/lib/types/client/contract/chat-visibility.d.ts +1 -0
- package/lib/types/client/contract/slots.d.ts +54 -1
- package/lib/types/client/conversation-nodes/message.d.ts +3 -1
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/locale.d.ts +24 -0
- package/package.json +36 -36
package/README.i18n.yaml
CHANGED
|
@@ -1,6 +1,52 @@
|
|
|
1
|
-
# Bilingual-pair consistency record (docs/i18n/README.md):
|
|
2
|
-
#
|
|
3
|
-
#
|
|
1
|
+
# Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
|
|
2
|
+
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
|
|
3
|
+
# After editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/client/ui-chat/README.md
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/:
|
|
6
|
+
en: d88f75fc0178ba53
|
|
7
|
+
zh: 52bc7ae9551ab1cf
|
|
8
|
+
/deepseek-ai-dsh-client-ui-chat:
|
|
9
|
+
en: a0be18d7053df6b0
|
|
10
|
+
zh: 28c76e2cc32b7494
|
|
11
|
+
/deepseek-ai-dsh-client-ui-chat/summary:
|
|
12
|
+
en: fba5b2fb8080e2dd
|
|
13
|
+
zh: 32c337123b7dfbcb
|
|
14
|
+
/deepseek-ai-dsh-client-ui-chat/table-of-contents:
|
|
15
|
+
en: 41cd21266011d571
|
|
16
|
+
zh: 3172d1a2acbb27b7
|
|
17
|
+
/deepseek-ai-dsh-client-ui-chat/reference-previews:
|
|
18
|
+
en: 3fda3d75483ce7c1
|
|
19
|
+
zh: 4d96ba654f70c021
|
|
20
|
+
/deepseek-ai-dsh-client-ui-chat/hidden-chat-rows:
|
|
21
|
+
en: 5706ae03ceacf251
|
|
22
|
+
zh: 2e59d0815351349f
|
|
23
|
+
/deepseek-ai-dsh-client-ui-chat/command-and-failure-rows:
|
|
24
|
+
en: 2157fcd6b0d100b5
|
|
25
|
+
zh: 9e865ac3953ebe30
|
|
26
|
+
/deepseek-ai-dsh-client-ui-chat/turn-token-usage:
|
|
27
|
+
en: 29346bd0f9a5ff51
|
|
28
|
+
zh: 54dbed55f67aeecd
|
|
29
|
+
/deepseek-ai-dsh-client-ui-chat/completed-turn-footer:
|
|
30
|
+
en: b4cd36e7ab91281e
|
|
31
|
+
zh: 8ccf412b9dde61d5
|
|
32
|
+
/deepseek-ai-dsh-client-ui-chat/turn-process-folding:
|
|
33
|
+
en: 0ca3e8c4eab1ca78
|
|
34
|
+
zh: 1a1c71bab151eb7d
|
|
35
|
+
/deepseek-ai-dsh-client-ui-chat/grouped-rendering:
|
|
36
|
+
en: cc6718a9ff761114
|
|
37
|
+
zh: d734fc73c1b77074
|
|
38
|
+
/deepseek-ai-dsh-client-ui-chat/scroll-ownership:
|
|
39
|
+
en: 69b021c5a5d8b5a7
|
|
40
|
+
zh: 091ae7986c7a8a20
|
|
41
|
+
/deepseek-ai-dsh-client-ui-chat/model-experience:
|
|
42
|
+
en: c17b4dd43a61c569
|
|
43
|
+
zh: f7414309810c3a08
|
|
44
|
+
/deepseek-ai-dsh-client-ui-chat/model-experience/kv-cache-effect:
|
|
45
|
+
en: 15a7151ff9268f15
|
|
46
|
+
zh: 6eae68c718be579b
|
|
47
|
+
/deepseek-ai-dsh-client-ui-chat/known-limitations-and-deferred-work:
|
|
48
|
+
en: 1e7e55adf5c87246
|
|
49
|
+
zh: dd5befdf58ea084f
|
|
50
|
+
/deepseek-ai-dsh-client-ui-chat/known-limitations-and-deferred-work/dev-note:
|
|
51
|
+
en: b8b7eeb4ae675d2a
|
|
52
|
+
zh: fbe7022074ba81b9
|
package/README.md
CHANGED
|
@@ -40,14 +40,14 @@ Settings → General → Open chat links in selects the destination for ordinary
|
|
|
40
40
|
<a id="system-prompt-row"></a>
|
|
41
41
|
## Hidden Chat rows
|
|
42
42
|
|
|
43
|
-
Chat omits system-prompt, ordinary Context injection, and `permission` command rows in every work-details mode. The filter changes neither recorded Session events nor Trajectory inspection. Non-human Turn triggers remain independent notices; other command rows remain in Chat.
|
|
43
|
+
Chat omits system-prompt, ordinary Context injection, and `permission` command rows in every work-details mode. Context containing tool additions or removals remains visible. The filter changes neither recorded Session events nor Trajectory inspection. Non-human Turn triggers remain independent notices; other command rows remain in Chat.
|
|
44
44
|
|
|
45
45
|
When an Assistant attempt retires without a visible message, Chat hides its already-published Node instead of removing its key. A retry in the same Step reuses that key when visible content returns. This also applies when the loaded window lacks the Step start.
|
|
46
46
|
|
|
47
47
|
<a id="command-and-failure-rows"></a>
|
|
48
48
|
## Command and failure rows
|
|
49
49
|
|
|
50
|
-
Generic command rows retain the ordinary command glyph in every lifecycle state; failure remains explicit through the row state and summary.
|
|
50
|
+
Generic command rows retain the ordinary command glyph in every lifecycle state; failure remains explicit through the row state and summary. Every terminal Turn failure renders its inline red-dot row; a quota failure's row states the neutral `message.failure.quota` copy instead of the provider message. The transient notice for a newly appended `QUOTA` or `ACCOUNT_QUOTA` comes from this package's frame-wide entry in `shell.overlay`, which outlives the Chat panel: it offers the one live notice to the `shell.quota-notice` chain and falls back to its own warning Toast, while an entry that claims the code replaces that fallback. Only Sessions this Client has bound and materialized publish; quota failures in Sessions it never opened do not. A newer notice replaces the current one unless a claiming entry retains it with `keepOpen()`: that call returns a release the caller owns and must run on unmount, any live hold keeps the claiming entry mounted and drops later notices, and releasing resumes later notices without replaying the dropped ones. The fallback Toast has no deferral of its own: while the Desktop account's opaque native Platform page covers the document, it still runs underneath and its display timer may elapse unseen, dismissing the notice itself, so only the persistent failure row remains. A release drops only its own hold, so one that runs after a dismissal or a newer hold leaves that newer hold intact. Dismissal and sign-out clear every hold, and dropped notices are not queued while their persistent failure rows still render. History replacement and pagination never publish a notice. Intermediate retries do not create a terminal row; output-token limits use the amber warning dot.
|
|
51
51
|
|
|
52
52
|
-----
|
|
53
53
|
|
|
@@ -154,7 +154,7 @@ None; Chat presentation does not assemble or mutate provider requests.
|
|
|
154
154
|
<a id="known-limitations-and-deferred-work"></a>
|
|
155
155
|
|
|
156
156
|
|
|
157
|
-
- **
|
|
157
|
+
- **Tool-change presentation** — The `developer-message` Definition shares context presentation with `input-message`. Tool-only developer messages name a single added or removed tool inline without expansion. Multiple changes show added/removed counts and expand to comma-separated tool lists, one line per change kind. Mixed content uses the generic context presentation.
|
|
158
158
|
|
|
159
159
|
- **Opening echoes predict local order** — several submissions made before the running update can all remain in Chat. Their initial order follows local submission order, not Host queue order; admission can reposition them when the Host receives requests in a different order.
|
|
160
160
|
|
package/README.zh.md
CHANGED
|
@@ -40,14 +40,14 @@ Chat 在节点列表外通过一个 `MarkdownDelegateProvider` 提供文件及 H
|
|
|
40
40
|
<a id="system-prompt-row"></a>
|
|
41
41
|
## Chat 隐藏的行
|
|
42
42
|
|
|
43
|
-
Chat 在所有工作步骤展示模式下都不显示系统提示词行、普通上下文注入和 `permission`
|
|
43
|
+
Chat 在所有工作步骤展示模式下都不显示系统提示词行、普通上下文注入和 `permission` 命令行。包含工具添加或移除记录的上下文仍然可见。该过滤不改变已记录的 Session 事件或 Trajectory 查看能力。非人工轮次触发仍作为独立通知显示,其他命令行仍保留在 Chat 中。
|
|
44
44
|
|
|
45
45
|
Assistant 尝试结束且没有可见消息时,Chat 隐藏已发布的 Node,不移除其 key。同一 Step 的重试再次产生可见内容时,复用该 key。已加载窗口缺少 Step 起点时也遵循此规则。
|
|
46
46
|
|
|
47
47
|
<a id="command-and-failure-rows"></a>
|
|
48
48
|
## 指令与失败行
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
通用指令行在所有生命周期状态中都保留普通指令图标;失败仍通过行状态与摘要表达。每个终止轮次都渲染自己的红点行;欠费失败的行使用中立的 `message.failure.quota` 文案,而不是提供方消息。新追加的 `QUOTA` 或 `ACCOUNT_QUOTA` 产生的瞬时提示来自本包注册在 `shell.overlay` 的全局条目,它不随 Chat 面板消失:该条目把唯一一条实时提示交给 `shell.quota-notice` 链,并在无人接管时回退到自己的警告 Toast,接管该错误码的条目会替换该回退。只有本 Client 已绑定并已物化的 Session 会发布提示;它从未打开的 Session 中的欠费不会发布。更新的提示会替换当前提示,除非认领条目用 `keepOpen()` 保持住当前提示:该调用返回一个由调用方持有、必须在卸载时调用的释放函数,只要存在保持,认领条目就继续挂载,后续提示被丢弃,释放后恢复后续提示但不重放已丢弃的提示。回退 Toast 自身没有延后策略:当 Desktop 账号的不透明原生 Platform 页盖住本页时,它仍会在下方运行,其显示计时器可能在不可见时走完并自行撤下提示,因此只留下持久化失败行。释放只移除自己的保持,因此它在关闭或更新的保持之后执行时不会影响更新的保持。关闭与退出登录会清空所有保持;被丢弃的提示不排队,其对应的持久化失败行仍会渲染。历史替换和分页不会发布提示。中间重试不会创建终止行;输出 token 上限使用琥珀色警告点。
|
|
51
51
|
|
|
52
52
|
-----
|
|
53
53
|
|
|
@@ -154,7 +154,7 @@ Chat 会在历史前插与 renderer 重新挂载时恢复语义锚点,并且
|
|
|
154
154
|
<a id="known-limitations-and-deferred-work"></a>
|
|
155
155
|
|
|
156
156
|
|
|
157
|
-
-
|
|
157
|
+
- **工具变更展示** — `developer-message` Definition 与 `input-message` 共用上下文展示。仅包含工具变更的 developer 消息在单个工具新增或移除时直接显示工具名,不提供展开操作。多个变更显示新增、移除数量,展开后按变更类型分别以逗号分隔显示一行工具列表。混合内容使用通用上下文展示。
|
|
158
158
|
|
|
159
159
|
- **开场回显预测本地顺序**——运行状态更新前连续发出的多条消息可能都留在 Chat。初始排列遵循本地提交顺序,而非 Host 队列顺序;Host 按不同顺序接收请求时,入档可能调整它们的位置。
|
|
160
160
|
|
package/lib/client.js
CHANGED
|
@@ -107,12 +107,12 @@ window.__ModuleLoader__.load({
|
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
109
|
* Address a decoded absolute file path through the authenticated file route.
|
|
110
|
-
* @param base - HTTP(S) application base, including its deployment prefix
|
|
110
|
+
* @param base - HTTP(S) application base, including its deployment prefix, or `dsh-app://app/`.
|
|
111
111
|
* @param path - Native file path; URL escapes in authored Markdown must already be decoded.
|
|
112
112
|
* @returns File URL, or undefined for unsupported transports and non-absolute paths.
|
|
113
113
|
*/
|
|
114
114
|
function fileMediaUrl(base, path) {
|
|
115
|
-
if (!/^https?:/u.test(base) || !isAbsoluteWorkspacePath(path) || /^[/\\]{2}/u.test(path) || /[\u0000-\u001f\u007f]/u.test(path)) return void 0;
|
|
115
|
+
if (!/^https?:/u.test(base) && !base.startsWith("dsh-app://app/") || !isAbsoluteWorkspacePath(path) || /^[/\\]{2}/u.test(path) || /[\u0000-\u001f\u007f]/u.test(path)) return void 0;
|
|
116
116
|
return new URL(`api/file?path=${encodeURIComponent(path)}`, base).href;
|
|
117
117
|
}
|
|
118
118
|
//#endregion
|
|
@@ -211,7 +211,7 @@ window.__ModuleLoader__.load({
|
|
|
211
211
|
}
|
|
212
212
|
//#endregion
|
|
213
213
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/MessageItem.module.css.mjs
|
|
214
|
-
const css$17 = ".Sixlwa_userRow{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.Sixlwa_userStack{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;align-items:flex-end;gap:8px;display:flex}.Sixlwa_bubble{background:var(--dsw-specific-bubble);max-width:100%;font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;
|
|
214
|
+
const css$17 = ".Sixlwa_userRow{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.Sixlwa_userStack{min-width:0;max-width:min(calc(var(--dsh-chat-content-width,748px) * .702), 82%);flex-direction:column;align-items:flex-end;gap:8px;display:flex}.Sixlwa_bubble{background:var(--dsw-specific-bubble);border-radius:var(--dsw-radius-xl);max-width:100%;font-size:var(--dsh-content-font-size,14px);line-height:calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;padding:10px 16px}.Sixlwa_referenceSummary{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px))}.Sixlwa_contextRow{padding:2px 0}.Sixlwa_compactionRow{--dsh-compaction-header-height:calc(24px + var(--dsh-content-font-delta,0px));padding:2px 0}.Sixlwa_compactionButton{width:100%;height:var(--dsh-compaction-header-height);border-radius:var(--dsw-radius-sm);min-width:0;color:inherit;font:inherit;text-align:left;background:0 0;border:none;align-items:center;padding:0;display:flex}.Sixlwa_compactionRow:has(.Sixlwa_compactionBody) .Sixlwa_compactionButton{z-index:7;background:var(--dsw-alias-bg-base);border-radius:0;position:sticky;top:0}.Sixlwa_compactionBody :has(>[data-code-block-banner]){top:var(--dsh-compaction-header-height)}.Sixlwa_compactionRow:has(.Sixlwa_compactionBody) .Sixlwa_compactionButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.Sixlwa_compactionButton:not(:disabled){cursor:pointer}.Sixlwa_compactionButton:not(:disabled):hover{background:var(--dsw-alias-interactive-bg-hover)}.Sixlwa_compactionLeading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);flex:none;place-items:center;margin-right:6px;display:inline-grid}.Sixlwa_compactionLeading svg{width:calc(14px + var(--dsh-content-font-delta,0px));height:calc(14px + var(--dsh-content-font-delta,0px))}.Sixlwa_compactionContextIcon,.Sixlwa_compactionDisclosureIcon{grid-area:1/1;justify-content:center;align-items:center;display:inline-flex}.Sixlwa_compactionDisclosureIcon,.Sixlwa_compactionButton:not(:disabled):hover .Sixlwa_compactionContextIcon,.Sixlwa_compactionButton:not(:disabled):focus-visible .Sixlwa_compactionContextIcon{opacity:0}.Sixlwa_compactionButton:not(:disabled):hover .Sixlwa_compactionDisclosureIcon,.Sixlwa_compactionButton:not(:disabled):focus-visible .Sixlwa_compactionDisclosureIcon{opacity:1}.Sixlwa_compactionTitle{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary-dimmed);flex:none}.Sixlwa_compactionSep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.Sixlwa_compactionSummary{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.Sixlwa_compactionBody{padding:4px 0 4px calc(22px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px))}.Sixlwa_retryRow{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px))}.Sixlwa_retrySummary{border-radius:var(--dsw-radius-sm);width:fit-content;color:inherit;cursor:pointer;user-select:none;align-items:center;gap:7px;padding:2px 0;list-style:none;display:inline-flex}.Sixlwa_retrySummary::-webkit-details-marker{display:none}.Sixlwa_retrySummary:after{content:\"\";opacity:.8;border-bottom:1.5px solid;border-right:1.5px solid;width:6px;height:6px;transition:transform .12s;transform:rotate(-45deg)}.Sixlwa_retrySummary:hover{color:var(--dsw-alias-label-secondary)}.Sixlwa_retrySummary:focus-visible{outline:1.5px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.Sixlwa_retryText{color:inherit}.Sixlwa_retryRow[data-active] .Sixlwa_retryText{background:linear-gradient(90deg, var(--dsw-alias-label-tertiary) 0%, var(--dsw-alias-label-tertiary) 40%, var(--dsw-alias-label-secondary) 50%, var(--dsw-alias-label-tertiary) 60%, var(--dsw-alias-label-tertiary) 100%);color:#0000;background-position:100%;background-size:200% 100%;background-clip:text;animation:1.6s ease-in-out infinite Sixlwa_retry-shimmer}.Sixlwa_retryRow[open] .Sixlwa_retrySummary:after{transform:rotate(45deg)}.Sixlwa_retryDetails{overflow-wrap:anywhere;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px));gap:2px;margin-top:3px;padding-left:14px;display:grid}.Sixlwa_retryDetailLabel{color:var(--dsw-alias-label-secondary)}.Sixlwa_turnErrorRow{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:8px;padding:2px 0;display:grid}.Sixlwa_turnErrorDot{margin-top:5px}.Sixlwa_turnErrorCopy{overflow-wrap:anywhere;min-width:0}.Sixlwa_turnErrorTitle{color:var(--dsw-alias-state-error-primary);margin-right:6px;font-weight:600}.Sixlwa_turnErrorMessage{color:var(--dsw-alias-label-secondary)}.Sixlwa_turnErrorCode{color:var(--dsw-alias-label-tertiary);font:var(--dsw-font-markdown-code-block-small)}.Sixlwa_maxTokensTitle{color:var(--dsw-alias-state-warn-primary);margin-right:6px;font-weight:600}@keyframes Sixlwa_retry-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.Sixlwa_retryRow[data-active] .Sixlwa_retryText{color:inherit;background:0 0;animation:none}}.Sixlwa_attachmentRow{flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:100%;display:flex}.Sixlwa_fileCard{border:.5px solid var(--dsw-alias-border-l2,#0000001f);border-radius:var(--dsw-radius-xl);background:var(--dsw-specific-input-major,transparent);box-sizing:border-box;flex:0 0 240px;align-items:center;gap:10px;width:240px;min-height:64px;padding:8px 12px;display:inline-flex}.Sixlwa_fileIcon{flex:none;width:28px;height:28px}.Sixlwa_fileContent{flex-direction:column;flex:1;min-width:0;display:flex}.Sixlwa_fileName{white-space:nowrap;text-overflow:ellipsis;color:var(--dsw-alias-label-primary);font-size:14px;font-weight:500;line-height:22px;overflow:hidden}.Sixlwa_fileMeta{white-space:nowrap;text-overflow:ellipsis;color:var(--dsw-alias-label-tertiary,#00000073);font-size:12px;line-height:15px;overflow:hidden}";
|
|
215
215
|
const tagId$17 = "@deepseek-ai/dsh-client-ui-chat/MessageItem.module.css";
|
|
216
216
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$17) + "]") === null) {
|
|
217
217
|
const tag = document.createElement("style");
|
|
@@ -876,7 +876,7 @@ window.__ModuleLoader__.load({
|
|
|
876
876
|
}
|
|
877
877
|
//#endregion
|
|
878
878
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/ContextInjectionRow.module.css.mjs
|
|
879
|
-
const css$15 = ".XrJvXW_root{min-width:0}.XrJvXW_root[data-open]{padding-bottom:4px}.XrJvXW_chevron{color:var(--dsw-alias-label-secondary)}.XrJvXW_sep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.XrJvXW_source{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:none;overflow:hidden}.XrJvXW_summary{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.XrJvXW_body{box-sizing:border-box;width:calc(100% - 22px - var(--dsh-content-font-delta,0px));max-height:141px;margin:4px 0 0 calc(22px + var(--dsh-content-font-delta,0px));background:var(--dsw-alias-markdown-code-block);color:var(--dsw-alias-label-tertiary);font:400 11px/16px var(--ds-font-family-code);border:none;
|
|
879
|
+
const css$15 = ".XrJvXW_root{min-width:0}.XrJvXW_root[data-open]{padding-bottom:4px}.XrJvXW_chevron{color:var(--dsw-alias-label-secondary)}.XrJvXW_sep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.XrJvXW_source{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:none;overflow:hidden}.XrJvXW_summary{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.XrJvXW_body{box-sizing:border-box;width:calc(100% - 22px - var(--dsh-content-font-delta,0px));max-height:141px;margin:4px 0 0 calc(22px + var(--dsh-content-font-delta,0px));border-radius:var(--dsw-radius-md);background:var(--dsw-alias-markdown-code-block);color:var(--dsw-alias-label-tertiary);font:400 11px/16px var(--ds-font-family-code);border:none;padding:10px 16px 12px 12px;overflow:auto}.XrJvXW_toolChanges{white-space:nowrap}";
|
|
880
880
|
const tagId$15 = "@deepseek-ai/dsh-client-ui-chat/ContextInjectionRow.module.css";
|
|
881
881
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$15) + "]") === null) {
|
|
882
882
|
const tag = document.createElement("style");
|
|
@@ -891,7 +891,8 @@ window.__ModuleLoader__.load({
|
|
|
891
891
|
"root": "XrJvXW_root",
|
|
892
892
|
"sep": "XrJvXW_sep",
|
|
893
893
|
"source": "XrJvXW_source",
|
|
894
|
-
"summary": "XrJvXW_summary"
|
|
894
|
+
"summary": "XrJvXW_summary",
|
|
895
|
+
"toolChanges": "XrJvXW_toolChanges"
|
|
895
896
|
};
|
|
896
897
|
//#endregion
|
|
897
898
|
//#region lib/types/client/chat/ContextInjectionRow.js
|
|
@@ -913,15 +914,29 @@ window.__ModuleLoader__.load({
|
|
|
913
914
|
source,
|
|
914
915
|
t
|
|
915
916
|
});
|
|
917
|
+
const toolBlocks = content.length > 0 && content.every((block) => block.type === "tool-addition" || block.type === "tool-removal") ? content : void 0;
|
|
918
|
+
const added = toolBlocks?.flatMap((block) => block.type === "tool-addition" ? [block.toolName] : []) ?? [];
|
|
919
|
+
const removed = toolBlocks?.flatMap((block) => block.type === "tool-removal" ? [block.toolName] : []) ?? [];
|
|
920
|
+
const single = toolBlocks?.length === 1 ? toolBlocks[0] : void 0;
|
|
921
|
+
const toolSummary = toolBlocks === void 0 || single !== void 0 ? null : added.length > 0 && removed.length > 0 ? t("message.toolsChanged", {
|
|
922
|
+
added: added.length,
|
|
923
|
+
removed: removed.length
|
|
924
|
+
}) : added.length > 0 ? t("message.toolsAddedCount", { count: added.length }) : t("message.toolsRemovedCount", { count: removed.length });
|
|
916
925
|
return (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
|
|
917
926
|
className: ContextInjectionRow_module_css_default.root,
|
|
918
|
-
icon: producer.role === "recall" ? (0, react_jsx_runtime.jsx)("span", {
|
|
927
|
+
icon: toolBlocks !== void 0 ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconBrowseOutlineRegular, { size: 14 }) : producer.role === "recall" ? (0, react_jsx_runtime.jsx)("span", {
|
|
919
928
|
"data-context-recall-icon": true,
|
|
920
929
|
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.ReferenceIconRegular, { kind: "session" })
|
|
921
930
|
}) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconContextInjectionOutlineRegular, { size: 14 }),
|
|
922
931
|
chevronClassName: ContextInjectionRow_module_css_default.chevron,
|
|
923
|
-
title: t(producer.role === "recall" ? "message.contextRecall" : "message.contextInjection"),
|
|
924
|
-
collapsedContent:
|
|
932
|
+
title: single !== void 0 ? t(single.type === "tool-addition" ? "message.toolAdded" : "message.toolRemoved", { name: single.toolName }) : t(toolBlocks !== void 0 ? "message.toolsUpdated" : producer.role === "recall" ? "message.contextRecall" : "message.contextInjection"),
|
|
933
|
+
collapsedContent: toolSummary !== null ? (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("span", {
|
|
934
|
+
className: ContextInjectionRow_module_css_default.sep,
|
|
935
|
+
"aria-hidden": true
|
|
936
|
+
}), (0, react_jsx_runtime.jsx)("span", {
|
|
937
|
+
className: ContextInjectionRow_module_css_default.summary,
|
|
938
|
+
children: toolSummary
|
|
939
|
+
})] }) : toolBlocks !== void 0 || producer.label === null ? void 0 : (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
925
940
|
(0, react_jsx_runtime.jsx)("span", {
|
|
926
941
|
className: ContextInjectionRow_module_css_default.sep,
|
|
927
942
|
"aria-hidden": true
|
|
@@ -941,8 +956,8 @@ window.__ModuleLoader__.load({
|
|
|
941
956
|
})] })
|
|
942
957
|
] }),
|
|
943
958
|
keepContentWhenOpen: true,
|
|
944
|
-
open,
|
|
945
|
-
expandable:
|
|
959
|
+
open: open && single === void 0,
|
|
960
|
+
expandable: single === void 0,
|
|
946
961
|
expandOnRowClick: true,
|
|
947
962
|
onToggle: () => {
|
|
948
963
|
setOpen((value) => !value);
|
|
@@ -951,7 +966,10 @@ window.__ModuleLoader__.load({
|
|
|
951
966
|
className: ContextInjectionRow_module_css_default.body,
|
|
952
967
|
"data-context-injection-body": true,
|
|
953
968
|
"data-context-form": rendered ?? void 0,
|
|
954
|
-
children: body
|
|
969
|
+
children: toolBlocks === void 0 ? body : (0, react_jsx_runtime.jsxs)("div", {
|
|
970
|
+
className: ContextInjectionRow_module_css_default.toolChanges,
|
|
971
|
+
children: [added.length > 0 && (0, react_jsx_runtime.jsx)("div", { children: t("message.toolsAdded", { names: added.join(", ") }) }), removed.length > 0 && (0, react_jsx_runtime.jsx)("div", { children: t("message.toolsRemoved", { names: removed.join(", ") }) })]
|
|
972
|
+
})
|
|
955
973
|
})
|
|
956
974
|
});
|
|
957
975
|
}
|
|
@@ -1082,7 +1100,7 @@ window.__ModuleLoader__.load({
|
|
|
1082
1100
|
}
|
|
1083
1101
|
//#endregion
|
|
1084
1102
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/MessageIconActions.module.css.mjs
|
|
1085
|
-
const css$14 = ".xzv4MW_actions{height:calc(28px + var(--dsh-content-font-delta,0px));align-items:center;gap:8px;display:flex}.xzv4MW_timeStart{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);white-space:nowrap;padding-right:12px}.xzv4MW_timeEnd{font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:inherit;white-space:nowrap}.xzv4MW_endInfo{min-width:0;color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;margin-left:8px;display:inline-flex}@media (hover:hover){[data-actions-reveal=hover] .xzv4MW_actions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])) .xzv4MW_actions{opacity:0;transition:opacity 80ms}[data-actions-reveal=hover]:hover .xzv4MW_actions,[data-actions-reveal=hover]:focus-within .xzv4MW_actions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):hover .xzv4MW_actions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):focus-within .xzv4MW_actions{opacity:1}}.xzv4MW_action{width:calc(28px + var(--dsh-content-font-delta,0px));height:calc(28px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;
|
|
1103
|
+
const css$14 = ".xzv4MW_actions{height:calc(28px + var(--dsh-content-font-delta,0px));align-items:center;gap:8px;display:flex}.xzv4MW_timeStart{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);white-space:nowrap;padding-right:12px}.xzv4MW_timeEnd{font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:inherit;white-space:nowrap}.xzv4MW_endInfo{min-width:0;color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;margin-left:8px;display:inline-flex}@media (hover:hover){[data-actions-reveal=hover] .xzv4MW_actions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])) .xzv4MW_actions{opacity:0;transition:opacity 80ms}[data-actions-reveal=hover]:hover .xzv4MW_actions,[data-actions-reveal=hover]:focus-within .xzv4MW_actions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):hover .xzv4MW_actions,:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering]):has(~:is([data-chat-flow-kind=user],[data-chat-flow-kind=steering])):focus-within .xzv4MW_actions{opacity:1}}.xzv4MW_action{width:calc(28px + var(--dsh-content-font-delta,0px));height:calc(28px + var(--dsh-content-font-delta,0px));border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:6px;display:inline-flex}.xzv4MW_action svg{width:calc(15px + var(--dsh-content-font-delta,0px));height:calc(15px + var(--dsh-content-font-delta,0px))}.xzv4MW_actions[data-clock=end] .xzv4MW_action svg{width:calc(17px + var(--dsh-content-font-delta,0px));height:calc(17px + var(--dsh-content-font-delta,0px))}.xzv4MW_action:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.xzv4MW_action[data-unavailable]{cursor:default;opacity:.4}.xzv4MW_action[data-unavailable]:hover{color:var(--dsw-alias-label-tertiary);background:0 0}.xzv4MW_visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}";
|
|
1086
1104
|
const tagId$14 = "@deepseek-ai/dsh-client-ui-chat/MessageIconActions.module.css";
|
|
1087
1105
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$14) + "]") === null) {
|
|
1088
1106
|
const tag = document.createElement("style");
|
|
@@ -1209,6 +1227,9 @@ window.__ModuleLoader__.load({
|
|
|
1209
1227
|
return Math.max(1, Math.ceil(milliseconds / 1e3));
|
|
1210
1228
|
}
|
|
1211
1229
|
function failureMessage(message, code, t) {
|
|
1230
|
+
if (code === "ACCOUNT_SIGNED_OUT") return t("message.failure.accountSignedOut");
|
|
1231
|
+
if (code === "ACCOUNT_SIGN_IN_REQUIRED") return t("message.failure.accountSignInRequired");
|
|
1232
|
+
if (code === "QUOTA" || code === "ACCOUNT_QUOTA") return t("message.failure.quota");
|
|
1212
1233
|
return code === "AUTH" ? t("message.failure.auth") : message;
|
|
1213
1234
|
}
|
|
1214
1235
|
function ModelRetryItem({ node, active, t }) {
|
|
@@ -1281,7 +1302,7 @@ window.__ModuleLoader__.load({
|
|
|
1281
1302
|
className: MessageItem_module_css_default.turnErrorCopy,
|
|
1282
1303
|
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
1283
1304
|
className: MessageItem_module_css_default.turnErrorTitle,
|
|
1284
|
-
children: t("message.turnError")
|
|
1305
|
+
children: node.code === "ACCOUNT_SIGNED_OUT" ? t("message.accountStopped") : t("message.turnError")
|
|
1285
1306
|
}), (0, react_jsx_runtime.jsx)("span", {
|
|
1286
1307
|
className: MessageItem_module_css_default.turnErrorMessage,
|
|
1287
1308
|
children: failureMessage(node.message, node.code, t)
|
|
@@ -1606,7 +1627,7 @@ window.__ModuleLoader__.load({
|
|
|
1606
1627
|
}
|
|
1607
1628
|
//#endregion
|
|
1608
1629
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/ChatView.module.css.mjs
|
|
1609
|
-
const css$13 = ".EvIC1a_frame{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative;container-type:inline-size}.EvIC1a_root{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative;overflow:visible clip}.EvIC1a_scroll{min-height:0;padding:16px calc(var(--dsh-composer-side-clearance) + 16px);flex:auto;overflow-y:auto;container-type:inline-size}.EvIC1a_root[data-chat-following-tail] .EvIC1a_scroll,[data-conversation-scroll]:has(.EvIC1a_root[data-chat-following-tail]){overflow-anchor:none}[data-conversation-scroll] .EvIC1a_frame,[data-conversation-scroll] .EvIC1a_root{flex:none;height:auto;min-height:auto}[data-conversation-scroll] .EvIC1a_scroll{flex:none;min-height:auto;overflow:visible}.EvIC1a_column{max-width:var(--dsh-chat-content-width);flex-direction:column;width:100%;margin:0 auto;display:flex}.EvIC1a_column>:not([hidden]):not(.EvIC1a_flowItem:empty)~:not([hidden]):not(.EvIC1a_flowItem:empty){margin-top:var(--dsh-chat-flow-gap,16px)}.EvIC1a_flowItem{min-width:0}.EvIC1a_flowItem[data-turn-process-answer]{--dsh-chat-flow-gap:8px}.EvIC1a_flowItem:empty{height:0}.EvIC1a_callRow{border-radius:
|
|
1630
|
+
const css$13 = ".EvIC1a_frame{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative;container-type:inline-size}.EvIC1a_root{flex-direction:column;flex:auto;min-height:0;display:flex;position:relative;overflow:visible clip}.EvIC1a_scroll{min-height:0;padding:16px calc(var(--dsh-composer-side-clearance) + 16px);flex:auto;overflow-y:auto;container-type:inline-size}.EvIC1a_root[data-chat-following-tail] .EvIC1a_scroll,[data-conversation-scroll]:has(.EvIC1a_root[data-chat-following-tail]){overflow-anchor:none}[data-conversation-scroll] .EvIC1a_frame,[data-conversation-scroll] .EvIC1a_root{flex:none;height:auto;min-height:auto}[data-conversation-scroll] .EvIC1a_scroll{flex:none;min-height:auto;overflow:visible}.EvIC1a_column{max-width:var(--dsh-chat-content-width);flex-direction:column;width:100%;margin:0 auto;display:flex}.EvIC1a_column>:not([hidden]):not(.EvIC1a_flowItem:empty)~:not([hidden]):not(.EvIC1a_flowItem:empty){margin-top:var(--dsh-chat-flow-gap,16px)}.EvIC1a_flowItem{min-width:0}.EvIC1a_flowItem[data-turn-process-answer]{--dsh-chat-flow-gap:8px}.EvIC1a_flowItem:empty{height:0}.EvIC1a_callRow{border-radius:var(--dsw-radius-sm)}.EvIC1a_hint{color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px))}.EvIC1a_openError{color:var(--dsw-alias-state-error-primary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(18px + var(--dsh-content-font-delta-secondary,0px))}.EvIC1a_older{justify-content:center;display:flex}.EvIC1a_older button{border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover-solid);cursor:pointer;border:none;padding:4px 12px;font-size:12px}.EvIC1a_older button:disabled{cursor:default;opacity:.6}.EvIC1a_toBottomSlot{z-index:8;height:0;padding-right:max(calc(var(--dsh-composer-side-clearance) + 16px), calc((100% - var(--dsh-chat-content-width)) / 2));pointer-events:none;justify-content:flex-end;display:flex;position:absolute;bottom:16px;left:0;right:0}[data-conversation-scroll] .EvIC1a_toBottomSlot{bottom:calc(var(--dsh-composer-height,152px) + 16px);position:sticky}.EvIC1a_toBottom{--dsw-elevation-stroke-color:var(--dsw-alias-border-l3);corner-shape:round;width:34px;height:34px;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-button-floating-fill);box-shadow:var(--dsw-elevation-panel);cursor:pointer;pointer-events:auto;border:0;border-radius:100px;justify-content:center;align-items:center;margin-top:-34px;padding:0;display:flex}.EvIC1a_toBottom:hover{background:var(--dsw-alias-button-floating-hover)}.EvIC1a_modalAction{min-width:72px}";
|
|
1610
1631
|
const tagId$13 = "@deepseek-ai/dsh-client-ui-chat/ChatView.module.css";
|
|
1611
1632
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$13) + "]") === null) {
|
|
1612
1633
|
const tag = document.createElement("style");
|
|
@@ -3540,7 +3561,7 @@ window.__ModuleLoader__.load({
|
|
|
3540
3561
|
}
|
|
3541
3562
|
//#endregion
|
|
3542
3563
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/TurnNavigator.module.css.mjs
|
|
3543
|
-
const css$11 = ".eGxaPq_slot{z-index:7;height:0;padding-inline:calc(var(--dsh-composer-side-clearance) + 16px);pointer-events:none;position:absolute;top:0;left:0;right:0;container-type:inline-size}[data-conversation-scroll] .eGxaPq_slot{position:sticky}.eGxaPq_frame{--turn-rail-band:calc(var(--dsh-conversation-viewport-height,100dvh) - var(--dsh-composer-height,152px));--turn-preview-height:100px;top:calc(var(--turn-rail-band) / 2);width:28px;max-height:min(max(0px, calc(var(--turn-rail-band) - 64px)), 420px);contain:layout;cursor:pointer;pointer-events:auto;position:absolute;right:12px;transform:translateY(-50%)}.eGxaPq_scroller{max-height:inherit;overscroll-behavior:contain;scrollbar-width:none;position:relative;overflow-y:auto}.eGxaPq_scroller::-webkit-scrollbar{display:none}.eGxaPq_fadeTop{mask-image:linear-gradient(#0000 0,#000 24px 100%)}.eGxaPq_fadeBottom{mask-image:linear-gradient(#000 0 calc(100% - 24px),#0000 100%)}.eGxaPq_fadeTop.eGxaPq_fadeBottom{mask-image:linear-gradient(#0000 0,#000 24px calc(100% - 24px),#0000 100%)}.eGxaPq_marks{position:relative}.eGxaPq_mark{cursor:pointer;background:0 0;border:0;border-radius:8px;height:10px;padding:0;position:absolute;top:0;left:0;right:0}.eGxaPq_mark:before{background:var(--dsw-alias-border-l4);content:\"\";transform-origin:100%;border-radius:2px;width:20px;height:2px;transition:transform .14s,background-color .14s;position:absolute;top:50%;right:0;transform:translateY(-50%)scaleX(.6)}.eGxaPq_markUnloaded:before{opacity:.6;transform:translateY(-50%)scaleX(.4)}.eGxaPq_markPreview:before{background:var(--dsw-alias-label-tertiary);transform:translateY(-50%)scaleX(.9)}.eGxaPq_markBusy:before{animation:1s ease-in-out infinite eGxaPq_dsh-turn-mark-busy}.eGxaPq_markActive:before{background:var(--dsw-alias-label-primary);transform:translateY(-50%)scaleX(1)}.eGxaPq_mark:focus-visible:before{background:var(--dsw-alias-state-business-primary);transform:translateY(-50%)scaleX(1)}.eGxaPq_mark:focus-visible{outline:none}.eGxaPq_mark:focus-visible:after{border-radius:inherit;outline:1px solid var(--dsw-alias-state-business-primary);outline-offset
|
|
3564
|
+
const css$11 = ".eGxaPq_slot{z-index:7;height:0;padding-inline:calc(var(--dsh-composer-side-clearance) + 16px);pointer-events:none;position:absolute;top:0;left:0;right:0;container-type:inline-size}[data-conversation-scroll] .eGxaPq_slot{position:sticky}.eGxaPq_frame{--turn-rail-band:calc(var(--dsh-conversation-viewport-height,100dvh) - var(--dsh-composer-height,152px));--turn-preview-height:100px;top:calc(var(--turn-rail-band) / 2);width:28px;max-height:min(max(0px, calc(var(--turn-rail-band) - 64px)), 420px);contain:layout;cursor:pointer;pointer-events:auto;position:absolute;right:12px;transform:translateY(-50%)}.eGxaPq_scroller{max-height:inherit;overscroll-behavior:contain;scrollbar-width:none;position:relative;overflow-y:auto}.eGxaPq_scroller::-webkit-scrollbar{display:none}.eGxaPq_fadeTop{mask-image:linear-gradient(#0000 0,#000 24px 100%)}.eGxaPq_fadeBottom{mask-image:linear-gradient(#000 0 calc(100% - 24px),#0000 100%)}.eGxaPq_fadeTop.eGxaPq_fadeBottom{mask-image:linear-gradient(#0000 0,#000 24px calc(100% - 24px),#0000 100%)}.eGxaPq_marks{position:relative}.eGxaPq_mark{cursor:pointer;background:0 0;border:0;border-radius:8px;height:10px;padding:0;position:absolute;top:0;left:0;right:0}.eGxaPq_mark:before{background:var(--dsw-alias-border-l4);content:\"\";transform-origin:100%;border-radius:2px;width:20px;height:2px;transition:transform .14s,background-color .14s;position:absolute;top:50%;right:0;transform:translateY(-50%)scaleX(.6)}.eGxaPq_markUnloaded:before{opacity:.6;transform:translateY(-50%)scaleX(.4)}.eGxaPq_markPreview:before{background:var(--dsw-alias-label-tertiary);transform:translateY(-50%)scaleX(.9)}.eGxaPq_markBusy:before{animation:1s ease-in-out infinite eGxaPq_dsh-turn-mark-busy}.eGxaPq_markActive:before{background:var(--dsw-alias-label-primary);transform:translateY(-50%)scaleX(1)}.eGxaPq_mark:focus-visible:before{background:var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));transform:translateY(-50%)scaleX(1)}.eGxaPq_mark:focus-visible{outline:none}.eGxaPq_mark:focus-visible:after{border-radius:inherit;outline:1px solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-1px;content:\"\";width:20px;position:absolute;inset:0 0 0 auto}.eGxaPq_preview{top:clamp(0px, calc(var(--turn-preview-center) - var(--turn-preview-height) / 2), calc(100% - var(--turn-preview-height)));box-sizing:border-box;width:min(300px,100cqw - 120px);max-height:var(--turn-preview-height);border-radius:var(--dsw-radius-lg);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-1);box-shadow:var(--dsw-elevation-panel);pointer-events:none;border:0;padding:10px 12px;transition:top .14s cubic-bezier(.2,.8,.2,1);animation:.12s ease-out eGxaPq_dsh-turn-preview-enter;position:absolute;right:calc(100% + 10px);overflow:hidden}.eGxaPq_previewPrompt,.eGxaPq_previewResponse{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.eGxaPq_previewPrompt{font:var(--dsw-font-xs-strong-13);-webkit-line-clamp:1}.eGxaPq_previewResponse{color:var(--dsw-alias-label-caption);font:var(--dsw-font-xxs-12);-webkit-line-clamp:3;margin-top:4px}@keyframes eGxaPq_dsh-turn-preview-enter{0%{opacity:0;transform:translate(4px)}to{opacity:1;transform:translate(0)}}@keyframes eGxaPq_dsh-turn-mark-busy{0%,to{opacity:1}50%{opacity:.35}}@container (width<=900px){.eGxaPq_frame{display:none}}@media (prefers-reduced-motion:reduce){.eGxaPq_frame,.eGxaPq_scroller,.eGxaPq_mark:before,.eGxaPq_markBusy:before,.eGxaPq_preview{scroll-behavior:auto;transition:none;animation:none}}";
|
|
3544
3565
|
const tagId$11 = "@deepseek-ai/dsh-client-ui-chat/TurnNavigator.module.css";
|
|
3545
3566
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$11) + "]") === null) {
|
|
3546
3567
|
const tag = document.createElement("style");
|
|
@@ -5352,6 +5373,14 @@ window.__ModuleLoader__.load({
|
|
|
5352
5373
|
"message.extraBlock": "附加内容块",
|
|
5353
5374
|
"message.systemPrompt": "系统提示词",
|
|
5354
5375
|
"message.systemPromptUpdate": "系统提示词更新",
|
|
5376
|
+
"message.toolAdded": "已添加工具:{name}",
|
|
5377
|
+
"message.toolRemoved": "已移除工具:{name}",
|
|
5378
|
+
"message.toolsAdded": "新增:{names}",
|
|
5379
|
+
"message.toolsAddedCount": "新增 {count} 个",
|
|
5380
|
+
"message.toolsChanged": "新增 {added} 个,移除 {removed} 个",
|
|
5381
|
+
"message.toolsRemoved": "移除:{names}",
|
|
5382
|
+
"message.toolsRemovedCount": "移除 {count} 个",
|
|
5383
|
+
"message.toolsUpdated": "工具已更新",
|
|
5355
5384
|
"message.contextInjection": "上下文注入",
|
|
5356
5385
|
"message.contextRecall": "跨会话召回",
|
|
5357
5386
|
"message.referenceSummary": "引用会话 · {labels}",
|
|
@@ -5394,6 +5423,10 @@ window.__ModuleLoader__.load({
|
|
|
5394
5423
|
"message.retry.delay": "重试延迟:",
|
|
5395
5424
|
"message.retry.failure": "失败原因:",
|
|
5396
5425
|
"message.failure.auth": "API 密钥无效",
|
|
5426
|
+
"message.accountStopped": "任务已停止",
|
|
5427
|
+
"message.failure.accountSignedOut": "任务已因退出 DeepSeek 登录而停止。",
|
|
5428
|
+
"message.failure.accountSignInRequired": "请先登录 DeepSeek,并确认请求地址支持账号认证。",
|
|
5429
|
+
"message.failure.quota": "当前请求的额度已用尽",
|
|
5397
5430
|
"message.turnError": "本轮运行失败",
|
|
5398
5431
|
"message.maxTokens": "已达到输出 token 上限",
|
|
5399
5432
|
"message.maxTokens.hint": "回答被截断,已有输出保留在对话中。发送“继续”可让模型接着输出。",
|
|
@@ -5529,6 +5562,14 @@ window.__ModuleLoader__.load({
|
|
|
5529
5562
|
"message.extraBlock": "Extra content block",
|
|
5530
5563
|
"message.systemPrompt": "System prompt",
|
|
5531
5564
|
"message.systemPromptUpdate": "System prompt update",
|
|
5565
|
+
"message.toolAdded": "Tool added: {name}",
|
|
5566
|
+
"message.toolRemoved": "Tool removed: {name}",
|
|
5567
|
+
"message.toolsAdded": "Added: {names}",
|
|
5568
|
+
"message.toolsAddedCount": "{count} added",
|
|
5569
|
+
"message.toolsChanged": "{added} added, {removed} removed",
|
|
5570
|
+
"message.toolsRemoved": "Removed: {names}",
|
|
5571
|
+
"message.toolsRemovedCount": "{count} removed",
|
|
5572
|
+
"message.toolsUpdated": "Tools updated",
|
|
5532
5573
|
"message.contextInjection": "Context injection",
|
|
5533
5574
|
"message.contextRecall": "Session recall",
|
|
5534
5575
|
"message.referenceSummary": "Referenced session · {labels}",
|
|
@@ -5571,6 +5612,10 @@ window.__ModuleLoader__.load({
|
|
|
5571
5612
|
"message.retry.delay": "Retry delay: ",
|
|
5572
5613
|
"message.retry.failure": "Failure reason: ",
|
|
5573
5614
|
"message.failure.auth": "API key is invalid",
|
|
5615
|
+
"message.accountStopped": "Task stopped",
|
|
5616
|
+
"message.failure.accountSignedOut": "Stopped because you signed out of DeepSeek.",
|
|
5617
|
+
"message.failure.accountSignInRequired": "Sign in to DeepSeek and ensure the request destination supports account authentication.",
|
|
5618
|
+
"message.failure.quota": "Request quota exhausted.",
|
|
5574
5619
|
"message.turnError": "This turn failed",
|
|
5575
5620
|
"message.maxTokens": "Output token limit reached",
|
|
5576
5621
|
"message.maxTokens.hint": "The reply was cut off; earlier output is preserved in the conversation. Send \"continue\" to let the model resume.",
|
|
@@ -5728,7 +5773,7 @@ window.__ModuleLoader__.load({
|
|
|
5728
5773
|
});
|
|
5729
5774
|
//#endregion
|
|
5730
5775
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/AssistantMarkdown.module.css.mjs
|
|
5731
|
-
const css$8 = ".hWmORq_root{font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary);flex-direction:column;display:flex}.hWmORq_body{flex-direction:column;gap:16px;display:flex}.hWmORq_body .md-table-wide{--dsh-table-spare:max(0px, calc((100cqw - var(--dsh-chat-content-width)) / 2));--dsh-table-lead:calc(var(--dsh-table-spare) + min(var(--dsh-chat-content-width), 100cqw) - 100%);box-sizing:border-box;width:calc(100% + var(--dsh-table-lead) + var(--dsh-table-spare));max-width:none;margin-left:calc(-1 * var(--dsh-table-lead));padding-left:var(--dsh-table-lead)}.hWmORq_body .md-table-wide>table{z-index:1;position:relative}.hWmORq_body>[data-turn-process-inline][hidden]{margin-bottom:-16px}.hWmORq_stopped{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);
|
|
5776
|
+
const css$8 = ".hWmORq_root{font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-primary);flex-direction:column;display:flex}.hWmORq_body{flex-direction:column;gap:16px;display:flex}.hWmORq_body .md-table-wide{--dsh-table-spare:max(0px, calc((100cqw - var(--dsh-chat-content-width)) / 2));--dsh-table-lead:calc(var(--dsh-table-spare) + min(var(--dsh-chat-content-width), 100cqw) - 100%);box-sizing:border-box;width:calc(100% + var(--dsh-table-lead) + var(--dsh-table-spare));max-width:none;margin-left:calc(-1 * var(--dsh-table-lead));padding-left:var(--dsh-table-lead)}.hWmORq_body .md-table-wide>table{z-index:1;position:relative}.hWmORq_body>[data-turn-process-inline][hidden]{margin-bottom:-16px}.hWmORq_stopped{border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary);align-self:flex-start;padding:0 6px;font-size:11px;line-height:18px}.hWmORq_actions{margin-top:16px;margin-left:-6px}";
|
|
5732
5777
|
const tagId$8 = "@deepseek-ai/dsh-client-ui-chat/AssistantMarkdown.module.css";
|
|
5733
5778
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
|
|
5734
5779
|
const tag = document.createElement("style");
|
|
@@ -5752,7 +5797,7 @@ window.__ModuleLoader__.load({
|
|
|
5752
5797
|
* Resolve an authored absolute image path against the document's file API.
|
|
5753
5798
|
* @param base - canonical `document.baseURI` at render time.
|
|
5754
5799
|
* @param value - authored Markdown destination; URL escapes are decoded once.
|
|
5755
|
-
* @returns an absolute
|
|
5800
|
+
* @returns an absolute Web or Desktop file-API URL, or undefined for unsupported
|
|
5756
5801
|
* protocols and non-local paths.
|
|
5757
5802
|
*/
|
|
5758
5803
|
function localPathMediaUrl(base, value) {
|
|
@@ -5886,7 +5931,7 @@ window.__ModuleLoader__.load({
|
|
|
5886
5931
|
});
|
|
5887
5932
|
//#endregion
|
|
5888
5933
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/GenericCommandCard.module.css.mjs
|
|
5889
|
-
const css$7 = "._5OnbHa_root{flex-direction:column;display:flex}._5OnbHa_leading{flex-shrink:0}._5OnbHa_chevron{color:var(--dsw-alias-label-secondary)}._5OnbHa_title{font-weight:400;transition:color .1s}._5OnbHa_separator{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}._5OnbHa_summary{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:auto;transition:color .1s;overflow:hidden}._5OnbHa_row:hover ._5OnbHa_title,._5OnbHa_row:hover ._5OnbHa_summary:not([data-error]){color:var(--dsw-alias-label-primary)}._5OnbHa_summary[data-error],._5OnbHa_body[data-error]{color:var(--dsw-alias-state-error-primary)}._5OnbHa_body{border:.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-markdown-code-block);max-height:260px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block-small);white-space:pre-wrap;
|
|
5934
|
+
const css$7 = "._5OnbHa_root{flex-direction:column;display:flex}._5OnbHa_leading{flex-shrink:0}._5OnbHa_chevron{color:var(--dsw-alias-label-secondary)}._5OnbHa_title{font-weight:400;transition:color .1s}._5OnbHa_separator{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}._5OnbHa_summary{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:auto;transition:color .1s;overflow:hidden}._5OnbHa_row:hover ._5OnbHa_title,._5OnbHa_row:hover ._5OnbHa_summary:not([data-error]){color:var(--dsw-alias-label-primary)}._5OnbHa_summary[data-error],._5OnbHa_body[data-error]{color:var(--dsw-alias-state-error-primary)}._5OnbHa_body{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-markdown-code-block);max-height:260px;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block-small);white-space:pre-wrap;margin:4px 0 4px 4px;padding:12px 16px;overflow:auto}";
|
|
5890
5935
|
const tagId$7 = "@deepseek-ai/dsh-client-ui-chat/GenericCommandCard.module.css";
|
|
5891
5936
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
5892
5937
|
const tag = document.createElement("style");
|
|
@@ -6286,7 +6331,7 @@ window.__ModuleLoader__.load({
|
|
|
6286
6331
|
}
|
|
6287
6332
|
//#endregion
|
|
6288
6333
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/TurnUsagePanel.module.css.mjs
|
|
6289
|
-
const css$5 = ".Q51KRG_root{min-width:0;display:inline-flex}.Q51KRG_root+.Q51KRG_root{margin-left:-6px}.Q51KRG_trigger{min-width:0;height:calc(28px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);font-variant-numeric:tabular-nums;line-height:calc(24px + var(--dsh-content-font-delta,0px));white-space:nowrap;cursor:pointer;background:0 0;border:none;
|
|
6334
|
+
const css$5 = ".Q51KRG_root{min-width:0;display:inline-flex}.Q51KRG_root+.Q51KRG_root{margin-left:-6px}.Q51KRG_trigger{min-width:0;height:calc(28px + var(--dsh-content-font-delta,0px));border-radius:var(--dsw-radius-sm);color:var(--dsw-alias-label-tertiary);font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);font-variant-numeric:tabular-nums;line-height:calc(24px + var(--dsh-content-font-delta,0px));white-space:nowrap;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:6px 8px;display:inline-flex}.Q51KRG_label{text-overflow:ellipsis;min-width:0;overflow:hidden}.Q51KRG_trigger svg{width:calc(15px + var(--dsh-content-font-delta,0px));height:calc(15px + var(--dsh-content-font-delta,0px));flex:none}.Q51KRG_trigger:hover,.Q51KRG_trigger[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-tertiary)}@media (width<=480px){.Q51KRG_trigger{width:calc(28px + var(--dsh-content-font-delta,0px));justify-content:center;padding:6px}.Q51KRG_trigger .Q51KRG_label{display:none}.Q51KRG_root+.Q51KRG_root{margin-left:0}}";
|
|
6290
6335
|
const tagId$5 = "@deepseek-ai/dsh-client-ui-chat/TurnUsagePanel.module.css";
|
|
6291
6336
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
6292
6337
|
const tag = document.createElement("style");
|
|
@@ -6302,7 +6347,7 @@ window.__ModuleLoader__.load({
|
|
|
6302
6347
|
};
|
|
6303
6348
|
//#endregion
|
|
6304
6349
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/stat-dialog.module.css.mjs
|
|
6305
|
-
const css$4 = ".bRhRbq_panel{z-index:1100;box-sizing:border-box;background:var(--dsw-specific-menu);width:max-content;min-width:min(300px,100vw - 24px);max-width:min(440px,100vw - 24px);backdrop-filter:var(--dsw-menu-backdrop-filter);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);box-shadow:var(--dsw-elevation-prominent);color:var(--dsw-alias-label-secondary);cursor:default;border:0;
|
|
6350
|
+
const css$4 = ".bRhRbq_panel{z-index:1100;box-sizing:border-box;border-radius:var(--dsw-radius-lg);background:var(--dsw-specific-menu);width:max-content;min-width:min(300px,100vw - 24px);max-width:min(440px,100vw - 24px);backdrop-filter:var(--dsw-menu-backdrop-filter);--dsw-elevation-stroke-color:var(--dsw-alias-border-l1);box-shadow:var(--dsw-elevation-prominent);color:var(--dsw-alias-label-secondary);cursor:default;border:0;padding:16px;font-size:12px;line-height:18px;position:fixed}.bRhRbq_title{color:var(--dsw-alias-label-primary);justify-content:space-between;gap:16px;margin-bottom:8px;font-weight:500;display:flex}.bRhRbq_titleRule{border-top:.5px solid var(--dsw-alias-border-l2);margin-bottom:10px}.bRhRbq_titleValue{font-variant-numeric:tabular-nums}.bRhRbq_titleLabel{align-items:center;gap:6px;min-width:0;display:inline-flex}.bRhRbq_titleLabel svg{flex:none;width:14px;height:14px}.bRhRbq_details{color:var(--dsw-alias-label-tertiary);grid-template-columns:minmax(76px,auto) minmax(0,1fr);gap:6px 16px;margin:0;display:grid}.bRhRbq_details dt,.bRhRbq_details dd{min-width:0;margin:0}.bRhRbq_details dd{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;text-align:right}.bRhRbq_details .bRhRbq_route{overflow-wrap:anywhere}.bRhRbq_reasoning{color:var(--dsw-alias-label-tertiary);white-space:nowrap}";
|
|
6306
6351
|
const tagId$4 = "@deepseek-ai/dsh-client-ui-chat/stat-dialog.module.css";
|
|
6307
6352
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
6308
6353
|
const tag = document.createElement("style");
|
|
@@ -6560,7 +6605,7 @@ window.__ModuleLoader__.load({
|
|
|
6560
6605
|
}
|
|
6561
6606
|
//#endregion
|
|
6562
6607
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/TurnTriggerNodeView.module.css.mjs
|
|
6563
|
-
const css$2 = ".oz9t_a_root{border:.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-markdown-code-block);
|
|
6608
|
+
const css$2 = ".oz9t_a_root{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-xl);background:var(--dsw-alias-markdown-code-block);min-width:0;transition:background-color .1s}.oz9t_a_root:hover{background:var(--dsw-alias-interactive-bg-hover)}.oz9t_a_header{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:12px 16px;display:flex}.oz9t_a_icon{color:var(--dsw-alias-label-tertiary);flex:none;display:inline-flex}.oz9t_a_title{font:var(--dsw-font-xs-13);flex:none}.oz9t_a_time{color:var(--dsw-alias-label-caption);font:var(--dsw-font-xxs-12);flex:none;margin-left:auto}.oz9t_a_chevron,.oz9t_a_openChevron{color:var(--dsw-alias-label-tertiary);flex:none}.oz9t_a_openChevron{transform:rotate(180deg)}.oz9t_a_body{padding:0 16px 12px 40px}.oz9t_a_explanation{color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xxs-12);margin:8px 0}.oz9t_a_content{white-space:pre-wrap;overflow-wrap:anywhere;max-height:240px;font:var(--dsw-font-xxs-12);overflow:auto}@media (prefers-reduced-motion:reduce){.oz9t_a_root{transition:none}}";
|
|
6564
6609
|
const tagId$2 = "@deepseek-ai/dsh-client-ui-chat/TurnTriggerNodeView.module.css";
|
|
6565
6610
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
6566
6611
|
const tag = document.createElement("style");
|
|
@@ -6777,7 +6822,7 @@ window.__ModuleLoader__.load({
|
|
|
6777
6822
|
}
|
|
6778
6823
|
//#endregion
|
|
6779
6824
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/chat/StatsPills.module.css.mjs
|
|
6780
|
-
const css$1 = ".bOPqQW_root{box-sizing:border-box;min-width:0;max-width:100%;font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));justify-content:center;gap:12px;display:flex}.bOPqQW_anchor{min-width:0;display:inline-flex}.bOPqQW_pill{box-sizing:border-box;max-width:100%;color:var(--dsw-alias-label-tertiary);font:inherit;font-variant-numeric:tabular-nums;line-height:inherit;white-space:nowrap;background:0 0;border:none;border-radius:
|
|
6825
|
+
const css$1 = ".bOPqQW_root{box-sizing:border-box;min-width:0;max-width:100%;font-size:calc(var(--dsh-content-font-size-secondary,13px) - 1px);line-height:calc(20px + var(--dsh-content-font-delta-secondary,0px));justify-content:center;gap:12px;display:flex}.bOPqQW_anchor{min-width:0;display:inline-flex}.bOPqQW_pill{box-sizing:border-box;corner-shape:round;max-width:100%;color:var(--dsw-alias-label-tertiary);font:inherit;font-variant-numeric:tabular-nums;line-height:inherit;white-space:nowrap;background:0 0;border:none;border-radius:999px;align-items:center;gap:6px;padding:1px 8px;display:inline-flex}.bOPqQW_pill svg{flex:none;width:14px;height:14px}button.bOPqQW_pill{cursor:pointer}button.bOPqQW_pill:hover,button.bOPqQW_pill[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}.bOPqQW_label{text-overflow:ellipsis;min-width:0;overflow:hidden}.bOPqQW_sep{color:var(--dsw-alias-separator-primary);margin:0 6px}";
|
|
6781
6826
|
const tagId$1 = "@deepseek-ai/dsh-client-ui-chat/StatsPills.module.css";
|
|
6782
6827
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
6783
6828
|
const tag = document.createElement("style");
|
|
@@ -7598,11 +7643,12 @@ window.__ModuleLoader__.load({
|
|
|
7598
7643
|
//#region lib/types/client/contract/chat-visibility.js
|
|
7599
7644
|
/**
|
|
7600
7645
|
* Exclude system prompts, ordinary Context, and permission commands from visible Chat rows.
|
|
7646
|
+
* Context containing tool changes retains its notice row.
|
|
7601
7647
|
* @param node - projected Chat node.
|
|
7602
7648
|
* @returns whether the node contributes a visible Chat row.
|
|
7603
7649
|
*/
|
|
7604
7650
|
function isVisibleChatNode(node) {
|
|
7605
|
-
return node.visibility === "visible" && node.kind !== "system-prompt" && node.kind !== "context" && !(node.kind === "command" && node.data.name === "permission");
|
|
7651
|
+
return node.visibility === "visible" && node.kind !== "system-prompt" && (node.kind !== "context" || node.data.content.some((block) => block.type === "tool-addition" || block.type === "tool-removal")) && !(node.kind === "command" && node.data.name === "permission");
|
|
7606
7652
|
}
|
|
7607
7653
|
//#endregion
|
|
7608
7654
|
//#region lib/types/client/conversation-nodes/turn-navigation.js
|
|
@@ -9133,6 +9179,18 @@ window.__ModuleLoader__.load({
|
|
|
9133
9179
|
if (event.type !== "user/message" || !isReplacementSurfaceEvent(event)) return false;
|
|
9134
9180
|
return event.data.source.kind === "compact-checkpoint";
|
|
9135
9181
|
}
|
|
9182
|
+
/** Context presentation shared by user-role injections and developer messages. */
|
|
9183
|
+
function contextMessage(event, message) {
|
|
9184
|
+
return {
|
|
9185
|
+
kind: "context",
|
|
9186
|
+
seq: event.seq,
|
|
9187
|
+
time: event.time,
|
|
9188
|
+
content: message.content,
|
|
9189
|
+
source: message.source,
|
|
9190
|
+
producer: contextProducer(message.source),
|
|
9191
|
+
form: contextForm(message.source)
|
|
9192
|
+
};
|
|
9193
|
+
}
|
|
9136
9194
|
/** User, steering, and injected-context message classification Definition. */
|
|
9137
9195
|
const messageDefinition = {
|
|
9138
9196
|
kind: "input-message",
|
|
@@ -9142,12 +9200,11 @@ window.__ModuleLoader__.load({
|
|
|
9142
9200
|
id: String(event.data.id),
|
|
9143
9201
|
role: "start"
|
|
9144
9202
|
} : null;
|
|
9145
|
-
if (event.type === "developer/message") throw new Error("Chat developer messages are not supported yet");
|
|
9146
9203
|
return null;
|
|
9147
9204
|
},
|
|
9148
9205
|
start: (_context, match, reader) => {
|
|
9149
|
-
if (match.event.type !== "user/message") throw new Error("input-message start requires user/message");
|
|
9150
9206
|
const event = match.event;
|
|
9207
|
+
if (event.type !== "user/message") throw new Error("input-message start requires user/message");
|
|
9151
9208
|
if (event.data.source.kind !== "user") {
|
|
9152
9209
|
const nextTurn = reader.previous("inbox-next-turn")?.state;
|
|
9153
9210
|
const nextStep = reader.previous("inbox-next-step")?.state;
|
|
@@ -9155,14 +9212,8 @@ window.__ModuleLoader__.load({
|
|
|
9155
9212
|
const turnStart = location.kind === "step" ? location.turn.start?.seq : void 0;
|
|
9156
9213
|
const idleSteer = location.kind === "step" && location.step.step === 1 && turnStart !== void 0 && (nextStep?.claimSeq ?? -1) > turnStart && (nextTurn?.claimSeq ?? -1) < turnStart && nextStep?.claimedHuman === false && nextStep.currentClaimed.has(String(event.data.id));
|
|
9157
9214
|
return {
|
|
9158
|
-
|
|
9159
|
-
waking: nextTurn?.currentClaimed.has(String(event.data.id)) === true || idleSteer
|
|
9160
|
-
seq: event.seq,
|
|
9161
|
-
time: event.time,
|
|
9162
|
-
content: event.data.content,
|
|
9163
|
-
source: event.data.source,
|
|
9164
|
-
producer: contextProducer(event.data.source),
|
|
9165
|
-
form: contextForm(event.data.source)
|
|
9215
|
+
...contextMessage(event, event.data),
|
|
9216
|
+
waking: nextTurn?.currentClaimed.has(String(event.data.id)) === true || idleSteer
|
|
9166
9217
|
};
|
|
9167
9218
|
}
|
|
9168
9219
|
return reader.previous("inbox-next-step")?.state.currentClaimed.has(String(event.data.id)) === true ? {
|
|
@@ -9186,12 +9237,27 @@ window.__ModuleLoader__.load({
|
|
|
9186
9237
|
return chatNode(context, context.state.kind === "context" && context.start?.event.type === "user/message" && context.state.waking === true ? "turn-trigger" : context.state.kind, context.state.seq, context.state);
|
|
9187
9238
|
}
|
|
9188
9239
|
};
|
|
9240
|
+
/** Developer history uses the input-message lifecycle and context presentation. */
|
|
9241
|
+
const developerMessageDefinition = {
|
|
9242
|
+
...messageDefinition,
|
|
9243
|
+
kind: "developer-message",
|
|
9244
|
+
match: (event) => event.type === "developer/message" ? {
|
|
9245
|
+
id: String(event.data.message.id),
|
|
9246
|
+
role: "start"
|
|
9247
|
+
} : null,
|
|
9248
|
+
start: (_context, match) => {
|
|
9249
|
+
const event = match.event;
|
|
9250
|
+
if (event.type !== "developer/message") throw new Error("developer-message start requires developer/message");
|
|
9251
|
+
return contextMessage(event, event.data.message);
|
|
9252
|
+
}
|
|
9253
|
+
};
|
|
9189
9254
|
/**
|
|
9190
|
-
* Register
|
|
9255
|
+
* Register user, steering, injected-context, and developer message contributions.
|
|
9191
9256
|
* @param ctx - owning UI Conversation context.
|
|
9192
9257
|
*/
|
|
9193
9258
|
function registerMessageConversationNode(ctx) {
|
|
9194
9259
|
ctx.uiConversation.events.register(messageDefinition);
|
|
9260
|
+
ctx.uiConversation.events.register(developerMessageDefinition);
|
|
9195
9261
|
}
|
|
9196
9262
|
//#endregion
|
|
9197
9263
|
//#region lib/types/client/conversation-nodes/request-prompt.js
|
|
@@ -9683,8 +9749,13 @@ window.__ModuleLoader__.load({
|
|
|
9683
9749
|
return location.turn.steps.at(-1)?.step ?? 0;
|
|
9684
9750
|
}
|
|
9685
9751
|
function failureFrom(match) {
|
|
9686
|
-
if (match.event.type !== "turn/end"
|
|
9687
|
-
const
|
|
9752
|
+
if (match.event.type !== "turn/end") return void 0;
|
|
9753
|
+
const reason = match.event.data.reason;
|
|
9754
|
+
const failure = reason.kind === "error" ? reason.error : reason.kind === "aborted" && reason.reason.kind === "hook" && reason.reason.reason === "deepseek-account/signed-out" ? {
|
|
9755
|
+
message: "Stopped because you signed out of DeepSeek.",
|
|
9756
|
+
code: "ACCOUNT_SIGNED_OUT"
|
|
9757
|
+
} : void 0;
|
|
9758
|
+
if (failure === void 0) return void 0;
|
|
9688
9759
|
const display = displayFailure(failure);
|
|
9689
9760
|
return {
|
|
9690
9761
|
seq: match.event.seq,
|
|
@@ -9716,7 +9787,7 @@ window.__ModuleLoader__.load({
|
|
|
9716
9787
|
id: String(event.data.turn),
|
|
9717
9788
|
role: "start"
|
|
9718
9789
|
};
|
|
9719
|
-
if (event.type === "turn/end" && event.data.reason.kind === "error") return {
|
|
9790
|
+
if (event.type === "turn/end" && (event.data.reason.kind === "error" || event.data.reason.kind === "aborted" && event.data.reason.reason.kind === "hook" && event.data.reason.reason.reason === "deepseek-account/signed-out")) return {
|
|
9720
9791
|
id: String(event.data.turn),
|
|
9721
9792
|
role: "update"
|
|
9722
9793
|
};
|
|
@@ -10838,6 +10909,32 @@ window.__ModuleLoader__.load({
|
|
|
10838
10909
|
ctx.uiConversation.groups.register(processGroupDefinition);
|
|
10839
10910
|
}
|
|
10840
10911
|
//#endregion
|
|
10912
|
+
//#region lib/types/client/chat/QuotaNoticeHost.js
|
|
10913
|
+
/**
|
|
10914
|
+
* The frame-wide `shell.overlay` host for quota notices. It holds the one live
|
|
10915
|
+
* notice for the whole app, so leaving the Chat panel does not drop it. A
|
|
10916
|
+
* `shell.quota-notice` entry may replace the generic Toast for codes it claims.
|
|
10917
|
+
*/
|
|
10918
|
+
/**
|
|
10919
|
+
* @param props - the live notice, its dismissal, the chain outlet, and the locale seat.
|
|
10920
|
+
* @returns the notice on display, or null while none is live.
|
|
10921
|
+
*/
|
|
10922
|
+
function QuotaNoticeHost({ useNotice, dismissNotice, keepNoticeOpen, renderSlotChain, t }) {
|
|
10923
|
+
const notice = useNotice((current) => current);
|
|
10924
|
+
if (notice === null) return null;
|
|
10925
|
+
const owner = {
|
|
10926
|
+
code: notice.code,
|
|
10927
|
+
message: t("message.failure.quota"),
|
|
10928
|
+
dismiss: dismissNotice,
|
|
10929
|
+
keepOpen: keepNoticeOpen
|
|
10930
|
+
};
|
|
10931
|
+
return (0, react_jsx_runtime.jsx)(react.Fragment, { children: renderSlotChain("shell.quota-notice", owner, { fallback: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
|
|
10932
|
+
text: owner.message,
|
|
10933
|
+
icon: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, { size: 18 }),
|
|
10934
|
+
onDone: dismissNotice
|
|
10935
|
+
}) }) }, `quota-notice-${String(notice.seq)}`);
|
|
10936
|
+
}
|
|
10937
|
+
//#endregion
|
|
10841
10938
|
//#region ../../../vendor/cosmokit/lib/index.js
|
|
10842
10939
|
/** Return true when a value is `null` or `undefined`. */
|
|
10843
10940
|
function isNullable(value) {
|
|
@@ -11766,7 +11863,7 @@ window.__ModuleLoader__.load({
|
|
|
11766
11863
|
Schema.object(ChatSettingsFields);
|
|
11767
11864
|
//#endregion
|
|
11768
11865
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-chat/src/client/settings/PreferenceRow.module.css.mjs
|
|
11769
|
-
const css = "._2XZxNq_row{border-bottom:.5px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}._2XZxNq_rowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}._2XZxNq_title{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}._2XZxNq_desc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}._2XZxNq_selector{background:var(--dsw-alias-bg-module-platform);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;
|
|
11866
|
+
const css = "._2XZxNq_row{border-bottom:.5px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}._2XZxNq_rowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}._2XZxNq_title{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}._2XZxNq_desc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}._2XZxNq_selector{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-bg-module-platform);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}._2XZxNq_selector:hover{background:var(--dsw-alias-interactive-bg-hover)}._2XZxNq_chevron{flex:none}";
|
|
11770
11867
|
const tagId = "@deepseek-ai/dsh-client-ui-chat/PreferenceRow.module.css";
|
|
11771
11868
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
11772
11869
|
const tag = document.createElement("style");
|
|
@@ -12088,10 +12185,38 @@ window.__ModuleLoader__.load({
|
|
|
12088
12185
|
* @param ctx - Client root context.
|
|
12089
12186
|
*/
|
|
12090
12187
|
function apply(ctx) {
|
|
12188
|
+
const quotaNotice = (0, _deepseek_ai_dsh_client_store.createSnapshotStore)(null);
|
|
12189
|
+
let quotaNoticeSeq = 0;
|
|
12190
|
+
const quotaNoticeHolds = /* @__PURE__ */ new Set();
|
|
12091
12191
|
const chatSources = /* @__PURE__ */ new WeakMap();
|
|
12192
|
+
const quotaSubscriptions = /* @__PURE__ */ new Set();
|
|
12193
|
+
ctx.effect(() => async () => {
|
|
12194
|
+
await Promise.all([...quotaSubscriptions].map((dispose) => dispose()));
|
|
12195
|
+
}, "ui-chat: live quota notices");
|
|
12092
12196
|
const chatSource = (binding) => {
|
|
12093
12197
|
let source = chatSources.get(binding);
|
|
12094
12198
|
if (source === void 0) {
|
|
12199
|
+
const dispose = binding.ctx.effect(() => {
|
|
12200
|
+
const stop = binding.eventSource.subscribe(() => {
|
|
12201
|
+
const { change } = binding.eventSource.getSnapshot();
|
|
12202
|
+
if (change.kind !== "append") return;
|
|
12203
|
+
for (const { event } of change.entries) {
|
|
12204
|
+
if (event.type !== "turn/end" || event.data.reason.kind !== "error") continue;
|
|
12205
|
+
const { code } = event.data.reason.error;
|
|
12206
|
+
if (quotaNoticeHolds.size > 0 || code !== "QUOTA" && code !== "ACCOUNT_QUOTA") continue;
|
|
12207
|
+
quotaNotice.set({
|
|
12208
|
+
code,
|
|
12209
|
+
seq: ++quotaNoticeSeq
|
|
12210
|
+
});
|
|
12211
|
+
}
|
|
12212
|
+
});
|
|
12213
|
+
return () => {
|
|
12214
|
+
stop();
|
|
12215
|
+
chatSources.delete(binding);
|
|
12216
|
+
quotaSubscriptions.delete(dispose);
|
|
12217
|
+
};
|
|
12218
|
+
}, "ui-chat: Provider binding quota notices");
|
|
12219
|
+
quotaSubscriptions.add(dispose);
|
|
12095
12220
|
const target = ctx.uiConversation.binding(binding).target("chat");
|
|
12096
12221
|
source = {
|
|
12097
12222
|
getSnapshot: () => target.getSnapshot() ?? EMPTY_CHAT_SNAPSHOT,
|
|
@@ -12249,6 +12374,30 @@ window.__ModuleLoader__.load({
|
|
|
12249
12374
|
}
|
|
12250
12375
|
}, ChatView);
|
|
12251
12376
|
});
|
|
12377
|
+
ctx.slots.inject("shell.overlay", () => ctx.slots.register({
|
|
12378
|
+
name: "shell.overlay",
|
|
12379
|
+
id: "chat.quota-notice",
|
|
12380
|
+
locale: NS,
|
|
12381
|
+
children: { "shell.quota-notice": {
|
|
12382
|
+
kind: "chain",
|
|
12383
|
+
scope: "root"
|
|
12384
|
+
} },
|
|
12385
|
+
inject: () => ({
|
|
12386
|
+
hooks: { notice: quotaNotice },
|
|
12387
|
+
dismissNotice: () => {
|
|
12388
|
+
quotaNoticeHolds.clear();
|
|
12389
|
+
quotaNotice.set(null);
|
|
12390
|
+
},
|
|
12391
|
+
keepNoticeOpen: () => {
|
|
12392
|
+
if (quotaNotice.getSnapshot() === null) return () => {};
|
|
12393
|
+
const token = Symbol("ui-chat quota notice hold");
|
|
12394
|
+
quotaNoticeHolds.add(token);
|
|
12395
|
+
return () => {
|
|
12396
|
+
quotaNoticeHolds.delete(token);
|
|
12397
|
+
};
|
|
12398
|
+
}
|
|
12399
|
+
})
|
|
12400
|
+
}, QuotaNoticeHost));
|
|
12252
12401
|
ctx.slots.inject("conversation.composer.dock", () => ctx.slots.register({
|
|
12253
12402
|
name: "conversation.composer.dock",
|
|
12254
12403
|
id: "stats",
|
|
@@ -8,7 +8,7 @@ import type { AssistantBlock } from '../contract/snapshot.ts';
|
|
|
8
8
|
* Resolve an authored absolute image path against the document's file API.
|
|
9
9
|
* @param base - canonical `document.baseURI` at render time.
|
|
10
10
|
* @param value - authored Markdown destination; URL escapes are decoded once.
|
|
11
|
-
* @returns an absolute
|
|
11
|
+
* @returns an absolute Web or Desktop file-API URL, or undefined for unsupported
|
|
12
12
|
* protocols and non-local paths.
|
|
13
13
|
*/
|
|
14
14
|
export declare function localPathMediaUrl(base: string, value: string): string | undefined;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { QuotaNoticeHostProps } from '../contract/slots.ts';
|
|
2
|
+
/**
|
|
3
|
+
* @param props - the live notice, its dismissal, the chain outlet, and the locale seat.
|
|
4
|
+
* @returns the notice on display, or null while none is live.
|
|
5
|
+
*/
|
|
6
|
+
export declare function QuotaNoticeHost({ useNotice, dismissNotice, keepNoticeOpen, renderSlotChain, t }: QuotaNoticeHostProps): import("react").JSX.Element | null;
|
|
7
|
+
//# sourceMappingURL=QuotaNoticeHost.d.ts.map
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import type { ChatNode } from './chat-nodes.ts';
|
|
3
3
|
/**
|
|
4
4
|
* Exclude system prompts, ordinary Context, and permission commands from visible Chat rows.
|
|
5
|
+
* Context containing tool changes retains its notice row.
|
|
5
6
|
* @param node - projected Chat node.
|
|
6
7
|
* @returns whether the node contributes a visible Chat row.
|
|
7
8
|
*/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { MessageId } from '@deepseek-ai/dsh-llm/brand';
|
|
3
3
|
import type { SessionId, SessionSeq } from '@deepseek-ai/dsh-session/types';
|
|
4
4
|
import type { CommandNode, CompactionSummaryNode, ConversationLocationDataStore, ConversationTurnDataMap, ConversationGroupData, GroupSnapshot, MessageImageLoader, MessageImagesOwnerProps, RenderMessageImages, TurnLocation } from '@deepseek-ai/dsh-client-ui-conversation/client';
|
|
5
|
-
import type { InjectFace, KeyedSnapshotSelectorHook, PropsLocale, PropsRenderSlots, PropsRuntime, PropsStore, SlotHookFactory, SnapshotSelectorHook } from '@deepseek-ai/dsh-client-ui-slots';
|
|
5
|
+
import type { HostObservable, InjectFace, KeyedSnapshotSelectorHook, PropsLocale, PropsRenderSlots, PropsRuntime, PropsStore, SlotHookFactory, SnapshotSelectorHook } from '@deepseek-ai/dsh-client-ui-slots';
|
|
6
6
|
import type { ObservableSnapshot } from '@deepseek-ai/dsh-client-store';
|
|
7
7
|
import type { MarkdownFileMentions } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
8
8
|
import type { createChatStore } from '../stores.ts';
|
|
@@ -39,6 +39,47 @@ export interface TurnTailOwnerProps {
|
|
|
39
39
|
export interface AssistantActionOwnerProps {
|
|
40
40
|
messageId: MessageId;
|
|
41
41
|
}
|
|
42
|
+
/** Stable quota failure codes retained in the Session log; both raise the frame-wide notice. */
|
|
43
|
+
export type QuotaNoticeCode = 'QUOTA' | 'ACCOUNT_QUOTA';
|
|
44
|
+
/** The notice on display; `seq` keys remounts so an unretained later notice restarts its transient display. */
|
|
45
|
+
export interface QuotaNoticeState {
|
|
46
|
+
/** Stable failure code retained in the Session log. */
|
|
47
|
+
code: QuotaNoticeCode;
|
|
48
|
+
/** Per-publication sequence; the host keys its surface by it. */
|
|
49
|
+
seq: number;
|
|
50
|
+
}
|
|
51
|
+
/** Owner currency of one quota notice offered to the frame-wide chain. */
|
|
52
|
+
export interface QuotaNoticeOwnerProps {
|
|
53
|
+
/** Stable failure code retained in the Session log. */
|
|
54
|
+
code: QuotaNoticeCode;
|
|
55
|
+
/** Provider-neutral notice copy in the active locale. */
|
|
56
|
+
message: string;
|
|
57
|
+
/** Take the notice down. */
|
|
58
|
+
dismiss: () => void;
|
|
59
|
+
/**
|
|
60
|
+
* Prevent later quota failures from replacing this notice. Dismissal clears
|
|
61
|
+
* all holds; releasing the last hold resumes future notices without replay.
|
|
62
|
+
* Callers must release on unmount.
|
|
63
|
+
* @returns idempotent release that cannot clear another hold.
|
|
64
|
+
*/
|
|
65
|
+
keepOpen: () => () => void;
|
|
66
|
+
}
|
|
67
|
+
/** Quota notice host share: the notice on display and its dismissal. */
|
|
68
|
+
export interface QuotaNoticeInjected {
|
|
69
|
+
hooks: {
|
|
70
|
+
/** The notice on display, or none. */
|
|
71
|
+
notice: HostObservable<QuotaNoticeState | null>;
|
|
72
|
+
};
|
|
73
|
+
/** Take the notice down. */
|
|
74
|
+
dismissNotice: () => void;
|
|
75
|
+
/**
|
|
76
|
+
* Acquire a hold with the lifecycle defined by QuotaNoticeOwnerProps.keepOpen.
|
|
77
|
+
* @returns idempotent release, or a no-op when no notice is live.
|
|
78
|
+
*/
|
|
79
|
+
keepNoticeOpen: () => () => void;
|
|
80
|
+
}
|
|
81
|
+
/** Full props of the Chat-owned frame-wide quota notice host. */
|
|
82
|
+
export type QuotaNoticeHostProps = PropsRuntime<'shell.overlay'> & PropsLocale<'chat'> & PropsRenderSlots<'shell.quota-notice'> & InjectFace<QuotaNoticeInjected>;
|
|
42
83
|
/** Optional prose file-mention provider consumed by Chat. */
|
|
43
84
|
export interface ChatFileMentions {
|
|
44
85
|
/**
|
|
@@ -243,6 +284,18 @@ declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
|
243
284
|
scope: 'session';
|
|
244
285
|
owner: AssistantActionOwnerProps;
|
|
245
286
|
};
|
|
287
|
+
/**
|
|
288
|
+
* Frame-wide quota notice chain. The Chat-owned host in `shell.overlay`
|
|
289
|
+
* offers the one live notice; the first entry whose selector claims its
|
|
290
|
+
* code takes over the surface, and the all-decline case renders the host's
|
|
291
|
+
* generic warning Toast. The host lives outside the Chat panel, so a notice
|
|
292
|
+
* survives switching or closing the panel that reported it.
|
|
293
|
+
*/
|
|
294
|
+
'shell.quota-notice': {
|
|
295
|
+
kind: 'chain';
|
|
296
|
+
scope: 'root';
|
|
297
|
+
owner: QuotaNoticeOwnerProps;
|
|
298
|
+
};
|
|
246
299
|
}
|
|
247
300
|
}
|
|
248
301
|
//# sourceMappingURL=slots.d.ts.map
|
|
@@ -29,8 +29,10 @@ declare module '../contract/chat-nodes.ts' {
|
|
|
29
29
|
}
|
|
30
30
|
/** User, steering, and injected-context message classification Definition. */
|
|
31
31
|
export declare const messageDefinition: ConversationNodeDefinition<MessageNode>;
|
|
32
|
+
/** Developer history uses the input-message lifecycle and context presentation. */
|
|
33
|
+
export declare const developerMessageDefinition: ConversationNodeDefinition<MessageNode>;
|
|
32
34
|
/**
|
|
33
|
-
* Register
|
|
35
|
+
* Register user, steering, injected-context, and developer message contributions.
|
|
34
36
|
* @param ctx - owning UI Conversation context.
|
|
35
37
|
*/
|
|
36
38
|
export declare function registerMessageConversationNode(ctx: Context): void;
|
|
@@ -18,7 +18,7 @@ export type { ChatStoreState, ToolCallId, TurnProcessViewEntry } from './contrac
|
|
|
18
18
|
export type { TranscriptViewRowInjected, TranscriptViewRowProps } from './settings/TranscriptViewRow.tsx';
|
|
19
19
|
export type { TranscriptViewMode } from '../chat-settings.ts';
|
|
20
20
|
export type { ChatPresentationPolicy } from './presentation-policy.ts';
|
|
21
|
-
export type { AssistantActionOwnerProps, ChatFileMentions, ChatNodeHookContext, ChatNodeInjected, ChatNodeOwnerProps, ChatNodeViewProps, ChatScrollPosition, ChatStore, ChatViewInjected, ChatViewSlotProps, CommandRowOwnerProps, CommandRowProps, MessageImagesProps, OpenFileOptions, PresentationInjected, TurnProcessOwnerProps, TurnTailOwnerProps, UseChat, UseChatNodeTurnData, UseDisclosure, UsePresentation, } from './contract/slots.ts';
|
|
21
|
+
export type { AssistantActionOwnerProps, ChatFileMentions, ChatNodeHookContext, ChatNodeInjected, ChatNodeOwnerProps, ChatNodeViewProps, ChatScrollPosition, ChatStore, ChatViewInjected, ChatViewSlotProps, CommandRowOwnerProps, CommandRowProps, MessageImagesProps, OpenFileOptions, PresentationInjected, QuotaNoticeCode, QuotaNoticeHostProps, QuotaNoticeInjected, QuotaNoticeOwnerProps, QuotaNoticeState, TurnProcessOwnerProps, TurnTailOwnerProps, UseChat, UseChatNodeTurnData, UseDisclosure, UsePresentation, } from './contract/slots.ts';
|
|
22
22
|
export type { TurnProcessSpec, } from './contract/turn-process.ts';
|
|
23
23
|
export type { ChatKey } from './locale.ts';
|
|
24
24
|
export type { ConversationContext, ConversationContextOriginKind } from './model/conversation-context.ts';
|
|
@@ -109,6 +109,14 @@ export declare const zh: {
|
|
|
109
109
|
'message.extraBlock': string;
|
|
110
110
|
'message.systemPrompt': string;
|
|
111
111
|
'message.systemPromptUpdate': string;
|
|
112
|
+
'message.toolAdded': string;
|
|
113
|
+
'message.toolRemoved': string;
|
|
114
|
+
'message.toolsAdded': string;
|
|
115
|
+
'message.toolsAddedCount': string;
|
|
116
|
+
'message.toolsChanged': string;
|
|
117
|
+
'message.toolsRemoved': string;
|
|
118
|
+
'message.toolsRemovedCount': string;
|
|
119
|
+
'message.toolsUpdated': string;
|
|
112
120
|
'message.contextInjection': string;
|
|
113
121
|
'message.contextRecall': string;
|
|
114
122
|
'message.referenceSummary': string;
|
|
@@ -151,6 +159,10 @@ export declare const zh: {
|
|
|
151
159
|
'message.retry.delay': string;
|
|
152
160
|
'message.retry.failure': string;
|
|
153
161
|
'message.failure.auth': string;
|
|
162
|
+
'message.accountStopped': string;
|
|
163
|
+
'message.failure.accountSignedOut': string;
|
|
164
|
+
'message.failure.accountSignInRequired': string;
|
|
165
|
+
'message.failure.quota': string;
|
|
154
166
|
'message.turnError': string;
|
|
155
167
|
'message.maxTokens': string;
|
|
156
168
|
'message.maxTokens.hint': string;
|
|
@@ -288,6 +300,14 @@ export declare const en: {
|
|
|
288
300
|
'message.extraBlock': string;
|
|
289
301
|
'message.systemPrompt': string;
|
|
290
302
|
'message.systemPromptUpdate': string;
|
|
303
|
+
'message.toolAdded': string;
|
|
304
|
+
'message.toolRemoved': string;
|
|
305
|
+
'message.toolsAdded': string;
|
|
306
|
+
'message.toolsAddedCount': string;
|
|
307
|
+
'message.toolsChanged': string;
|
|
308
|
+
'message.toolsRemoved': string;
|
|
309
|
+
'message.toolsRemovedCount': string;
|
|
310
|
+
'message.toolsUpdated': string;
|
|
291
311
|
'message.contextInjection': string;
|
|
292
312
|
'message.contextRecall': string;
|
|
293
313
|
'message.referenceSummary': string;
|
|
@@ -330,6 +350,10 @@ export declare const en: {
|
|
|
330
350
|
'message.retry.delay': string;
|
|
331
351
|
'message.retry.failure': string;
|
|
332
352
|
'message.failure.auth': string;
|
|
353
|
+
'message.accountStopped': string;
|
|
354
|
+
'message.failure.accountSignedOut': string;
|
|
355
|
+
'message.failure.accountSignInRequired': string;
|
|
356
|
+
'message.failure.quota': string;
|
|
333
357
|
'message.turnError': string;
|
|
334
358
|
'message.maxTokens': string;
|
|
335
359
|
'message.maxTokens.hint': string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-chat",
|
|
3
3
|
"description": "Chat Conversation target, node definitions, renderers, and details surface",
|
|
4
|
-
"version": "0.1.7-rc.
|
|
4
|
+
"version": "0.1.7-rc.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -53,42 +53,42 @@
|
|
|
53
53
|
"@types/react-dom": "~18.3.0",
|
|
54
54
|
"react": "^18.2.0",
|
|
55
55
|
"react-dom": "^18.2.0",
|
|
56
|
+
"@deepseek-ai/dsh-agent": "0.1.7-rc.2",
|
|
57
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2",
|
|
58
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2",
|
|
59
|
+
"@deepseek-ai/dsh-api-workspace-files": "0.1.7-rc.2",
|
|
60
|
+
"@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.2",
|
|
56
61
|
"@deepseek-ai/cordis": "~4.0.4",
|
|
57
|
-
"@deepseek-ai/dsh-
|
|
58
|
-
"@deepseek-ai/dsh-
|
|
59
|
-
"@deepseek-ai/dsh-
|
|
60
|
-
"@deepseek-ai/dsh-
|
|
61
|
-
"@deepseek-ai/dsh-
|
|
62
|
-
"@deepseek-ai/dsh-
|
|
63
|
-
"@deepseek-ai/dsh-client-
|
|
64
|
-
"@deepseek-ai/dsh-client-
|
|
65
|
-
"@deepseek-ai/dsh-client-ui-
|
|
66
|
-
"@deepseek-ai/dsh-client-ui-
|
|
67
|
-
"@deepseek-ai/dsh-client-ui-
|
|
68
|
-
"@deepseek-ai/dsh-client-ui-
|
|
69
|
-
"@deepseek-ai/dsh-client-ui-
|
|
70
|
-
"@deepseek-ai/dsh-
|
|
71
|
-
"@deepseek-ai/dsh-client-ui-
|
|
72
|
-
"@deepseek-ai/dsh-client-ui-
|
|
73
|
-
"@deepseek-ai/dsh-
|
|
74
|
-
"@deepseek-ai/dsh-
|
|
75
|
-
"@deepseek-ai/dsh-
|
|
76
|
-
"@deepseek-ai/dsh-
|
|
77
|
-
"@deepseek-ai/dsh-
|
|
78
|
-
"@deepseek-ai/dsh-
|
|
79
|
-
"@deepseek-ai/dsh-
|
|
80
|
-
"@deepseek-ai/dsh-
|
|
81
|
-
"@deepseek-ai/dsh-
|
|
82
|
-
"@deepseek-ai/dsh-session-stats": "0.1.7-rc.
|
|
83
|
-
"@deepseek-ai/dsh-
|
|
84
|
-
"@deepseek-ai/dsh-
|
|
85
|
-
"@deepseek-ai/dsh-
|
|
86
|
-
"@deepseek-ai/dsh-tools": "0.1.7-rc.
|
|
87
|
-
"@deepseek-ai/dsh-llm-retry": "0.1.7-rc.1",
|
|
88
|
-
"@deepseek-ai/dsh-util-workspace-path": "0.1.7-rc.1",
|
|
89
|
-
"@deepseek-ai/dsh-settings": "0.1.7-rc.1",
|
|
90
|
-
"@deepseek-ai/dsh-compaction": "0.1.7-rc.1",
|
|
91
|
-
"@deepseek-ai/dsh-util-values": "0.1.7-rc.1"
|
|
62
|
+
"@deepseek-ai/dsh-attachment": "0.1.7-rc.2",
|
|
63
|
+
"@deepseek-ai/dsh-client-locale": "0.1.7-rc.2",
|
|
64
|
+
"@deepseek-ai/dsh-brand": "0.1.7-rc.2",
|
|
65
|
+
"@deepseek-ai/dsh-client-store": "0.1.7-rc.2",
|
|
66
|
+
"@deepseek-ai/dsh-client-ui-approval": "0.1.7-rc.2",
|
|
67
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2",
|
|
68
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "0.1.7-rc.2",
|
|
69
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.1.7-rc.2",
|
|
70
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2",
|
|
71
|
+
"@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "0.1.7-rc.2",
|
|
72
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.7-rc.2",
|
|
73
|
+
"@deepseek-ai/dsh-client-ui-sidebar-browser": "0.1.7-rc.2",
|
|
74
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2",
|
|
75
|
+
"@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.2",
|
|
76
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2",
|
|
77
|
+
"@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2",
|
|
78
|
+
"@deepseek-ai/dsh-compaction": "0.1.7-rc.2",
|
|
79
|
+
"@deepseek-ai/dsh-llm-retry": "0.1.7-rc.2",
|
|
80
|
+
"@deepseek-ai/dsh-llm": "0.1.7-rc.2",
|
|
81
|
+
"@deepseek-ai/dsh-commands": "0.1.7-rc.2",
|
|
82
|
+
"@deepseek-ai/dsh-session": "0.1.7-rc.2",
|
|
83
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2",
|
|
84
|
+
"@deepseek-ai/dsh-session-turn-outline": "0.1.7-rc.2",
|
|
85
|
+
"@deepseek-ai/dsh-token-meter": "0.1.7-rc.2",
|
|
86
|
+
"@deepseek-ai/dsh-subagent": "0.1.7-rc.2",
|
|
87
|
+
"@deepseek-ai/dsh-session-stats": "0.1.7-rc.2",
|
|
88
|
+
"@deepseek-ai/dsh-util-workspace-path": "0.1.7-rc.2",
|
|
89
|
+
"@deepseek-ai/dsh-util-values": "0.1.7-rc.2",
|
|
90
|
+
"@deepseek-ai/dsh-settings": "0.1.7-rc.2",
|
|
91
|
+
"@deepseek-ai/dsh-tools": "0.1.7-rc.2"
|
|
92
92
|
},
|
|
93
93
|
"dependencies": {
|
|
94
94
|
"@deepseek-ai/schemastery": "~3.18.4"
|