dsh-input-traffic 0.2.7 → 0.2.8

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.en.md CHANGED
@@ -31,6 +31,7 @@ A cordis client plugin assembled via the `dsh plugin` command and a bundle patch
31
31
  - **Edits are never lost**: if saving an edit fails (the agent already claimed the message), the edited content automatically moves back to the composer; an occupied draft is never overwritten.
32
32
  - **Peak-hour freeze**: a "Freeze session" button on the composer's right — near DeepSeek peak pricing hours (09:00-12:00, 14:00-18:00) it pauses API consumption: the current turn finishes naturally, then the unsent queue is frozen; "Resume session" continues during off-peak hours.
33
33
  - **Official behavior takeover**: while the plugin is mounted, the official "busy-Enter behavior" settings row is hidden (Enter stays queue-later).
34
+ - **Day/night auto-adapt**: the dock and the freeze button use dsh's official semantic tokens (`--dsw-alias-*`) exclusively, so they follow the system dark mode / dsh dark theme automatically — in dark mode they switch to a **dark-gray surface with inverted (white) text**, with no configuration (see "Day/night mode").
34
35
 
35
36
  ## UI preview
36
37
 
@@ -95,6 +96,14 @@ When editing a queued message (inline):
95
96
  - **Shortcuts**: `Enter` saves, `Shift+Enter` inserts a newline, `Esc` cancels (composition input is protected from accidental saves);
96
97
  - **Failure fallback**: if the save fails because the agent already claimed the message (e.g. "started sending"), the edited content automatically moves back to the composer with a notice — **nothing is lost**; the back-fill only happens when the composer is empty, so an existing draft is never overwritten.
97
98
 
99
+ ## Day/night mode (automatic dark adaptation)
100
+
101
+ The dock and the freeze button **no longer use hand-drawn colors** — they reference dsh's official semantic tokens (`--dsw-alias-*`: `bg-layer-*` / `border-l*` / `label-*` / `interactive-bg-hover` / `state-success|warn|error-primary`) maintained by the dsh theme system:
102
+
103
+ - **Automatic follow**: dsh's default theme preference is "system" — when the OS switches to dark mode (or you pick a dark theme in dsh settings), `body[data-ds-dark-theme]` takes effect and the tokens switch to the dark palette, so the dock becomes a **dark-gray surface with inverted (white) text** and the tier colors use the official dark-adapted values (contrast is guaranteed by dsh);
104
+ - **No configuration**: the plugin does not watch the system and adds no settings — light/dark is fully delegated to the dsh theme; the day appearance is unchanged;
105
+ - **Scope**: the waiting-area dock (including the frozen banner / frozen list) and the "Freeze session" button on the composer's right.
106
+
98
107
  ## Installation
99
108
 
100
109
  ```sh
package/README.md CHANGED
@@ -31,6 +31,7 @@
31
31
  - **编辑不丢内容**:编辑保存失败(消息已被 agent 认领)时,编辑内容自动退回主输入框,不会丢失;主输入框已有内容时不覆盖。
32
32
  - **高峰期冻结**:输入框右侧「冻结会话」按钮——邻近 DeepSeek 高峰收费时段(9:00-12:00、14:00-18:00)时主动暂停 API 消耗:当前轮次自然完成后暂停,未发送队列冻结保存;「恢复会话」后在非高价时间继续处理。
33
33
  - **接管官方行为**:插件生效时,官方设置面板的「繁忙时 Enter 键行为」设置行不再显示(Enter 行为固定为绿色排队)。
34
+ - **日夜自动适配**:队列框与冻结按钮全部改用 dsh 官方语义 token(`--dsw-alias-*`),自动跟随系统深色模式 / dsh 暗色主题——深色下自动变为**深灰底 + 白色反色字**,无需任何设置(见「日夜模式」)。
34
35
 
35
36
  ## 界面预览
36
37
 
@@ -95,6 +96,14 @@
95
96
  - **快捷键**:`Enter` 保存,`Shift+Enter` 换行,`Esc` 取消(中文输入法组合期间不会误保存);
96
97
  - **失败兜底**:保存时若消息已被 agent 认领(如「已经开始发送」),编辑内容自动退回主输入框并提示,**不会丢失**;仅当主输入框为空时回填,已有草稿不被覆盖。
97
98
 
99
+ ## 日夜模式(自动适配深色)
100
+
101
+ 队列框与冻结按钮的配色**不再使用自绘颜色**,全部改为引用 dsh 官方语义 token(`--dsw-alias-*`:`bg-layer-*` / `border-l*` / `label-*` / `interactive-bg-hover` / `state-success|warn|error-primary`)。这些 token 由 dsh 主题系统统一维护:
102
+
103
+ - **自动跟随**:dsh 默认主题偏好为「跟随系统」——系统切到深色模式(或在 dsh 设置里手动选暗色主题)时,`body[data-ds-dark-theme]` 生效,token 自动切换为深色盘,队列框变为**深灰底 + 白色反色字**,三档色用官方暗色适配值(对比度由 dsh 保证);
104
+ - **无需配置**:插件本身不监听系统、不新增设置项——深浅完全交给 dsh 主题,白天外观保持不变;
105
+ - **范围**:等待区 dock(含冻结横幅 / 冻结列表)与输入框右侧「冻结会话」按钮。
106
+
98
107
  ## 安装
99
108
 
100
109
  ```sh
@@ -119,7 +128,7 @@ dsh web
119
128
  npm install --legacy-peer-deps # @deepseek-ai client 包链在 npm 上不完整,仅装工具链
120
129
  npm run build # tsc(lib/types)+ tsdown(lib/index.js + lib/client.js)
121
130
  node examples/verify-assembly.mjs # 12 项装配断言
122
- npm test # 45 项 vitest 组件测试
131
+ npm test # 36 项 vitest 组件测试
123
132
  npm run lint # ESLint(src + tests,flat config)
124
133
  npm run verify # 一体化门禁:lint + test + build + verify-assembly
125
134
  ```
package/lib/client.js CHANGED
@@ -195,7 +195,7 @@ window.__ModuleLoader__.load({
195
195
  }
196
196
  //#endregion
197
197
  //#region \0dsh-css:E:\test\rewrite-agently\dsh-input-traffic\src\client\steer-queue-dock.module.css.mjs
198
- const css$1 = ".cev0eq_dock{width:100%}.cev0eq_panel{background:var(--ds-color-surface,#fffc);border:1px solid var(--ds-color-border,#00000014);border-radius:10px;overflow:hidden}.cev0eq_toolbar{border-bottom:1px solid var(--ds-color-border,#0000000f);align-items:center;gap:8px;padding:4px 8px;display:flex}.cev0eq_header{color:var(--ds-color-text-secondary,#6b7280);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:2px 6px;font-size:12px;display:inline-flex}.cev0eq_header:disabled{cursor:default}.cev0eq_lead{color:var(--ds-color-text-tertiary,#9ca3af);display:inline-flex}.cev0eq_count{font-weight:600}.cev0eq_chevron{color:var(--ds-color-text-tertiary,#9ca3af);display:inline-flex}.cev0eq_toolbarActions{margin-left:auto}.cev0eq_clear{color:var(--ds-color-text-secondary,#6b7280);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:12px;display:inline-flex}.cev0eq_freeze{border:1px solid var(--ds-color-border,#0000001f);color:var(--ds-color-text-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:12px;display:inline-flex}.cev0eq_freeze[aria-pressed=true]{border-color:var(--ds-steer-green,#30a46c);color:var(--ds-steer-green,#30a46c)}.cev0eq_freeze:hover:not(:disabled){background:var(--ds-color-surface-hover,#0000000a)}.cev0eq_freeze:disabled{opacity:.5;cursor:default}.cev0eq_frozenBanner{border-bottom:1px solid var(--ds-color-border,#0000000f);background:color-mix(in srgb, var(--ds-steer-green,#30a46c) 8%, transparent);color:var(--ds-steer-green,#30a46c);padding:4px 10px;font-size:12px}.cev0eq_frozenList{margin:0;padding:4px;list-style:none}.cev0eq_frozenRow{border-radius:6px;align-items:center;gap:8px;padding:4px 6px;display:flex}.cev0eq_frozenMark{color:var(--ds-color-text-tertiary,#9ca3af);flex:none;margin-left:auto;font-size:11px}.cev0eq_clear:hover:not(:disabled){border-color:var(--ds-color-border,#0000001f);background:var(--ds-color-surface-hover,#0000000a)}.cev0eq_clear:disabled{opacity:.5;cursor:default}.cev0eq_clearConfirm{border-color:var(--ds-steer-red,#e5484d);color:var(--ds-steer-red,#e5484d)}.cev0eq_clearConfirm:hover:not(:disabled){border-color:var(--ds-steer-red,#e5484d);background:color-mix(in srgb, var(--ds-steer-red,#e5484d) 8%, transparent)}.cev0eq_clearCancel{color:var(--ds-color-text-secondary,#6b7280);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:12px;display:inline-flex}.cev0eq_clearCancel:hover:not(:disabled){background:var(--ds-color-surface-hover,#0000000a)}.cev0eq_clearLabel{font-size:12px}.cev0eq_list{margin:0;padding:4px;list-style:none}.cev0eq_row{border-radius:6px;align-items:center;gap:8px;padding:4px 6px;display:flex}.cev0eq_row[draggable=true]{cursor:grab}.cev0eq_row[draggable=true]:active{cursor:grabbing}.cev0eq_rowDragOver{outline:2px dashed var(--ds-color-border-strong,#00000040);outline-offset:-2px;background:var(--ds-color-surface-hover,#0000000d)}.cev0eq_row:hover{background:var(--ds-color-surface-hover,#00000008)}.cev0eq_row[data-editing]{align-items:flex-start}.cev0eq_preview{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ds-color-text,#1f2937);flex:1;font-size:13px;overflow:hidden}.cev0eq_badge{white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:4px;padding:1px 6px;font-size:11px;line-height:16px;display:inline-flex}.cev0eq_badgeLabel{color:inherit}.cev0eq_badgeNow{color:var(--ds-steer-red,#e5484d);background:color-mix(in srgb, var(--ds-steer-red,#e5484d) 10%, transparent)}.cev0eq_badgeNext{color:var(--ds-steer-yellow,#e8a33d);background:color-mix(in srgb, var(--ds-steer-yellow,#e8a33d) 12%, transparent)}.cev0eq_badgeLater{color:var(--ds-steer-green,#30a46c);background:color-mix(in srgb, var(--ds-steer-green,#30a46c) 12%, transparent)}.cev0eq_badgeNow .cev0eq_dot{background:var(--ds-steer-red,#e5484d)}.cev0eq_badgeNext .cev0eq_dot{background:var(--ds-steer-yellow,#e8a33d)}.cev0eq_badgeLater .cev0eq_dot{background:var(--ds-steer-green,#30a46c)}.cev0eq_steeringList{margin:0;padding:0 4px 4px;list-style:none}.cev0eq_steeringList .cev0eq_row{opacity:.85}.cev0eq_editor{border:1px solid var(--ds-color-border,#00000026);background:var(--ds-color-surface,#fff);resize:none;border-radius:6px;flex:1;min-width:0;max-height:160px;padding:4px 6px;font-size:13px;line-height:20px;overflow-y:auto}.cev0eq_actions{align-items:center;gap:2px;display:inline-flex}.cev0eq_action{width:24px;height:24px;color:var(--ds-color-text-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.cev0eq_action:hover:not(:disabled){background:var(--ds-color-surface-hover,#0000000d);color:var(--ds-color-text,#1f2937)}.cev0eq_action:disabled{opacity:.4;cursor:default}.cev0eq_plan{border-left:1px solid var(--ds-color-border,#00000014);align-items:center;gap:2px;margin-left:4px;padding-left:6px;display:inline-flex}.cev0eq_tier{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:inline-flex}.cev0eq_tier:hover:not(:disabled){border-color:var(--ds-color-border,#0003)}.cev0eq_tier:disabled{cursor:default}.cev0eq_tierLater{border-color:var(--ds-steer-green,#30a46c);background:color-mix(in srgb, var(--ds-steer-green,#30a46c) 12%, transparent)}.cev0eq_dot{border-radius:50%;width:10px;height:10px}.cev0eq_tierNow .cev0eq_dot{background:var(--ds-steer-red,#e5484d)}.cev0eq_tierNext .cev0eq_dot{background:var(--ds-steer-yellow,#e8a33d)}.cev0eq_tierLater .cev0eq_dot{background:var(--ds-steer-green,#30a46c)}";
198
+ const css$1 = ".cev0eq_dock{width:100%}.cev0eq_panel{background:var(--dsw-alias-bg-layer-1,#fffc);border:1px solid var(--dsw-alias-border-l2,#00000014);border-radius:10px;overflow:hidden}.cev0eq_toolbar{border-bottom:1px solid var(--dsw-alias-border-l2,#0000000f);align-items:center;gap:8px;padding:4px 8px;display:flex}.cev0eq_header{color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:2px 6px;font-size:12px;display:inline-flex}.cev0eq_header:disabled{cursor:default}.cev0eq_lead{color:var(--dsw-alias-label-tertiary,#9ca3af);display:inline-flex}.cev0eq_count{font-weight:600}.cev0eq_chevron{color:var(--dsw-alias-label-tertiary,#9ca3af);display:inline-flex}.cev0eq_toolbarActions{margin-left:auto}.cev0eq_clear{color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:12px;display:inline-flex}.cev0eq_freeze{border:1px solid var(--dsw-alias-border-l3,#0000001f);color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:12px;display:inline-flex}.cev0eq_freeze[aria-pressed=true]{border-color:var(--dsw-alias-state-success-primary,#30a46c);color:var(--dsw-alias-state-success-primary,#30a46c)}.cev0eq_freeze:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#0000000a)}.cev0eq_freeze:disabled{opacity:.5;cursor:default}.cev0eq_frozenBanner{border-bottom:1px solid var(--dsw-alias-border-l2,#0000000f);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#30a46c) 8%, transparent);color:var(--dsw-alias-state-success-primary,#30a46c);padding:4px 10px;font-size:12px}.cev0eq_frozenList{margin:0;padding:4px;list-style:none}.cev0eq_frozenRow{border-radius:6px;align-items:center;gap:8px;padding:4px 6px;display:flex}.cev0eq_frozenMark{color:var(--dsw-alias-label-tertiary,#9ca3af);flex:none;margin-left:auto;font-size:11px}.cev0eq_clear:hover:not(:disabled){border-color:var(--dsw-alias-border-l3,#0000001f);background:var(--dsw-alias-interactive-bg-hover,#0000000a)}.cev0eq_clear:disabled{opacity:.5;cursor:default}.cev0eq_clearConfirm{border-color:var(--dsw-alias-state-error-primary,#e5484d);color:var(--dsw-alias-state-error-primary,#e5484d)}.cev0eq_clearConfirm:hover:not(:disabled){border-color:var(--dsw-alias-state-error-primary,#e5484d);background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#e5484d) 8%, transparent)}.cev0eq_clearCancel{color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:12px;display:inline-flex}.cev0eq_clearCancel:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#0000000a)}.cev0eq_clearLabel{font-size:12px}.cev0eq_list{margin:0;padding:4px;list-style:none}.cev0eq_row{border-radius:6px;align-items:center;gap:8px;padding:4px 6px;display:flex}.cev0eq_row[draggable=true]{cursor:grab}.cev0eq_row[draggable=true]:active{cursor:grabbing}.cev0eq_rowDragOver{outline:2px dashed var(--dsw-alias-border-l4,#00000040);outline-offset:-2px;background:var(--dsw-alias-interactive-bg-hover,#0000000d)}.cev0eq_row:hover{background:var(--dsw-alias-interactive-bg-hover,#00000008)}.cev0eq_row[data-editing]{align-items:flex-start}.cev0eq_preview{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary,#1f2937);flex:1;font-size:13px;overflow:hidden}.cev0eq_badge{white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:4px;padding:1px 6px;font-size:11px;line-height:16px;display:inline-flex}.cev0eq_badgeLabel{color:inherit}.cev0eq_badgeNow{color:var(--dsw-alias-state-error-primary,#e5484d);background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#e5484d) 10%, transparent)}.cev0eq_badgeNext{color:var(--dsw-alias-state-warn-primary,#e8a33d);background:color-mix(in srgb, var(--dsw-alias-state-warn-primary,#e8a33d) 12%, transparent)}.cev0eq_badgeLater{color:var(--dsw-alias-state-success-primary,#30a46c);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#30a46c) 12%, transparent)}.cev0eq_badgeNow .cev0eq_dot{background:var(--dsw-alias-state-error-primary,#e5484d)}.cev0eq_badgeNext .cev0eq_dot{background:var(--dsw-alias-state-warn-primary,#e8a33d)}.cev0eq_badgeLater .cev0eq_dot{background:var(--dsw-alias-state-success-primary,#30a46c)}.cev0eq_steeringList{margin:0;padding:0 4px 4px;list-style:none}.cev0eq_steeringList .cev0eq_row{opacity:.85}.cev0eq_editor{border:1px solid var(--dsw-alias-border-l3,#00000026);background:var(--dsw-alias-bg-layer-2,#fff);resize:none;border-radius:6px;flex:1;min-width:0;max-height:160px;padding:4px 6px;font-size:13px;line-height:20px;overflow-y:auto}.cev0eq_actions{align-items:center;gap:2px;display:inline-flex}.cev0eq_action{width:24px;height:24px;color:var(--dsw-alias-label-tertiary,#9ca3af);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.cev0eq_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#0000000d);color:var(--dsw-alias-label-primary,#1f2937)}.cev0eq_action:disabled{opacity:.4;cursor:default}.cev0eq_plan{border-left:1px solid var(--dsw-alias-border-l2,#00000014);align-items:center;gap:2px;margin-left:4px;padding-left:6px;display:inline-flex}.cev0eq_tier{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:inline-flex}.cev0eq_tier:hover:not(:disabled){border-color:var(--dsw-alias-border-l4,#0003)}.cev0eq_tier:disabled{cursor:default}.cev0eq_tierLater{border-color:var(--dsw-alias-state-success-primary,#30a46c);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#30a46c) 12%, transparent)}.cev0eq_dot{border-radius:50%;width:10px;height:10px}.cev0eq_tierNow .cev0eq_dot{background:var(--dsw-alias-state-error-primary,#e5484d)}.cev0eq_tierNext .cev0eq_dot{background:var(--dsw-alias-state-warn-primary,#e8a33d)}.cev0eq_tierLater .cev0eq_dot{background:var(--dsw-alias-state-success-primary,#30a46c)}";
199
199
  const tagId$1 = "dsh-input-traffic/steer-queue-dock.module.css";
200
200
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
201
201
  const tag = document.createElement("style");
@@ -205,42 +205,42 @@ window.__ModuleLoader__.load({
205
205
  document.head.appendChild(tag);
206
206
  }
207
207
  var steer_queue_dock_module_css_default = {
208
+ "chevron": "cev0eq_chevron",
209
+ "clearCancel": "cev0eq_clearCancel",
210
+ "dock": "cev0eq_dock",
211
+ "badgeNow": "cev0eq_badgeNow",
212
+ "toolbar": "cev0eq_toolbar",
213
+ "frozenRow": "cev0eq_frozenRow",
208
214
  "badge": "cev0eq_badge",
209
- "editor": "cev0eq_editor",
210
- "panel": "cev0eq_panel",
215
+ "badgeLabel": "cev0eq_badgeLabel",
211
216
  "freeze": "cev0eq_freeze",
212
- "header": "cev0eq_header",
213
- "count": "cev0eq_count",
217
+ "steeringList": "cev0eq_steeringList",
218
+ "badgeLater": "cev0eq_badgeLater",
219
+ "action": "cev0eq_action",
220
+ "tierNow": "cev0eq_tierNow",
214
221
  "dot": "cev0eq_dot",
222
+ "frozenList": "cev0eq_frozenList",
223
+ "frozenBanner": "cev0eq_frozenBanner",
224
+ "list": "cev0eq_list",
225
+ "toolbarActions": "cev0eq_toolbarActions",
226
+ "clear": "cev0eq_clear",
227
+ "preview": "cev0eq_preview",
215
228
  "tier": "cev0eq_tier",
216
- "chevron": "cev0eq_chevron",
217
229
  "clearLabel": "cev0eq_clearLabel",
218
- "tierNow": "cev0eq_tierNow",
219
- "steeringList": "cev0eq_steeringList",
230
+ "badgeNext": "cev0eq_badgeNext",
220
231
  "row": "cev0eq_row",
232
+ "clearConfirm": "cev0eq_clearConfirm",
233
+ "tierNext": "cev0eq_tierNext",
234
+ "editor": "cev0eq_editor",
235
+ "count": "cev0eq_count",
221
236
  "frozenMark": "cev0eq_frozenMark",
222
- "tierLater": "cev0eq_tierLater",
237
+ "lead": "cev0eq_lead",
238
+ "header": "cev0eq_header",
223
239
  "actions": "cev0eq_actions",
224
- "dock": "cev0eq_dock",
225
- "clear": "cev0eq_clear",
226
- "tierNext": "cev0eq_tierNext",
227
- "frozenBanner": "cev0eq_frozenBanner",
228
- "action": "cev0eq_action",
229
- "badgeNow": "cev0eq_badgeNow",
230
- "toolbar": "cev0eq_toolbar",
231
- "list": "cev0eq_list",
232
- "clearConfirm": "cev0eq_clearConfirm",
233
- "preview": "cev0eq_preview",
234
- "badgeLabel": "cev0eq_badgeLabel",
240
+ "tierLater": "cev0eq_tierLater",
241
+ "panel": "cev0eq_panel",
235
242
  "plan": "cev0eq_plan",
236
- "clearCancel": "cev0eq_clearCancel",
237
- "rowDragOver": "cev0eq_rowDragOver",
238
- "toolbarActions": "cev0eq_toolbarActions",
239
- "lead": "cev0eq_lead",
240
- "frozenList": "cev0eq_frozenList",
241
- "badgeNext": "cev0eq_badgeNext",
242
- "badgeLater": "cev0eq_badgeLater",
243
- "frozenRow": "cev0eq_frozenRow"
243
+ "rowDragOver": "cev0eq_rowDragOver"
244
244
  };
245
245
  //#endregion
246
246
  //#region src/client/steer-queue-dock.tsx
@@ -1169,7 +1169,7 @@ window.__ModuleLoader__.load({
1169
1169
  }
1170
1170
  //#endregion
1171
1171
  //#region \0dsh-css:E:\test\rewrite-agently\dsh-input-traffic\src\client\freeze-button.module.css.mjs
1172
- const css = ".Klmgza_freeze{border:1px solid var(--ds-color-border,#0000001f);height:24px;color:var(--ds-color-text-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;align-items:center;gap:4px;padding:0 8px;font-size:12px;display:inline-flex}.Klmgza_freeze:hover:not(:disabled){background:var(--ds-color-surface-hover,#0000000a)}.Klmgza_freeze[aria-pressed=true]{border-color:var(--ds-steer-green,#30a46c);color:var(--ds-steer-green,#30a46c);background:color-mix(in srgb, var(--ds-steer-green,#30a46c) 8%, transparent)}.Klmgza_label{font-size:12px}";
1172
+ const css = ".Klmgza_freeze{border:1px solid var(--dsw-alias-border-l3,#0000001f);height:24px;color:var(--dsw-alias-label-secondary,#6b7280);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;align-items:center;gap:4px;padding:0 8px;font-size:12px;display:inline-flex}.Klmgza_freeze:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#0000000a)}.Klmgza_freeze[aria-pressed=true]{border-color:var(--dsw-alias-state-success-primary,#30a46c);color:var(--dsw-alias-state-success-primary,#30a46c);background:color-mix(in srgb, var(--dsw-alias-state-success-primary,#30a46c) 8%, transparent)}.Klmgza_label{font-size:12px}";
1173
1173
  const tagId = "dsh-input-traffic/freeze-button.module.css";
1174
1174
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
1175
1175
  const tag = document.createElement("style");
@@ -1198,15 +1198,15 @@ window.__ModuleLoader__.load({
1198
1198
  * Freeze/resume toggle for the peak-hour scenario.
1199
1199
  * @param props - slot props; the session snapshot drives the detach list.
1200
1200
  */
1201
- function FreezeButton({ session, updateQueue, cancel, send, sendSteer, notify, t }) {
1201
+ function FreezeButton({ session, updateQueue, cancel, send, notify, t }) {
1202
1202
  const { frozen } = (0, react.useSyncExternalStore)(freezeStore.subscribe, freezeStore.getSnapshot);
1203
1203
  const freeze = async () => {
1204
- const rows = session.queue.filter((row) => row.placement === "queued" || row.placement === "steering");
1205
- const pending = rows.flatMap((row) => row.text === null ? [] : [{
1204
+ const queued = session.queue.filter((row) => row.placement === "queued");
1205
+ const pending = queued.flatMap((row) => row.text === null ? [] : [{
1206
1206
  text: row.text,
1207
- tier: row.placement === "steering" ? "safe_point" : "queue"
1207
+ tier: "queue"
1208
1208
  }]);
1209
- await Promise.all(rows.map((row) => updateQueue(row.id, { kind: "remove" }).catch(() => void 0)));
1209
+ await Promise.all(queued.map((row) => updateQueue(row.id, { kind: "remove" }).catch(() => void 0)));
1210
1210
  freezeStore.set({
1211
1211
  frozen: true,
1212
1212
  pending
@@ -1221,8 +1221,7 @@ window.__ModuleLoader__.load({
1221
1221
  try {
1222
1222
  for (const entry of pending) {
1223
1223
  if (entry.tier === "force") await cancel();
1224
- if (entry.tier === "safe_point") await sendSteer(entry.text);
1225
- else await send(entry.text);
1224
+ await send(entry.text);
1226
1225
  }
1227
1226
  } catch {
1228
1227
  notify("error", t("steer.resumeFailed"));
@@ -1256,30 +1255,6 @@ window.__ModuleLoader__.load({
1256
1255
  const CONVERSATION_SETTINGS_NAMESPACE = "ui-conversation";
1257
1256
  /** Busy-Enter field inside that namespace; the plugin pins it to queue. */
1258
1257
  const BUSY_ENTER_FIELD = "busyEnter";
1259
- /**
1260
- * Deliver one plain-text message into the session's next step. The exposed
1261
- * conversation `send` verb only queues into the next turn, so resume steers
1262
- * through the session face's steer-mode prompt instead (no harness change).
1263
- * @param ctx - root context (resolves the session face behind the scope).
1264
- * @param actx - agent-scoped context of the owning session.
1265
- * @param text - message text to deliver.
1266
- */
1267
- function steerPrompt(ctx, actx, text) {
1268
- const session = ctx.sessions.sessionOf(actx);
1269
- if (session === void 0) return Promise.reject(/* @__PURE__ */ new Error("steer resume: session scope unavailable"));
1270
- return session.prompt([{
1271
- type: "text",
1272
- text
1273
- }], "steer").then((result) => {
1274
- if (!result.ok) {
1275
- const error = result.error ?? {
1276
- code: "unknown",
1277
- message: "steer prompt rejected"
1278
- };
1279
- throw new Error(`conversation.sendSteer failed: ${error.code}: ${error.message}`);
1280
- }
1281
- });
1282
- }
1283
1258
  /** Services required by the browser half. */
1284
1259
  const inject = [
1285
1260
  "slots",
@@ -1314,7 +1289,6 @@ window.__ModuleLoader__.load({
1314
1289
  updateQueue: (itemId, action) => conversation.updateQueue(itemId, action),
1315
1290
  cancel: () => conversation.cancel(),
1316
1291
  send: (text) => conversation.send(text),
1317
- sendSteer: (text) => steerPrompt(ctx, actx, text),
1318
1292
  setDraft: (text) => {
1319
1293
  conversation.input.for(actx).actions.setDraft(text);
1320
1294
  },
@@ -1338,7 +1312,6 @@ window.__ModuleLoader__.load({
1338
1312
  updateQueue: (itemId, action) => conversation.updateQueue(itemId, action),
1339
1313
  cancel: () => conversation.cancel(),
1340
1314
  send: (text) => conversation.send(text),
1341
- sendSteer: (text) => steerPrompt(ctx, actx, text),
1342
1315
  setDraft: (text) => {
1343
1316
  conversation.input.for(actx).actions.setDraft(text);
1344
1317
  },