dsh-input-traffic 0.2.3 → 0.2.5

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
@@ -59,9 +59,9 @@ Layout sketch of the waiting area and the freeze button in a session page:
59
59
 
60
60
  The "Freeze session / Resume session" button on the composer's right (beside the send button) pauses API consumption near DeepSeek peak pricing hours:
61
61
 
62
- - **Freeze**: the current turn is **not interrupted** — it finishes naturally, then the unsent queue is frozen (detached from the waiting area); the dock shows a "Frozen" banner;
63
- - **Resume**: the frozen messages re-enter the queue and the agent continues in FIFO order;
64
- - Engine: freeze = detach every queued row via `updateQueue(remove)` (plain-text copies kept in the plugin store); the driver stops naturally once the current turn ends with no pending work; resume = re-submit via `send(text)`, waking the driver;
62
+ - **Freeze**: the current turn is **not interrupted** — it finishes naturally, then consumption pauses. The queue is fully **decoupled from freezing**: freezing only stops the agent from consuming (executing / inserting / appending), while the waiting area stays visible and **fully operable** — reorder, edit, remove and set the red/yellow/green insertion tier, just like when not frozen;
63
+ - **Resume**: the (possibly edited) queue is re-submitted and **each entry executes with its planned tier** (red = interrupt and process immediately, yellow = interject, green = queue); the agent continues in FIFO order;
64
+ - Engine: freeze = detach every queued row via `updateQueue(remove)` (copies with their tiers kept in the plugin store); the driver stops naturally once the current turn ends with no pending work; edits made while frozen (text / order / tier) write back to the store in real time; resume = re-submit via `send(text)`, waking the driver (red-tier entries are preceded by `cancel()`);
65
65
  - Note: queued messages containing non-text content (images) cannot be re-sent and are released by the freeze (they do not come back).
66
66
 
67
67
  ## Queue management
package/README.md CHANGED
@@ -59,9 +59,9 @@
59
59
 
60
60
  输入框右侧(发送按钮旁)的「冻结会话 / 恢复会话」按钮,用于即将进入 DeepSeek 高峰收费时段时暂停 API 消耗:
61
61
 
62
- - **冻结**:当前轮次**不打断**、自然完成后暂停;未发送队列被冻结保存(从等待区移除);等待区显示「已冻结」横幅;
63
- - **恢复**:冻结的排队消息重新入队,agent 按 FIFO 继续处理;
64
- - 引擎实现:冻结 = 逐条 `updateQueue(remove)` 分离队列(纯文本副本存于插件 store),当前轮次完成后 driver 因无 pending 自然停止;恢复 = 逐条 `send(text)` 重新提交并唤醒 driver
62
+ - **冻结**:当前轮次**不打断**、自然完成后暂停;**队列与冻结解耦**——冻结只停止 agent 消费(执行/插入/追加),等待队列保持可见且**完全可操作**(排序、编辑、删除、设定红/黄/绿插入档位),与未冻结无明显区别;
63
+ - **恢复**:按修改后的队列重新入队,**按每条预定的档位执行**(红=打断并立即处理,黄=插话,绿=排队),agent 按 FIFO 继续处理;
64
+ - 引擎实现:冻结 = 逐条 `updateQueue(remove)` 分离队列(含档位的副本存于插件 store),当前轮次完成后 driver 因无 pending 自然停止;冻结期间对队列的修改(文本/顺序/档位)实时写回 store;恢复 = 逐条 `send(text)` 重新提交并唤醒 driver(红色档位的条目先 `cancel()` 再发送);
65
65
  - 注意:含非文本内容(图片)的排队消息无法重发,冻结时会随队列释放(不会恢复)。
66
66
 
67
67
  ## 队列管理
package/lib/client.js CHANGED
@@ -136,18 +136,39 @@ window.__ModuleLoader__.load({
136
136
  for (const listener of listeners) listener();
137
137
  }
138
138
  };
139
- /** Edit one detached queued text in place. */
139
+ /** Edit one detached queued message's text in place. */
140
140
  function updatePendingAt(index, text) {
141
141
  const pending = [...state.pending];
142
142
  if (index < 0 || index >= pending.length) return;
143
- pending[index] = text;
143
+ const entry = pending[index];
144
+ if (entry === void 0) return;
145
+ pending[index] = {
146
+ ...entry,
147
+ text
148
+ };
144
149
  state = {
145
150
  ...state,
146
151
  pending
147
152
  };
148
153
  emit();
149
154
  }
150
- /** Remove one detached queued text. */
155
+ /** Change one detached queued message's planned insertion tier. */
156
+ function setTierAt(index, tier) {
157
+ const pending = [...state.pending];
158
+ if (index < 0 || index >= pending.length) return;
159
+ const entry = pending[index];
160
+ if (entry === void 0) return;
161
+ pending[index] = {
162
+ ...entry,
163
+ tier
164
+ };
165
+ state = {
166
+ ...state,
167
+ pending
168
+ };
169
+ emit();
170
+ }
171
+ /** Remove one detached queued message. */
151
172
  function removePendingAt(index) {
152
173
  if (index < 0 || index >= state.pending.length) return;
153
174
  state = {
@@ -156,7 +177,7 @@ window.__ModuleLoader__.load({
156
177
  };
157
178
  emit();
158
179
  }
159
- /** Move one detached queued text to a new position (reorder while frozen). */
180
+ /** Move one detached queued message to a new position (reorder while frozen). */
160
181
  function movePending(from, to) {
161
182
  if (from === to) return;
162
183
  const pending = [...state.pending];
@@ -184,42 +205,42 @@ window.__ModuleLoader__.load({
184
205
  document.head.appendChild(tag);
185
206
  }
186
207
  var steer_queue_dock_module_css_default = {
187
- "rowDragOver": "cev0eq_rowDragOver",
188
- "toolbar": "cev0eq_toolbar",
189
- "tierLater": "cev0eq_tierLater",
190
208
  "badgeNow": "cev0eq_badgeNow",
191
- "lead": "cev0eq_lead",
192
- "preview": "cev0eq_preview",
193
- "clearCancel": "cev0eq_clearCancel",
194
- "tierNow": "cev0eq_tierNow",
209
+ "frozenBanner": "cev0eq_frozenBanner",
210
+ "badgeLater": "cev0eq_badgeLater",
195
211
  "badgeNext": "cev0eq_badgeNext",
196
- "chevron": "cev0eq_chevron",
197
- "dock": "cev0eq_dock",
198
- "freeze": "cev0eq_freeze",
199
- "plan": "cev0eq_plan",
200
- "steeringList": "cev0eq_steeringList",
201
- "badge": "cev0eq_badge",
202
- "dot": "cev0eq_dot",
203
- "tier": "cev0eq_tier",
204
- "frozenMark": "cev0eq_frozenMark",
205
- "panel": "cev0eq_panel",
206
- "toolbarActions": "cev0eq_toolbarActions",
207
212
  "actions": "cev0eq_actions",
208
- "row": "cev0eq_row",
213
+ "dock": "cev0eq_dock",
209
214
  "editor": "cev0eq_editor",
210
- "action": "cev0eq_action",
215
+ "tierNext": "cev0eq_tierNext",
211
216
  "badgeLabel": "cev0eq_badgeLabel",
212
- "frozenList": "cev0eq_frozenList",
217
+ "action": "cev0eq_action",
213
218
  "clearConfirm": "cev0eq_clearConfirm",
214
- "count": "cev0eq_count",
219
+ "plan": "cev0eq_plan",
215
220
  "clear": "cev0eq_clear",
216
- "tierNext": "cev0eq_tierNext",
221
+ "dot": "cev0eq_dot",
222
+ "clearCancel": "cev0eq_clearCancel",
223
+ "clearLabel": "cev0eq_clearLabel",
224
+ "preview": "cev0eq_preview",
225
+ "lead": "cev0eq_lead",
226
+ "tierNow": "cev0eq_tierNow",
227
+ "tier": "cev0eq_tier",
217
228
  "frozenRow": "cev0eq_frozenRow",
218
- "frozenBanner": "cev0eq_frozenBanner",
219
- "badgeLater": "cev0eq_badgeLater",
229
+ "freeze": "cev0eq_freeze",
230
+ "row": "cev0eq_row",
231
+ "badge": "cev0eq_badge",
232
+ "chevron": "cev0eq_chevron",
233
+ "rowDragOver": "cev0eq_rowDragOver",
220
234
  "header": "cev0eq_header",
221
- "clearLabel": "cev0eq_clearLabel",
222
- "list": "cev0eq_list"
235
+ "toolbarActions": "cev0eq_toolbarActions",
236
+ "frozenList": "cev0eq_frozenList",
237
+ "count": "cev0eq_count",
238
+ "panel": "cev0eq_panel",
239
+ "toolbar": "cev0eq_toolbar",
240
+ "frozenMark": "cev0eq_frozenMark",
241
+ "list": "cev0eq_list",
242
+ "steeringList": "cev0eq_steeringList",
243
+ "tierLater": "cev0eq_tierLater"
223
244
  };
224
245
  //#endregion
225
246
  //#region src/client/steer-queue-dock.tsx
@@ -589,11 +610,36 @@ window.__ModuleLoader__.load({
589
610
  frozen && frozenPending.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
590
611
  className: steer_queue_dock_module_css_default.frozenList,
591
612
  "data-testid": "frozen-list",
592
- children: frozenPending.map((text, i) => {
613
+ children: frozenPending.map((entry, i) => {
593
614
  const editingFrozen = editing?.id === `frozen:${i}`;
615
+ const text = entry.text;
594
616
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
595
- className: steer_queue_dock_module_css_default.frozenRow,
617
+ className: `${steer_queue_dock_module_css_default.frozenRow} ${dragOver === i && frozen ? steer_queue_dock_module_css_default.rowDragOver : ""}`,
618
+ "data-tier": entry.tier === "force" ? "now" : entry.tier === "safe_point" ? "next" : "later",
596
619
  "data-editing": editingFrozen ? "" : void 0,
620
+ draggable: !editingFrozen,
621
+ title: !editingFrozen ? t("steer.dragReorder") : void 0,
622
+ onDragStart: (event) => {
623
+ if (editingFrozen) return;
624
+ dragIndex.current = i;
625
+ event.dataTransfer.effectAllowed = "move";
626
+ },
627
+ onDragOver: (event) => {
628
+ if (dragIndex.current === null) return;
629
+ event.preventDefault();
630
+ setDragOver(i);
631
+ },
632
+ onDrop: (event) => {
633
+ event.preventDefault();
634
+ const from = dragIndex.current;
635
+ dragIndex.current = null;
636
+ setDragOver(null);
637
+ if (from !== null) movePending(from, i);
638
+ },
639
+ onDragEnd: () => {
640
+ dragIndex.current = null;
641
+ setDragOver(null);
642
+ },
597
643
  children: [
598
644
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
599
645
  className: steer_queue_dock_module_css_default.lead,
@@ -601,7 +647,7 @@ window.__ModuleLoader__.load({
601
647
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconQueueOutline14, {})
602
648
  }),
603
649
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SteerBadge, {
604
- tier: "later",
650
+ tier: entry.tier === "force" ? "now" : entry.tier === "safe_point" ? "next" : "later",
605
651
  t
606
652
  }),
607
653
  editingFrozen ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
@@ -720,6 +766,61 @@ window.__ModuleLoader__.load({
720
766
  onClick: () => removePendingAt(i),
721
767
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutline16, { size: 14 })
722
768
  })
769
+ }),
770
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
771
+ className: steer_queue_dock_module_css_default.plan,
772
+ role: "group",
773
+ "aria-label": t("steer.later.aria"),
774
+ children: [
775
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
776
+ label: t("steer.now"),
777
+ side: "bottom",
778
+ delayMs: 500,
779
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
780
+ type: "button",
781
+ className: `${steer_queue_dock_module_css_default.tier} ${steer_queue_dock_module_css_default.tierNow}`,
782
+ "aria-label": t("steer.now"),
783
+ "aria-pressed": entry.tier === "force" || void 0,
784
+ onClick: () => setTierAt(i, "force"),
785
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
786
+ className: steer_queue_dock_module_css_default.dot,
787
+ "aria-hidden": true
788
+ })
789
+ })
790
+ }),
791
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
792
+ label: t("steer.next"),
793
+ side: "bottom",
794
+ delayMs: 500,
795
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
796
+ type: "button",
797
+ className: `${steer_queue_dock_module_css_default.tier} ${steer_queue_dock_module_css_default.tierNext}`,
798
+ "aria-label": t("steer.next"),
799
+ "aria-pressed": entry.tier === "safe_point" || void 0,
800
+ onClick: () => setTierAt(i, "safe_point"),
801
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
802
+ className: steer_queue_dock_module_css_default.dot,
803
+ "aria-hidden": true
804
+ })
805
+ })
806
+ }),
807
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
808
+ label: t("steer.later"),
809
+ side: "bottom",
810
+ delayMs: 500,
811
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
812
+ type: "button",
813
+ className: `${steer_queue_dock_module_css_default.tier} ${steer_queue_dock_module_css_default.tierLater}`,
814
+ "aria-label": t("steer.later"),
815
+ "aria-pressed": entry.tier === "queue" || void 0,
816
+ onClick: () => setTierAt(i, "queue"),
817
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
818
+ className: steer_queue_dock_module_css_default.dot,
819
+ "aria-hidden": true
820
+ })
821
+ })
822
+ })
823
+ ]
723
824
  })
724
825
  ] })
725
826
  }),
@@ -1076,8 +1177,8 @@ window.__ModuleLoader__.load({
1076
1177
  document.head.appendChild(tag);
1077
1178
  }
1078
1179
  var freeze_button_module_css_default = {
1079
- "freeze": "Klmgza_freeze",
1080
- "label": "Klmgza_label"
1180
+ "label": "Klmgza_label",
1181
+ "freeze": "Klmgza_freeze"
1081
1182
  };
1082
1183
  //#endregion
1083
1184
  //#region src/client/freeze-button.tsx
@@ -1095,11 +1196,14 @@ window.__ModuleLoader__.load({
1095
1196
  * Freeze/resume toggle for the peak-hour scenario.
1096
1197
  * @param props - slot props; the session snapshot drives the detach list.
1097
1198
  */
1098
- function FreezeButton({ session, updateQueue, send, notify, t }) {
1199
+ function FreezeButton({ session, updateQueue, cancel, send, notify, t }) {
1099
1200
  const { frozen } = (0, react.useSyncExternalStore)(freezeStore.subscribe, freezeStore.getSnapshot);
1100
1201
  const freeze = async () => {
1101
1202
  const queued = session.queue.filter((row) => row.placement === "queued");
1102
- const pending = queued.flatMap((row) => row.text === null ? [] : [row.text]);
1203
+ const pending = queued.flatMap((row) => row.text === null ? [] : [{
1204
+ text: row.text,
1205
+ tier: "queue"
1206
+ }]);
1103
1207
  await Promise.all(queued.map((row) => updateQueue(row.id, { kind: "remove" }).catch(() => void 0)));
1104
1208
  freezeStore.set({
1105
1209
  frozen: true,
@@ -1113,7 +1217,10 @@ window.__ModuleLoader__.load({
1113
1217
  pending: []
1114
1218
  });
1115
1219
  try {
1116
- for (const text of pending) await send(text);
1220
+ for (const entry of pending) {
1221
+ if (entry.tier === "force") await cancel();
1222
+ await send(entry.text);
1223
+ }
1117
1224
  } catch {
1118
1225
  notify("error", t("steer.resumeFailed"));
1119
1226
  }
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["useMemo","useState","useRef","useSyncExternalStore","useId","css","IconQueueOutline14","IconChevronDownOutline14","IconChevronUpOutline14","Tooltip","IconTrashOutline16","IconCheckOutline16","IconCloseOutline16","IconEditOutline16","IconRightUpOutline16","useSyncExternalStore","css"],"sources":["src/client/locales.ts","src/client/freeze-store.ts","src/client/steer-queue-dock.tsx","src/client/freeze-button.tsx","src/client/hide-enter-row.tsx","src/client/index.ts"],"sourcesContent":["/** `steer` namespace dictionaries. */\r\n\r\n/** Dictionary namespace owned by this plugin. */\r\nexport const NS = 'steer'\r\n\r\n/** Simplified Chinese dictionary (the key-set source of truth). */\r\nexport const zh = {\r\n 'queue.count': '{n} 条排队消息',\r\n 'queue.edit': '编辑排队消息',\r\n 'queue.edit.unsupported': '包含非文本内容,暂不支持编辑',\r\n 'queue.save': '保存排队消息',\r\n 'queue.cancelEdit': '取消编辑',\r\n 'queue.remove': '删除排队消息',\r\n 'queue.removeFailed': '删除失败:这条消息可能已经开始发送。',\r\n 'queue.editFailed': '编辑失败:这条消息可能已经开始发送。',\r\n 'queue.editFailed.pulledBack': '编辑失败,内容已退回主输入框,请确认后重新发送。',\r\n 'steer.inflight': '{n} 条正在插入',\r\n 'steer.now': '打断并输入',\r\n 'steer.now.aria': '红色:打断当前动作并立即输入',\r\n 'steer.now.unsupported': '包含非文本内容,暂不支持打断',\r\n 'steer.nowFailed': '打断失败,请重试。',\r\n 'steer.next': '插话发送',\r\n 'steer.next.aria': '黄色:当前动作结束后插入输入',\r\n 'steer.nextFailed': '插话发送失败,请重试。',\r\n 'steer.later': '排队到下一轮',\r\n 'steer.later.aria': '绿色:排队,上一轮输入的动作都结束后再处理',\r\n 'steer.revoke': '收回排队',\r\n 'steer.revoke.aria': '绿色:撤销插入,收回排队(下一轮处理)',\r\n 'steer.revoke.unsupported': '包含非文本内容,暂不支持收回',\r\n 'steer.revokeFailed': '收回排队失败,请重试。',\r\n 'steer.moveUp': '上移',\r\n 'steer.moveDown': '下移',\r\n 'steer.reorder.unsupported': '包含非文本内容,暂不支持排序',\r\n 'steer.reorderFailed': '调整顺序失败,请重试。',\r\n 'steer.reorderStale': '队列已变化,本次排序已取消,请重试。',\r\n 'steer.dragReorder': '拖动调整顺序',\r\n 'steer.pullBack': '打回输入框编辑',\r\n 'steer.pullBack.unsupported': '包含非文本内容,暂不支持打回编辑',\r\n 'steer.pullBack.composerBusy': '主输入框已有内容,请先发送或清空后再打回',\r\n 'steer.pullBackFailed': '打回输入框失败,请重试。',\r\n 'steer.badge.now': '打断中',\r\n 'steer.badge.next': '插话中',\r\n 'steer.badge.later': '排队',\r\n 'steer.unavailable.running': '仅运行中可规划',\r\n 'steer.clear': '取消并清空',\r\n 'steer.clear.confirm': '确认清空?',\r\n 'steer.clear.cancel': '取消清空',\r\n 'steer.clear.aria': '取消当前执行并清空全部排队消息',\r\n 'steer.clearFailed': '取消并清空失败,请重试。',\r\n 'steer.freeze': '冻结会话',\r\n 'steer.resume': '恢复会话',\r\n 'steer.frozen': '已冻结:当前轮次完成后暂停,排队消息将在恢复后继续',\r\n 'steer.frozenBadge': '已冻结',\r\n 'steer.freezeFailed': '冻结失败,请重试。',\r\n 'steer.resumeFailed': '恢复失败,请重试。',\r\n} satisfies Record<string, string>\r\n\r\n/** English dictionary (keys mirror zh). */\r\nexport const en: Record<keyof typeof zh, string> = {\r\n 'queue.count': '{n} queued messages',\r\n 'queue.edit': 'Edit queued message',\r\n 'queue.edit.unsupported': 'Contains non-text content; editing is unsupported',\r\n 'queue.save': 'Save queued message',\r\n 'queue.cancelEdit': 'Cancel edit',\r\n 'queue.remove': 'Remove queued message',\r\n 'queue.removeFailed': 'Remove failed: the message may have started sending.',\r\n 'queue.editFailed': 'Edit failed: the message may have started sending.',\r\n 'queue.editFailed.pulledBack': 'Edit failed; the content was moved back to the composer, please review and resend.',\r\n 'steer.inflight': '{n} inserting',\r\n 'steer.now': 'Interrupt and send',\r\n 'steer.now.aria': 'Red: interrupt the running action and send now',\r\n 'steer.now.unsupported': 'Contains non-text content; interrupting is unsupported',\r\n 'steer.nowFailed': 'Interrupt failed, please retry.',\r\n 'steer.next': 'Send after action',\r\n 'steer.next.aria': 'Yellow: insert after the current action finishes',\r\n 'steer.nextFailed': 'Steering failed, please retry.',\r\n 'steer.later': 'Queue for next turn',\r\n 'steer.later.aria': 'Green: queue; processed after all previously steered actions finish',\r\n 'steer.revoke': 'Pull back to queue',\r\n 'steer.revoke.aria': 'Green: revoke the insertion and queue for the next turn',\r\n 'steer.revoke.unsupported': 'Contains non-text content; revoking is unsupported',\r\n 'steer.revokeFailed': 'Revoke failed, please retry.',\r\n 'steer.moveUp': 'Move up',\r\n 'steer.moveDown': 'Move down',\r\n 'steer.reorder.unsupported': 'Contains non-text content; reordering is unsupported',\r\n 'steer.reorderFailed': 'Reorder failed, please retry.',\r\n 'steer.reorderStale': 'The queue changed; this reorder was cancelled, please retry.',\r\n 'steer.dragReorder': 'Drag to reorder',\r\n 'steer.pullBack': 'Edit in composer',\r\n 'steer.pullBack.unsupported': 'Contains non-text content; pulling back is unsupported',\r\n 'steer.pullBack.composerBusy': 'The composer already has content; send or clear it first',\r\n 'steer.pullBackFailed': 'Pull back failed, please retry.',\r\n 'steer.badge.now': 'interrupting',\r\n 'steer.badge.next': 'steering',\r\n 'steer.badge.later': 'queued',\r\n 'steer.unavailable.running': 'Planning requires a running session',\r\n 'steer.clear': 'Cancel and clear',\r\n 'steer.clear.confirm': 'Confirm clear?',\r\n 'steer.clear.cancel': 'Cancel clearing',\r\n 'steer.clear.aria': 'Cancel the current run and clear all queued messages',\r\n 'steer.clearFailed': 'Cancel and clear failed, please retry.',\r\n 'steer.freeze': 'Freeze session',\r\n 'steer.resume': 'Resume session',\r\n 'steer.frozen': 'Frozen: the current turn finishes, then the queue pauses until resumed',\r\n 'steer.frozenBadge': 'frozen',\r\n 'steer.freezeFailed': 'Freeze failed, please retry.',\r\n 'steer.resumeFailed': 'Resume failed, please retry.',\r\n}\r\n\r\n/** Dictionary key union. */\r\nexport type SteerKey = keyof typeof zh\r\n","/**\r\n * Session-freeze store shared by the composer freeze button (the control)\r\n * and the steering dock (the banner/disabled states).\r\n *\r\n * Freeze semantics (peak-hour pause): the current turn is NOT interrupted —\n * it finishes naturally; the queued messages are detached (removed) and\r\n * preserved here, so the driver finds no pending work and stops. Resume\r\n * re-submits the preserved texts, which wakes the driver and continues the\r\n * queue.\r\n */\r\nexport interface FreezeState {\r\n frozen: boolean\r\n /** Plain-text copies of the detached queued messages, in FIFO order. */\r\n pending: readonly string[]\r\n}\r\n\r\nconst listeners = new Set<() => void>()\r\nlet state: FreezeState = { frozen: false, pending: [] }\r\n\r\n/** Minimal snapshot store (no runtime dependency, stable identity per mount). */\r\nexport const freezeStore = {\r\n getSnapshot(): FreezeState {\r\n return state\r\n },\r\n subscribe(listener: () => void): () => void {\r\n listeners.add(listener)\r\n return () => { listeners.delete(listener) }\r\n },\r\n set(next: FreezeState): void {\r\n state = next\r\n for (const listener of listeners) listener()\r\n },\r\n}\r\n\r\n/** Reset for tests. */\r\nexport function resetFreezeStore(): void {\r\n state = { frozen: false, pending: [] }\r\n for (const listener of listeners) listener()\r\n}\r\n\r\n/** Append one queued text while frozen (new input lands in the detached queue). */\r\nexport function pushPending(text: string): void {\r\n state = { ...state, pending: [...state.pending, text] }\r\n emit()\r\n}\r\n\r\n/** Edit one detached queued text in place. */\r\nexport function updatePendingAt(index: number, text: string): void {\r\n const pending = [...state.pending]\r\n if (index < 0 || index >= pending.length) return\r\n pending[index] = text\r\n state = { ...state, pending }\r\n emit()\r\n}\r\n\r\n/** Remove one detached queued text. */\r\nexport function removePendingAt(index: number): void {\r\n if (index < 0 || index >= state.pending.length) return\r\n state = { ...state, pending: state.pending.filter((_, i) => i !== index) }\r\n emit()\r\n}\r\n\r\n/** Move one detached queued text to a new position (reorder while frozen). */\r\nexport function movePending(from: number, to: number): void {\r\n if (from === to) return\r\n const pending = [...state.pending]\r\n const [moved] = pending.splice(from, 1)\r\n if (moved === undefined) return\r\n pending.splice(to, 0, moved)\r\n state = { ...state, pending }\r\n emit()\r\n}\r\n\r\nfunction emit(): void {\r\n for (const listener of listeners) listener()\r\n}\r\n","/**\r\n * Three-tier steering queue dock: the shadowing replacement for the official\r\n * `conversation.input.dock` entry (same cell id `queue`, priority -1, so the\r\n * lower priority wins and the official QueueDock never renders while this\r\n * plugin is mounted).\r\n *\r\n * Every queued row carries three planning buttons:\r\n * - green (later, the default state): the row already queues for the next\r\n * turn —plain Enter keeps feeding rows here; pressing green on a row that\r\n * was already steered (yellow) revokes the insertion and pulls it back to\r\n * later (the yellow flow is reversible);\r\n * - yellow (next): strict-steer the row into the running turn, consumed at\r\n * the next step boundary (after the current action finishes);\r\n * - red (now): cancel the running turn, then remove the row and re-send its\r\n * text as a fresh message —the re-send arms the harness wake latch (the\r\n * converged driver restarts) and the interrupted input is processed as the\r\n * next turn's input. A plain steer after cancel would re-insert a message\r\n * that is already pending in next-turn and the inbox rejects it.\r\n *\r\n * The toolbar also exposes a queue-level \"cancel and clear\" that stops the\r\n * current run and removes every queued row, plus a session-level\r\n * freeze/resume toggle for the peak-hour scenario: freeze stops the current\r\n * run while preserving the queue (keepInbox), resume re-arms the driver by\r\n * re-sending the first queued row so the preserved work continues.\r\n */\r\nimport { useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from 'react'\r\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\r\n// Type-only: the conversation slot/contract declarations (module augmentation\r\n// for the SlotMap and the session standard kit). No value import crosses the\r\n// plugin boundary.\r\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\r\nimport {\r\n IconCheckOutline16, IconChevronDownOutline14, IconChevronUpOutline14, IconCloseOutline16,\r\n IconEditOutline16, IconQueueOutline14, IconRightUpOutline16, IconTrashOutline16, Tooltip,\r\n} from '@deepseek-ai/dsh-client-ui-primitives'\r\nimport { freezeStore, updatePendingAt, removePendingAt, movePending } from './freeze-store.ts'\r\nimport css from './steer-queue-dock.module.css'\r\n\r\n/** One mutation accepted by the conversation queue verb. */\r\nexport type SteerQueueAction =\r\n | { kind: 'edit'; content: readonly { type: 'text'; text: string }[] }\r\n | { kind: 'remove' }\r\n | { kind: 'steer' }\r\n\r\n/** Busy marker for a whole-queue rebuild (reorder); locks every row action. */\r\nconst REORDER_MARK = '__reorder__'\r\n\r\n/** localStorage key for the manual collapse state (dsh-queue-plus parity). */\r\nconst COLLAPSE_KEY = 'dsh-input-traffic:collapsed'\r\n\r\n/** Queue operations injected by the session-scoped registration. */\r\nexport interface SteerQueueDockInjected {\r\n updateQueue: (itemId: string, action: SteerQueueAction) => Promise<void>\r\n /** Cancel the current turn while preserving the pending queue. */\r\n cancel: () => Promise<void>\r\n /** Re-send one plain-text message as a queued follow-up (the revoke path). */\r\n send: (text: string) => Promise<void>\r\n /** Back-fill the composer draft (the pull-back-to-composer edit path). */\r\n setDraft: (text: string) => void\r\n notify: (level: 'info' | 'error', text: string) => void\r\n}\r\n\r\n/** Full props of a dock entry: InputZone owner share + session standard kit + global seat + the locale seat. */\r\nexport type SteerQueueDockProps = PropsRuntime<'conversation.input.dock'> & SteerQueueDockInjected & PropsLocale<'steer'>\r\n\r\n/** The planning tier of one queued row. */\r\nexport type SteerTier = 'now' | 'next' | 'later'\r\n\r\n/**\r\n * Resolve the action sequence for one planning button press. Pure so the\r\n * button wiring and its tests share one truth.\r\n * @param tier - the pressed planning tier.\r\n * @returns the queue mutation (red re-uses a steer-shaped action for the\r\n * yellow branch; the red branch performs cancel + remove + resend instead).\r\n */\r\nexport function planActionFor(tier: SteerTier): { action: SteerQueueAction; interruptFirst: boolean } {\r\n if (tier === 'later') return { action: { kind: 'steer' }, interruptFirst: false }\r\n // Yellow steers only; red cancels the running turn first, then steers.\r\n return { action: { kind: 'steer' }, interruptFirst: tier === 'now' }\r\n}\r\n\r\n/**\r\n * Project the tier badge of one inbox row from its placement. Pure so the\r\n * row rendering and its tests share one truth.\r\n * @param placement - the inbox projection placement.\r\n * @returns the tier badge, or null for non-visible context rows.\r\n */\r\nexport function badgeFor(placement: 'queued' | 'steering' | 'context'): SteerTier | null {\r\n if (placement === 'steering') return 'next'\r\n if (placement === 'queued') return 'later'\r\n return null\r\n}\r\n\r\n/**\r\n * Auto-grow one edit textarea to its content. The CSS max-height caps the\r\n * growth; beyond it the textarea scrolls internally. Height is reset first so\r\n * shrink (deleting lines) also tracks the content.\r\n * @param el - the textarea to resize in place.\r\n */\r\nexport function resizeEditor(el: HTMLTextAreaElement): void {\r\n el.style.height = 'auto'\r\n el.style.height = `${el.scrollHeight}px`\r\n}\r\n\r\n/**\r\n * Queue strip with three-tier planning: one item renders directly; multiple\r\n * items default to a collapsible count header; an empty queue renders nothing.\r\n */\r\nexport function SteerQueueDock({ useSession, input, updateQueue, cancel, send, setDraft, notify, t }: SteerQueueDockProps) {\r\n const inbox = useSession(s => s.queue)\r\n const queue = useMemo(() => inbox.filter(row => row.placement === 'queued'), [inbox])\r\n const steering = useMemo(() => inbox.filter(row => row.placement === 'steering'), [inbox])\r\n const running = useSession(s => s.running)\r\n const queueMutable = useSession(s => s.subagent === null)\r\n const [editing, setEditing] = useState<{ id: string; text: string } | null>(null)\r\n const [busy, setBusy] = useState<string | null>(null)\r\n const [clearing, setClearing] = useState(false)\r\n // Two-step clear confirmation: the first click arms the prompt, the second\r\n // executes; arming auto-reverts after a few seconds (no native confirm).\r\n const [confirmClear, setConfirmClear] = useState(false)\r\n const confirmTimer = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n // Drag-and-drop reorder source index and the current drop-target row.\r\n const dragIndex = useRef<number | null>(null)\r\n const [dragOver, setDragOver] = useState<number | null>(null)\r\n // Collapse state persists across mounts (dsh-queue-plus parity).\r\n const [collapsed, setCollapsed] = useState(() => {\r\n try {\r\n const v = localStorage.getItem(COLLAPSE_KEY)\r\n return v === null ? true : v === '1'\r\n } catch {\r\n return true\r\n }\r\n })\r\n // Session-level freeze lives in the composer-right control; the dock reads\r\n // the shared store for the banner and inert states. While frozen the\r\n // detached queue is rendered here (read-only) so the waiting area stays\r\n // visible — freezing only pauses the running behavior, it must not hide\r\n // the queued messages.\r\n const { frozen, pending: frozenPending } = useSyncExternalStore(freezeStore.subscribe, freezeStore.getSnapshot)\r\n const listId = useId()\r\n // The edit textarea; grown to its content on entry and on every input.\r\n const editorRef = useRef<HTMLTextAreaElement>(null)\r\n\r\n useEffect(() => {\r\n if (queue.length === 0 && !collapsed) setCollapsed(true)\r\n // Frozen-row edits use a `frozen:` id that never exists in the dsh queue;\r\n // skip the stale-check for them so the detached queue stays editable.\r\n if (editing !== null && !editing.id.startsWith('frozen:') && (!queueMutable || !queue.some(row => row.id === editing.id))) setEditing(null)\r\n }, [collapsed, editing, queue, queueMutable])\r\n\r\n // Persist the manual collapse state; clear the confirm timer on unmount.\r\n useEffect(() => {\r\n try {\r\n localStorage.setItem(COLLAPSE_KEY, collapsed ? '1' : '0')\r\n } catch {\r\n /* storage unavailable: in-memory only */\r\n }\r\n }, [collapsed])\r\n useEffect(() => () => {\r\n if (confirmTimer.current !== null) clearTimeout(confirmTimer.current)\r\n }, [])\r\n\r\n // Grow the editor to its full content when a row enters edit mode.\r\n const editingId = editing?.id\r\n useEffect(() => {\r\n if (editingId === undefined) return\r\n const el = editorRef.current\r\n if (el !== null) resizeEditor(el)\r\n }, [editingId])\r\n\r\n // The dock stays mounted while the agent runs (the freeze entry must be\r\n // reachable before any message queues), while any row is pending, and while\r\n // the session is frozen (the detached queue stays visible).\r\n if (queue.length === 0 && steering.length === 0 && !running && !frozen) return null\r\n\r\n const interactionActive = queueMutable && (editing !== null || busy !== null || clearing)\r\n const expanded = !collapsed || interactionActive\r\n const listVisible = queue.length === 1 || expanded\r\n const planDisabled = !queueMutable || !running || frozen\r\n const nothingPending = queue.length === 0 && steering.length === 0\r\n // Reordering rebuilds the queue by re-sending texts; non-text rows cannot\r\n // be re-sent, so sorting is disabled while any such row is queued.\r\n const reorderUnsupported = queue.some(row => row.text === null)\r\n // Pull-back-to-composer is only offered when the composer draft is empty:\r\n // the pulled message back-fills the draft, so an occupied composer would be\r\n // overwritten. Steered (yellow/red) rows never offer it — once inserted,\r\n // they are not deeply re-edited.\r\n const composerEmpty = input.draft.trim() === ''\r\n\r\n const applyAction = async (\r\n itemId: string,\r\n action: SteerQueueAction,\r\n failure: string,\r\n ): Promise<boolean> => {\r\n setBusy(itemId)\r\n try {\r\n await updateQueue(itemId, action)\r\n return true\r\n } catch {\r\n notify('error', failure)\r\n return false\r\n } finally {\r\n setBusy(current => current === itemId ? null : current)\r\n }\r\n }\r\n\r\n const saveEdit = async (): Promise<void> => {\r\n if (editing === null || editing.text.trim() === '') return\r\n const itemId = editing.id\r\n const text = editing.text\r\n setBusy(itemId)\r\n try {\r\n await updateQueue(itemId, { kind: 'edit', content: [{ type: 'text', text }] })\r\n setEditing(null)\r\n } catch {\r\n // The edit failed (the agent may have claimed the row mid-edit): fall\r\n // back to the composer so the edited content is never lost. Only when\r\n // the composer is free — an occupied draft must not be overwritten.\r\n if (input.draft.trim() === '') {\r\n setDraft(text)\r\n setEditing(null)\r\n notify('error', t('queue.editFailed.pulledBack'))\r\n } else {\r\n notify('error', t('queue.editFailed'))\r\n }\r\n } finally {\r\n setBusy(current => current === itemId ? null : current)\r\n }\r\n }\r\n\r\n const steerRow = async (row: { id: string; text: string | null }, tier: Exclude<SteerTier, 'later'>): Promise<void> => {\r\n setBusy(row.id)\r\n try {\r\n if (tier === 'now') {\r\n // Interrupt, then re-submit: cancel stops the current run (keepInbox),\r\n // the row is removed so its identity cannot collide, and re-sending\r\n // the text arms the harness wake latch (the converged driver restarts\r\n // and processes it as the next turn's input). A plain steer after\r\n // cancel would re-insert a message already pending in next-turn and\r\n // the inbox rejects the duplicate.\r\n await cancel()\r\n await updateQueue(row.id, { kind: 'remove' })\r\n if (row.text !== null) await send(row.text)\r\n } else {\r\n await updateQueue(row.id, { kind: 'steer' })\r\n }\r\n } catch {\r\n notify('error', tier === 'now' ? t('steer.nowFailed') : t('steer.nextFailed'))\r\n } finally {\r\n setBusy(current => current === row.id ? null : current)\r\n }\r\n }\r\n\r\n /**\r\n * Revoke a steered (yellow) or interrupting (red) row back to later: remove\r\n * the admitted row and re-send its text as a queued follow-up, so it lands\r\n * in next-turn again (the yellow flow is reversible).\r\n */\r\n const revokeToLater = async (row: { id: string; text: string | null }): Promise<void> => {\r\n if (row.text === null) return\r\n setBusy(row.id)\r\n try {\r\n await updateQueue(row.id, { kind: 'remove' })\r\n await send(row.text)\r\n } catch {\r\n notify('error', t('steer.revokeFailed'))\r\n } finally {\r\n setBusy(current => current === row.id ? null : current)\r\n }\r\n }\r\n\r\n /**\r\n * Rebuild the queue in a new order: remove every queued row, then re-send\r\n * the texts sequentially so the agent's next-turn list matches the new\r\n * order. Concurrency protection (dsh-queue-plus parity): if a remove fails\r\n * with queue-item-not-found, the agent already claimed that row — the\r\n * rebuild stops immediately and nothing is re-sent, so the changed queue\r\n * is never scrambled.\r\n */\r\n const rebuildQueue = async (rows: readonly { id: string; text: string | null }[], next: readonly { id: string; text: string | null }[]): Promise<void> => {\r\n setBusy(REORDER_MARK)\r\n try {\r\n for (const row of rows) {\r\n try {\r\n await updateQueue(row.id, { kind: 'remove' })\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('queue-item-not-found')) {\r\n notify('error', t('steer.reorderStale'))\r\n return\r\n }\r\n throw error\r\n }\r\n }\r\n for (const row of next) {\r\n if (row.text !== null) await send(row.text)\r\n }\r\n } catch {\r\n notify('error', t('steer.reorderFailed'))\r\n } finally {\r\n setBusy(null)\r\n }\r\n }\r\n\r\n /**\r\n * Move one queued row up/down in the FIFO order (arrow buttons).\r\n */\r\n const reorder = async (rowId: string, delta: -1 | 1): Promise<void> => {\r\n const rows = queue\r\n const index = rows.findIndex(row => row.id === rowId)\r\n const target = index + delta\r\n if (index < 0 || target < 0 || target >= rows.length) return\r\n const next = [...rows]\r\n const swapped = next[index] as typeof next[number]\r\n next[index] = next[target] as typeof next[number]\r\n next[target] = swapped\r\n if (next.some(row => row.text === null)) {\r\n notify('error', t('steer.reorder.unsupported'))\r\n return\r\n }\r\n await rebuildQueue(rows, next)\r\n }\r\n\r\n /**\r\n * Move one row to an absolute position (drag-and-drop drop handler).\r\n */\r\n const reorderTo = async (fromIndex: number, toIndex: number): Promise<void> => {\r\n if (fromIndex === toIndex) return\r\n const rows = queue\r\n if (rows[fromIndex] === undefined || rows[toIndex] === undefined) return\r\n const next = [...rows]\r\n const [moved] = next.splice(fromIndex, 1)\r\n if (moved === undefined) return\r\n next.splice(toIndex, 0, moved)\r\n if (next.some(row => row.text === null)) {\r\n notify('error', t('steer.reorder.unsupported'))\r\n return\r\n }\r\n await rebuildQueue(rows, next)\r\n }\r\n\r\n /** Arm or execute the two-step clear confirmation. */\r\n const armClear = (): void => {\r\n if (confirmClear) {\r\n if (confirmTimer.current !== null) clearTimeout(confirmTimer.current)\r\n setConfirmClear(false)\r\n void clearAll()\r\n return\r\n }\r\n setConfirmClear(true)\r\n if (confirmTimer.current !== null) clearTimeout(confirmTimer.current)\r\n confirmTimer.current = setTimeout(() => setConfirmClear(false), 3000)\r\n }\r\n\r\n /** Abort the armed clear confirmation (the explicit cancel button). */\r\n const cancelClear = (): void => {\r\n if (confirmTimer.current !== null) clearTimeout(confirmTimer.current)\r\n setConfirmClear(false)\r\n }\r\n\r\n /** Save an in-place edit of one detached (frozen) queued message. */\r\n const saveFrozenEdit = async (index: number): Promise<void> => {\r\n if (editing === null) return\r\n const text = editing.text.trim()\r\n if (text === '') {\r\n setEditing(null)\r\n return\r\n }\r\n updatePendingAt(index, text)\r\n setEditing(null)\r\n }\r\n\r\n /**\r\n * Pull one queued row back into the composer draft for editing: the text\r\n * back-fills the input box and the row leaves the queue; the user edits and\r\n * resubmits it as a fresh message.\r\n */\r\n const pullBackToComposer = async (row: { id: string; text: string | null }): Promise<void> => {\r\n if (row.text === null) return\r\n setDraft(row.text)\r\n setBusy(row.id)\r\n try {\r\n await updateQueue(row.id, { kind: 'remove' })\r\n } catch {\r\n notify('error', t('steer.pullBackFailed'))\r\n } finally {\r\n setBusy(current => current === row.id ? null : current)\r\n }\r\n }\r\n\r\n const clearAll = async (): Promise<void> => {\r\n setClearing(true)\r\n // Cancel the current run and clear every pending row (queued and\r\n // steering alike). Removal races the agent claiming rows;\r\n // item-not-found is a normal convergence and must not surface.\r\n const pending = [...queue, ...steering]\r\n try {\r\n await cancel()\r\n await Promise.all(pending.map(row =>\r\n updateQueue(row.id, { kind: 'remove' }).catch(() => undefined),\r\n ))\r\n } catch {\r\n notify('error', t('steer.clearFailed'))\r\n } finally {\r\n setClearing(false)\r\n }\r\n }\r\n\r\n return (\r\n <div className={css.dock} data-steer-dock=\"\">\r\n <div className={css.panel}>\r\n <div className={css.toolbar}>\r\n <button\r\n type=\"button\"\r\n className={css.header}\r\n aria-controls={listId}\r\n aria-expanded={expanded}\r\n disabled={queue.length <= 1 || interactionActive}\r\n onClick={() => { setCollapsed(value => !value) }}\r\n >\r\n <span className={css.lead} aria-hidden><IconQueueOutline14 /></span>\r\n {queue.length > 0 && (\r\n <span className={css.count}>{t('queue.count', { n: queue.length })}</span>\r\n )}\r\n {queue.length > 1 && (\r\n <span className={css.chevron} aria-hidden>\r\n {expanded ? <IconChevronDownOutline14 /> : <IconChevronUpOutline14 />}\r\n </span>\r\n )}\r\n </button>\r\n <div className={css.toolbarActions}>\r\n {confirmClear && (\r\n <button\r\n type=\"button\"\r\n className={css.clearCancel}\r\n aria-label={t('steer.clear.cancel')}\r\n disabled={clearing || busy !== null || nothingPending}\r\n onClick={cancelClear}\r\n >\r\n <span className={css.clearLabel}>{t('steer.clear.cancel')}</span>\r\n </button>\r\n )}\r\n <Tooltip label={confirmClear ? t('steer.clear.confirm') : t('steer.clear')} side=\"top\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={`${css.clear} ${confirmClear ? css.clearConfirm : ''}`}\r\n aria-label={confirmClear ? t('steer.clear.confirm') : t('steer.clear')}\r\n disabled={clearing || busy !== null || nothingPending}\r\n onClick={armClear}\r\n >\r\n <IconTrashOutline16 size={14} />\r\n <span className={css.clearLabel}>{confirmClear ? t('steer.clear.confirm') : t('steer.clear')}</span>\r\n </button>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n {frozen && (\r\n <div className={css.frozenBanner} role=\"status\">\r\n {t('steer.frozen')}\r\n </div>\r\n )}\r\n {/* While frozen the queue is detached into the shared store: render it\r\n here so the waiting area never disappears. The detached rows stay\r\n fully editable (edit / remove / reorder) — freezing only pauses\r\n the running behavior, it must not lock the queue. */}\r\n {frozen && frozenPending.length > 0 && (\r\n <ul className={css.frozenList} data-testid=\"frozen-list\">\r\n {frozenPending.map((text, i) => {\r\n const editingFrozen = editing?.id === `frozen:${i}`\r\n return (\r\n <li key={i} className={css.frozenRow} data-editing={editingFrozen ? '' : undefined}>\r\n <span className={css.lead} aria-hidden><IconQueueOutline14 /></span>\r\n <SteerBadge tier=\"later\" t={t} />\r\n {editingFrozen\r\n ? (\r\n <textarea\r\n ref={editorRef}\r\n autoFocus\r\n className={css.editor}\r\n aria-label={t('queue.edit')}\r\n rows={1}\r\n value={editing?.text ?? text}\r\n onChange={(event) => { setEditing({ id: `frozen:${i}`, text: event.currentTarget.value }) }}\r\n onInput={(event) => { resizeEditor(event.currentTarget) }}\r\n onKeyDown={(event) => {\r\n if (event.key === 'Escape') {\r\n setEditing(null)\r\n return\r\n }\r\n if (event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing) {\r\n event.preventDefault()\r\n void saveFrozenEdit(i)\r\n }\r\n }}\r\n />\r\n )\r\n : <span className={css.preview}>{text}</span>}\r\n <div className={css.actions}>\r\n {editingFrozen ? (\r\n <>\r\n <Tooltip label={t('queue.save')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.save')}\r\n disabled={editing === null || editing.text.trim() === ''}\r\n onClick={() => { void saveFrozenEdit(i) }}\r\n >\r\n <IconCheckOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.cancelEdit')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.cancelEdit')}\r\n onClick={() => { setEditing(null) }}\r\n >\r\n <IconCloseOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n </>\r\n ) : (\r\n <>\r\n <Tooltip label={t('steer.moveUp')} side=\"bottom\" delayMs={500} disabled={i === 0}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.moveUp')}\r\n disabled={i === 0}\r\n onClick={() => movePending(i, i - 1)}\r\n >\r\n <IconChevronUpOutline14 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.moveDown')} side=\"bottom\" delayMs={500} disabled={i === frozenPending.length - 1}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.moveDown')}\r\n disabled={i === frozenPending.length - 1}\r\n onClick={() => movePending(i, i + 1)}\r\n >\r\n <IconChevronDownOutline14 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.edit')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.edit')}\r\n onClick={() => { setEditing({ id: `frozen:${i}`, text }) }}\r\n >\r\n <IconEditOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.remove')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.remove')}\r\n onClick={() => removePendingAt(i)}\r\n >\r\n <IconTrashOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n </>\r\n )}\r\n </div>\r\n <span className={css.frozenMark}>{t('steer.frozenBadge')}</span>\r\n </li>\r\n )\r\n })}\r\n </ul>\r\n )}\r\n <ul id={listId} className={css.list} hidden={!listVisible}>\r\n {listVisible && queue.map((row, index) => (\r\n <li\r\n key={row.id}\r\n className={`${css.row} ${dragOver === index ? css.rowDragOver : ''}`}\r\n data-tier={badgeFor('queued') ?? undefined}\r\n data-editing={editing?.id === row.id ? '' : undefined}\r\n draggable={queueMutable && !reorderUnsupported && busy === null && !frozen}\r\n title={queueMutable && !reorderUnsupported && busy === null && !frozen ? t('steer.dragReorder') : undefined}\r\n onDragStart={(event) => {\r\n dragIndex.current = index\r\n event.dataTransfer.effectAllowed = 'move'\r\n }}\r\n onDragOver={(event) => {\r\n if (dragIndex.current === null) return\r\n event.preventDefault()\r\n setDragOver(index)\r\n }}\r\n onDrop={(event) => {\r\n event.preventDefault()\r\n const from = dragIndex.current\r\n dragIndex.current = null\r\n setDragOver(null)\r\n if (from !== null) void reorderTo(from, index)\r\n }}\r\n onDragEnd={() => {\r\n dragIndex.current = null\r\n setDragOver(null)\r\n }}\r\n >\r\n {queue.length === 1 && <span className={css.lead} aria-hidden><IconQueueOutline14 /></span>}\r\n <SteerBadge tier={badgeFor('queued')} t={t} />\r\n {editing?.id === row.id\r\n ? (\r\n <textarea\r\n ref={editorRef}\r\n autoFocus\r\n className={css.editor}\r\n aria-label={t('queue.edit')}\r\n rows={1}\r\n value={editing.text}\r\n onChange={(event) => { setEditing({ id: row.id, text: event.currentTarget.value }) }}\r\n onInput={(event) => { resizeEditor(event.currentTarget) }}\r\n onKeyDown={(event) => {\r\n if (event.key === 'Escape') {\r\n setEditing(null)\r\n return\r\n }\r\n // Plain Enter saves; Shift+Enter keeps editing (newline).\r\n if (event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing) {\r\n event.preventDefault()\r\n void saveEdit()\r\n }\r\n }}\r\n />\r\n )\r\n : <span className={css.preview}>{row.preview}</span>}\r\n {queueMutable && <div className={css.actions}>\r\n {editing?.id === row.id\r\n ? (\r\n <>\r\n <Tooltip label={t('queue.save')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.save')}\r\n disabled={busy !== null || editing.text.trim() === ''}\r\n onClick={() => { void saveEdit() }}\r\n >\r\n <IconCheckOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.cancelEdit')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.cancelEdit')}\r\n disabled={busy !== null}\r\n onClick={() => { setEditing(null) }}\r\n >\r\n <IconCloseOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n </>\r\n )\r\n : (\r\n <>\r\n <Tooltip label={t('steer.moveUp')} side=\"bottom\" delayMs={500} disabled={frozen || reorderUnsupported}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.moveUp')}\r\n title={reorderUnsupported ? t('steer.reorder.unsupported') : undefined}\r\n disabled={busy !== null || frozen || reorderUnsupported}\r\n onClick={() => { void reorder(row.id, -1) }}\r\n >\r\n <IconChevronUpOutline14 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.moveDown')} side=\"bottom\" delayMs={500} disabled={frozen || reorderUnsupported}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.moveDown')}\r\n title={reorderUnsupported ? t('steer.reorder.unsupported') : undefined}\r\n disabled={busy !== null || frozen || reorderUnsupported}\r\n onClick={() => { void reorder(row.id, 1) }}\r\n >\r\n <IconChevronDownOutline14 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.pullBack')} side=\"bottom\" delayMs={500} disabled={row.text === null || !composerEmpty}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.pullBack')}\r\n title={row.text === null ? t('steer.pullBack.unsupported') : !composerEmpty ? t('steer.pullBack.composerBusy') : undefined}\r\n disabled={busy !== null || frozen || row.text === null || !composerEmpty}\r\n onClick={() => { void pullBackToComposer(row) }}\r\n >\r\n <IconRightUpOutline16 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.edit')} side=\"bottom\" delayMs={500} disabled={row.text === null}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.edit')}\r\n title={row.text === null ? t('queue.edit.unsupported') : undefined}\r\n disabled={busy !== null || row.text === null}\r\n onClick={() => {\r\n if (row.text !== null) setEditing({ id: row.id, text: row.text })\r\n }}\r\n >\r\n <IconEditOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.remove')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.remove')}\r\n disabled={busy !== null}\r\n onClick={() => {\r\n void applyAction(row.id, { kind: 'remove' }, t('queue.removeFailed'))\r\n }}\r\n >\r\n <IconTrashOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <span className={css.plan} role=\"group\" aria-label={t('steer.later.aria')}>\r\n <Tooltip label={t('steer.now')} side=\"bottom\" delayMs={500} disabled={planDisabled || row.text === null}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierNow}`}\r\n aria-label={t('steer.now')}\r\n title={planDisabled ? t('steer.unavailable.running') : row.text === null ? t('steer.now.unsupported') : undefined}\r\n disabled={busy !== null || planDisabled || row.text === null}\r\n onClick={() => { void steerRow(row, 'now') }}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.next')} side=\"bottom\" delayMs={500} disabled={planDisabled}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierNext}`}\r\n aria-label={t('steer.next')}\r\n title={planDisabled ? t('steer.unavailable.running') : undefined}\r\n disabled={busy !== null || planDisabled}\r\n onClick={() => { void steerRow(row, 'next') }}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.later')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierLater}`}\r\n aria-label={t('steer.later')}\r\n aria-pressed\r\n disabled={busy !== null || clearing}\r\n onClick={() => {\r\n // Later is the default queue state; pressing it\r\n // keeps the row queued (no-op by design).\r\n }}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n </span>\r\n </>\r\n )}\r\n </div>}\r\n </li>\r\n ))}\r\n </ul>\r\n {steering.length > 0 && (\r\n <ul className={css.steeringList} data-steering-list=\"\">\r\n {steering.map(row => (\r\n <li key={row.id} className={css.row} data-tier={badgeFor('steering') ?? undefined}>\r\n <span className={css.lead} aria-hidden><IconQueueOutline14 /></span>\r\n <SteerBadge tier={badgeFor('steering')} t={t} />\r\n <span className={css.preview}>{row.preview}</span>\r\n <div className={css.actions}>\r\n <Tooltip label={t('steer.revoke')} side=\"bottom\" delayMs={500} disabled={row.text === null}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierLater}`}\r\n aria-label={t('steer.revoke')}\r\n title={row.text === null ? t('steer.revoke.unsupported') : undefined}\r\n disabled={busy !== null || row.text === null || frozen}\r\n onClick={() => { void revokeToLater(row) }}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n/** Badge label keys per tier. */\r\nconst BADGE_KEYS: Record<SteerTier, string> = {\r\n now: 'steer.badge.now',\r\n next: 'steer.badge.next',\r\n later: 'steer.badge.later',\r\n}\r\n\r\n/** Badge tint classes per tier (present at bundle time; typed through the css-modules declaration). */\r\nconst BADGE_CLASSES: Record<SteerTier, string> = {\r\n now: css.badgeNow as string,\r\n next: css.badgeNext as string,\r\n later: css.badgeLater as string,\r\n}\r\n\r\n/** One row's tier badge: colored dot + label; context rows render nothing. */\r\nfunction SteerBadge({ tier, t }: { tier: SteerTier | null; t: SteerQueueDockProps['t'] }) {\r\n if (tier === null) return null\r\n return (\r\n <span className={`${css.badge} ${BADGE_CLASSES[tier]}`} data-badge={tier}>\r\n <span className={css.dot} aria-hidden />\r\n <span className={css.badgeLabel}>{t(BADGE_KEYS[tier])}</span>\r\n </span>\r\n )\r\n}\r\n","/**\r\n * Session freeze/resume control, mounted in the composer's right tool row\r\n * (`conversation.input.right`) so it is reachable before anything queues.\r\n *\r\n * Peak-hour pause semantics: freeze does NOT interrupt the running turn —it\r\n * finishes naturally. The queued messages are detached (removed, preserved in\r\n * the shared store), so the driver finds no pending work and stops after the\r\n * current turn. Resume re-submits the preserved texts, waking the driver and\r\n * continuing the queue.\r\n */\r\nimport { useSyncExternalStore } from 'react'\r\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\r\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\r\nimport { freezeStore } from './freeze-store.ts'\r\nimport type { SteerQueueDockInjected } from './steer-queue-dock.tsx'\r\nimport css from './freeze-button.module.css'\r\n\r\n/** Full props of the composer-right entry: InputZone owner share + injected verbs + locale seat. */\r\nexport type FreezeButtonProps = PropsRuntime<'conversation.input.right'> & SteerQueueDockInjected & PropsLocale<'steer'>\r\n\r\n/**\r\n * Freeze/resume toggle for the peak-hour scenario.\r\n * @param props - slot props; the session snapshot drives the detach list.\r\n */\r\nexport function FreezeButton({ session, updateQueue, send, notify, t }: FreezeButtonProps) {\r\n const { frozen } = useSyncExternalStore(freezeStore.subscribe, freezeStore.getSnapshot)\r\n\r\n const freeze = async (): Promise<void> => {\r\n const queued = session.queue.filter(row => row.placement === 'queued')\r\n // Preserve plain-text copies; non-text rows cannot be re-sent and are\r\n // released by the freeze (documented limitation).\r\n const pending = queued.flatMap(row => row.text === null ? [] : [row.text])\r\n // Detach every queued row: the running turn finishes naturally, then the\r\n // driver finds no pending work and stops.\r\n await Promise.all(queued.map(row =>\r\n updateQueue(row.id, { kind: 'remove' }).catch(() => undefined),\r\n ))\r\n freezeStore.set({ frozen: true, pending })\r\n }\r\n\r\n const resume = async (): Promise<void> => {\r\n const pending = freezeStore.getSnapshot().pending\r\n freezeStore.set({ frozen: false, pending: [] })\r\n try {\r\n // Re-submit the preserved texts in FIFO order; the first send wakes the\r\n // driver and the whole chain continues.\r\n for (const text of pending) await send(text)\r\n } catch {\r\n notify('error', t('steer.resumeFailed'))\r\n }\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n className={css.freeze}\r\n aria-label={frozen ? t('steer.resume') : t('steer.freeze')}\r\n aria-pressed={frozen || undefined}\r\n title={frozen ? t('steer.frozen') : undefined}\r\n onClick={() => {\r\n if (frozen) void resume()\r\n else void freeze()\r\n }}\r\n >\r\n <span className={css.label}>{frozen ? t('steer.resume') : t('steer.freeze')}</span>\r\n </button>\r\n )\r\n}\r\n","/**\r\n * Busy-Enter row hiding: shadows the official `settings.general.item` entry\r\n * `composer-enter` (same cell id, priority -1) so the lower priority wins and\r\n * the official \"繁忙时 Enter 键行为\" row never renders while this plugin is\r\n * mounted.\r\n *\r\n * The behavior itself is taken over by the plugin: plain Enter stays\r\n * queue-later (green), the planning dock owns yellow/red, and the plugin apply\r\n * pins `ui-conversation.busyEnter` to `queue` so no stale preference can\r\n * leak through the hidden row.\r\n */\r\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\r\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\r\n\r\n/** Full props of a settings-row entry (unused: the row renders nothing). */\r\nexport type HideEnterRowProps = PropsRuntime<'settings.general.item'> & PropsLocale<'steer'>\r\n\r\n/** Render nothing: the official busy-Enter row is hidden while mounted. */\r\nexport function HideEnterRow(_props: HideEnterRowProps): null {\r\n return null\r\n}\r\n","/**\r\n * dsh-input-traffic —browser half.\r\n *\r\n * The whole takeover lives here:\r\n * 1. registers the `steer` dictionaries;\r\n * 2. pins `ui-conversation.busyEnter` to `queue` (plain Enter = green later)\r\n * so the hidden official row cannot leak a stale queue/steer preference;\r\n * 3. shadows the official queue dock (`conversation.input.dock` cell id\r\n * `queue`, priority -1) with the three-tier planning strip;\r\n * 4. shadows the official busy-Enter settings row (`settings.general.item`\r\n * cell id `composer-enter`, priority -1) with a null render.\r\n *\r\n * All @deepseek-ai/* imports are type-only: collaboration happens through\r\n * cordis services and slot registration only (client bundle purity).\r\n */\r\nimport type { ClientContext, SessionId } from '@deepseek-ai/dsh-client-runtime/client'\r\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\r\nimport type {} from '@deepseek-ai/dsh-client-ui-settings/client'\r\nimport type { IConversation } from '@deepseek-ai/dsh-client-ui-conversation/client'\r\nimport { NS, en, zh } from './locales.ts'\r\nimport { SteerQueueDock } from './steer-queue-dock.tsx'\r\nimport type { SteerQueueDockInjected } from './steer-queue-dock.tsx'\r\nimport { FreezeButton } from './freeze-button.tsx'\r\nimport { HideEnterRow } from './hide-enter-row.tsx'\r\n\r\n/** Durable conversation settings namespace owned by ui-conversation. */\r\nconst CONVERSATION_SETTINGS_NAMESPACE = 'ui-conversation'\r\n\r\n/** Busy-Enter field inside that namespace; the plugin pins it to queue. */\r\nconst BUSY_ENTER_FIELD = 'busyEnter'\r\n\r\n/** Services required by the browser half. */\r\nexport const inject = ['slots', 'locale', 'sessions', 'conversation', 'settingsScope']\r\n\r\n/**\r\n * Client plugin body: dictionaries, busy-Enter pinning, and the two slot\r\n * shadowings.\r\n * @param ctx - client root context.\r\n */\r\nexport function apply(ctx: ClientContext): void {\r\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'dsh-input-traffic: dictionaries')\r\n\r\n // Take over the busy-Enter behavior: plain Enter stays queue-later while\r\n // the official row is hidden. Pinning here also repairs a persisted `steer`\r\n // preference that would otherwise keep working invisibly behind the hidden\r\n // row. Best-effort: a memory-mode host simply accepts it locally.\r\n const conversationSettings = ctx.settingsScope.bind<{ busyEnter: 'queue' | 'steer' }>({\r\n namespace: CONVERSATION_SETTINGS_NAMESPACE,\r\n })\r\n void conversationSettings.set(BUSY_ENTER_FIELD, 'queue')\r\n\r\n // Shadow the official queue dock with the three-tier planning strip.\r\n ctx.slots.inject('conversation.input.dock', () => ctx.slots.register({\r\n name: 'conversation.input.dock',\r\n id: 'queue',\r\n order: 20,\r\n priority: -1,\r\n locale: NS,\r\n inject: (sessionId: SessionId): SteerQueueDockInjected => {\r\n const actx = ctx.sessions.scope(sessionId)\r\n if (actx === undefined) throw new Error(`steer dock: session \"${sessionId}\" resolved no scope`)\r\n const conversation = actx.get<IConversation>('conversation')\r\n if (conversation === undefined) throw new Error('steer dock: conversation service unavailable')\r\n return {\r\n updateQueue: (itemId, action) => conversation.updateQueue(itemId, action),\r\n cancel: () => conversation.cancel(),\r\n send: (text) => conversation.send(text),\r\n setDraft: (text) => { conversation.input.for(actx).actions.setDraft(text) },\r\n notify: (level, text) => { conversation.input.for(actx).notify(level, text) },\r\n }\r\n },\r\n }, SteerQueueDock))\r\n\r\n // Composer-right freeze/resume control (reachable before anything queues).\r\n ctx.slots.inject('conversation.input.right', () => ctx.slots.register({\r\n name: 'conversation.input.right',\r\n id: 'steer-freeze',\r\n order: 30,\r\n locale: NS,\r\n inject: (sessionId: SessionId): SteerQueueDockInjected => {\r\n const actx = ctx.sessions.scope(sessionId)\r\n if (actx === undefined) throw new Error(`steer freeze: session \"${sessionId}\" resolved no scope`)\r\n const conversation = actx.get<IConversation>('conversation')\r\n if (conversation === undefined) throw new Error('steer freeze: conversation service unavailable')\r\n return {\r\n updateQueue: (itemId, action) => conversation.updateQueue(itemId, action),\r\n cancel: () => conversation.cancel(),\r\n send: (text) => conversation.send(text),\r\n setDraft: (text) => { conversation.input.for(actx).actions.setDraft(text) },\r\n notify: (level, text) => { conversation.input.for(actx).notify(level, text) },\r\n }\r\n },\r\n }, FreezeButton))\r\n\r\n // Hide the official busy-Enter settings row (null render wins the cell).\r\n ctx.slots.inject('settings.general.item', () => ctx.slots.register({\r\n name: 'settings.general.item',\r\n id: 'composer-enter',\r\n order: 20,\r\n priority: -1,\r\n locale: NS,\r\n }, HideEnterRow))\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["useMemo","useState","useRef","useSyncExternalStore","useId","css","IconQueueOutline14","IconChevronDownOutline14","IconChevronUpOutline14","Tooltip","IconTrashOutline16","IconCheckOutline16","IconCloseOutline16","IconEditOutline16","IconRightUpOutline16","useSyncExternalStore","css"],"sources":["src/client/locales.ts","src/client/freeze-store.ts","src/client/steer-queue-dock.tsx","src/client/freeze-button.tsx","src/client/hide-enter-row.tsx","src/client/index.ts"],"sourcesContent":["/** `steer` namespace dictionaries. */\r\n\r\n/** Dictionary namespace owned by this plugin. */\r\nexport const NS = 'steer'\r\n\r\n/** Simplified Chinese dictionary (the key-set source of truth). */\r\nexport const zh = {\r\n 'queue.count': '{n} 条排队消息',\r\n 'queue.edit': '编辑排队消息',\r\n 'queue.edit.unsupported': '包含非文本内容,暂不支持编辑',\r\n 'queue.save': '保存排队消息',\r\n 'queue.cancelEdit': '取消编辑',\r\n 'queue.remove': '删除排队消息',\r\n 'queue.removeFailed': '删除失败:这条消息可能已经开始发送。',\r\n 'queue.editFailed': '编辑失败:这条消息可能已经开始发送。',\r\n 'queue.editFailed.pulledBack': '编辑失败,内容已退回主输入框,请确认后重新发送。',\r\n 'steer.inflight': '{n} 条正在插入',\r\n 'steer.now': '打断并输入',\r\n 'steer.now.aria': '红色:打断当前动作并立即输入',\r\n 'steer.now.unsupported': '包含非文本内容,暂不支持打断',\r\n 'steer.nowFailed': '打断失败,请重试。',\r\n 'steer.next': '插话发送',\r\n 'steer.next.aria': '黄色:当前动作结束后插入输入',\r\n 'steer.nextFailed': '插话发送失败,请重试。',\r\n 'steer.later': '排队到下一轮',\r\n 'steer.later.aria': '绿色:排队,上一轮输入的动作都结束后再处理',\r\n 'steer.revoke': '收回排队',\r\n 'steer.revoke.aria': '绿色:撤销插入,收回排队(下一轮处理)',\r\n 'steer.revoke.unsupported': '包含非文本内容,暂不支持收回',\r\n 'steer.revokeFailed': '收回排队失败,请重试。',\r\n 'steer.moveUp': '上移',\r\n 'steer.moveDown': '下移',\r\n 'steer.reorder.unsupported': '包含非文本内容,暂不支持排序',\r\n 'steer.reorderFailed': '调整顺序失败,请重试。',\r\n 'steer.reorderStale': '队列已变化,本次排序已取消,请重试。',\r\n 'steer.dragReorder': '拖动调整顺序',\r\n 'steer.pullBack': '打回输入框编辑',\r\n 'steer.pullBack.unsupported': '包含非文本内容,暂不支持打回编辑',\r\n 'steer.pullBack.composerBusy': '主输入框已有内容,请先发送或清空后再打回',\r\n 'steer.pullBackFailed': '打回输入框失败,请重试。',\r\n 'steer.badge.now': '打断中',\r\n 'steer.badge.next': '插话中',\r\n 'steer.badge.later': '排队',\r\n 'steer.unavailable.running': '仅运行中可规划',\r\n 'steer.clear': '取消并清空',\r\n 'steer.clear.confirm': '确认清空?',\r\n 'steer.clear.cancel': '取消清空',\r\n 'steer.clear.aria': '取消当前执行并清空全部排队消息',\r\n 'steer.clearFailed': '取消并清空失败,请重试。',\r\n 'steer.freeze': '冻结会话',\r\n 'steer.resume': '恢复会话',\r\n 'steer.frozen': '已冻结:当前轮次完成后暂停,排队消息将在恢复后继续',\r\n 'steer.frozenBadge': '已冻结',\r\n 'steer.freezeFailed': '冻结失败,请重试。',\r\n 'steer.resumeFailed': '恢复失败,请重试。',\r\n} satisfies Record<string, string>\r\n\r\n/** English dictionary (keys mirror zh). */\r\nexport const en: Record<keyof typeof zh, string> = {\r\n 'queue.count': '{n} queued messages',\r\n 'queue.edit': 'Edit queued message',\r\n 'queue.edit.unsupported': 'Contains non-text content; editing is unsupported',\r\n 'queue.save': 'Save queued message',\r\n 'queue.cancelEdit': 'Cancel edit',\r\n 'queue.remove': 'Remove queued message',\r\n 'queue.removeFailed': 'Remove failed: the message may have started sending.',\r\n 'queue.editFailed': 'Edit failed: the message may have started sending.',\r\n 'queue.editFailed.pulledBack': 'Edit failed; the content was moved back to the composer, please review and resend.',\r\n 'steer.inflight': '{n} inserting',\r\n 'steer.now': 'Interrupt and send',\r\n 'steer.now.aria': 'Red: interrupt the running action and send now',\r\n 'steer.now.unsupported': 'Contains non-text content; interrupting is unsupported',\r\n 'steer.nowFailed': 'Interrupt failed, please retry.',\r\n 'steer.next': 'Send after action',\r\n 'steer.next.aria': 'Yellow: insert after the current action finishes',\r\n 'steer.nextFailed': 'Steering failed, please retry.',\r\n 'steer.later': 'Queue for next turn',\r\n 'steer.later.aria': 'Green: queue; processed after all previously steered actions finish',\r\n 'steer.revoke': 'Pull back to queue',\r\n 'steer.revoke.aria': 'Green: revoke the insertion and queue for the next turn',\r\n 'steer.revoke.unsupported': 'Contains non-text content; revoking is unsupported',\r\n 'steer.revokeFailed': 'Revoke failed, please retry.',\r\n 'steer.moveUp': 'Move up',\r\n 'steer.moveDown': 'Move down',\r\n 'steer.reorder.unsupported': 'Contains non-text content; reordering is unsupported',\r\n 'steer.reorderFailed': 'Reorder failed, please retry.',\r\n 'steer.reorderStale': 'The queue changed; this reorder was cancelled, please retry.',\r\n 'steer.dragReorder': 'Drag to reorder',\r\n 'steer.pullBack': 'Edit in composer',\r\n 'steer.pullBack.unsupported': 'Contains non-text content; pulling back is unsupported',\r\n 'steer.pullBack.composerBusy': 'The composer already has content; send or clear it first',\r\n 'steer.pullBackFailed': 'Pull back failed, please retry.',\r\n 'steer.badge.now': 'interrupting',\r\n 'steer.badge.next': 'steering',\r\n 'steer.badge.later': 'queued',\r\n 'steer.unavailable.running': 'Planning requires a running session',\r\n 'steer.clear': 'Cancel and clear',\r\n 'steer.clear.confirm': 'Confirm clear?',\r\n 'steer.clear.cancel': 'Cancel clearing',\r\n 'steer.clear.aria': 'Cancel the current run and clear all queued messages',\r\n 'steer.clearFailed': 'Cancel and clear failed, please retry.',\r\n 'steer.freeze': 'Freeze session',\r\n 'steer.resume': 'Resume session',\r\n 'steer.frozen': 'Frozen: the current turn finishes, then the queue pauses until resumed',\r\n 'steer.frozenBadge': 'frozen',\r\n 'steer.freezeFailed': 'Freeze failed, please retry.',\r\n 'steer.resumeFailed': 'Resume failed, please retry.',\r\n}\r\n\r\n/** Dictionary key union. */\r\nexport type SteerKey = keyof typeof zh\r\n","/**\r\n * Session-freeze store shared by the composer freeze button (the control)\r\n * and the steering dock (the banner/disabled states).\r\n *\r\n * The queue is fully decoupled from freezing: freezing only stops the agent\n * from consuming the queue (the detached entries are preserved here so the\r\n * driver finds no pending work and stops). While frozen the entries stay\r\n * fully editable — text, order and the planned insertion tier (now/next/\r\n * later) can all change; resume re-submits the queue honoring those tiers.\r\n */\r\n\r\n/** Insertion tier planned for one detached queued message. */\r\nexport type FrozenTier = 'queue' | 'safe_point' | 'force'\r\n\r\n/** One detached queued message with its planned insertion tier. */\r\nexport interface FrozenEntry {\r\n text: string\r\n tier: FrozenTier\r\n}\r\n\r\nexport interface FreezeState {\r\n frozen: boolean\r\n /** Detached queued messages in FIFO order, each with a planned tier. */\r\n pending: readonly FrozenEntry[]\r\n}\r\n\r\nconst listeners = new Set<() => void>()\r\nlet state: FreezeState = { frozen: false, pending: [] }\r\n\r\n/** Minimal snapshot store (no runtime dependency, stable identity per mount). */\r\nexport const freezeStore = {\r\n getSnapshot(): FreezeState {\r\n return state\r\n },\r\n subscribe(listener: () => void): () => void {\r\n listeners.add(listener)\r\n return () => { listeners.delete(listener) }\r\n },\r\n set(next: FreezeState): void {\r\n state = next\r\n for (const listener of listeners) listener()\r\n },\r\n}\r\n\r\n/** Reset for tests. */\r\nexport function resetFreezeStore(): void {\r\n state = { frozen: false, pending: [] }\r\n for (const listener of listeners) listener()\r\n}\r\n\r\n/** Append one queued message while frozen (new input lands in the detached queue). */\r\nexport function pushPending(text: string, tier: FrozenTier = 'queue'): void {\r\n state = { ...state, pending: [...state.pending, { text, tier }] }\r\n emit()\r\n}\r\n\r\n/** Edit one detached queued message's text in place. */\r\nexport function updatePendingAt(index: number, text: string): void {\r\n const pending = [...state.pending]\r\n if (index < 0 || index >= pending.length) return\r\n const entry = pending[index]\r\n if (entry === undefined) return\r\n pending[index] = { ...entry, text }\r\n state = { ...state, pending }\r\n emit()\r\n}\r\n\r\n/** Change one detached queued message's planned insertion tier. */\r\nexport function setTierAt(index: number, tier: FrozenTier): void {\r\n const pending = [...state.pending]\r\n if (index < 0 || index >= pending.length) return\r\n const entry = pending[index]\r\n if (entry === undefined) return\r\n pending[index] = { ...entry, tier }\r\n state = { ...state, pending }\r\n emit()\r\n}\r\n\r\n/** Remove one detached queued message. */\r\nexport function removePendingAt(index: number): void {\r\n if (index < 0 || index >= state.pending.length) return\r\n state = { ...state, pending: state.pending.filter((_, i) => i !== index) }\r\n emit()\r\n}\r\n\r\n/** Move one detached queued message to a new position (reorder while frozen). */\r\nexport function movePending(from: number, to: number): void {\r\n if (from === to) return\r\n const pending = [...state.pending]\r\n const [moved] = pending.splice(from, 1)\r\n if (moved === undefined) return\r\n pending.splice(to, 0, moved)\r\n state = { ...state, pending }\r\n emit()\r\n}\r\n\r\nfunction emit(): void {\r\n for (const listener of listeners) listener()\r\n}\r\n","/**\r\n * Three-tier steering queue dock: the shadowing replacement for the official\r\n * `conversation.input.dock` entry (same cell id `queue`, priority -1, so the\r\n * lower priority wins and the official QueueDock never renders while this\r\n * plugin is mounted).\r\n *\r\n * Every queued row carries three planning buttons:\r\n * - green (later, the default state): the row already queues for the next\r\n * turn —plain Enter keeps feeding rows here; pressing green on a row that\r\n * was already steered (yellow) revokes the insertion and pulls it back to\r\n * later (the yellow flow is reversible);\r\n * - yellow (next): strict-steer the row into the running turn, consumed at\r\n * the next step boundary (after the current action finishes);\r\n * - red (now): cancel the running turn, then remove the row and re-send its\r\n * text as a fresh message —the re-send arms the harness wake latch (the\r\n * converged driver restarts) and the interrupted input is processed as the\r\n * next turn's input. A plain steer after cancel would re-insert a message\r\n * that is already pending in next-turn and the inbox rejects it.\r\n *\r\n * The toolbar also exposes a queue-level \"cancel and clear\" that stops the\r\n * current run and removes every queued row, plus a session-level\r\n * freeze/resume toggle for the peak-hour scenario: freeze stops the current\r\n * run while preserving the queue (keepInbox), resume re-arms the driver by\r\n * re-sending the first queued row so the preserved work continues.\r\n */\r\nimport { useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from 'react'\r\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\r\n// Type-only: the conversation slot/contract declarations (module augmentation\r\n// for the SlotMap and the session standard kit). No value import crosses the\r\n// plugin boundary.\r\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\r\nimport {\r\n IconCheckOutline16, IconChevronDownOutline14, IconChevronUpOutline14, IconCloseOutline16,\r\n IconEditOutline16, IconQueueOutline14, IconRightUpOutline16, IconTrashOutline16, Tooltip,\r\n} from '@deepseek-ai/dsh-client-ui-primitives'\r\nimport { freezeStore, setTierAt, updatePendingAt, removePendingAt, movePending } from './freeze-store.ts'\r\nimport css from './steer-queue-dock.module.css'\r\n\r\n/** One mutation accepted by the conversation queue verb. */\r\nexport type SteerQueueAction =\r\n | { kind: 'edit'; content: readonly { type: 'text'; text: string }[] }\r\n | { kind: 'remove' }\r\n | { kind: 'steer' }\r\n\r\n/** Busy marker for a whole-queue rebuild (reorder); locks every row action. */\r\nconst REORDER_MARK = '__reorder__'\r\n\r\n/** localStorage key for the manual collapse state (dsh-queue-plus parity). */\r\nconst COLLAPSE_KEY = 'dsh-input-traffic:collapsed'\r\n\r\n/** Queue operations injected by the session-scoped registration. */\r\nexport interface SteerQueueDockInjected {\r\n updateQueue: (itemId: string, action: SteerQueueAction) => Promise<void>\r\n /** Cancel the current turn while preserving the pending queue. */\r\n cancel: () => Promise<void>\r\n /** Re-send one plain-text message as a queued follow-up (the revoke path). */\r\n send: (text: string) => Promise<void>\r\n /** Back-fill the composer draft (the pull-back-to-composer edit path). */\r\n setDraft: (text: string) => void\r\n notify: (level: 'info' | 'error', text: string) => void\r\n}\r\n\r\n/** Full props of a dock entry: InputZone owner share + session standard kit + global seat + the locale seat. */\r\nexport type SteerQueueDockProps = PropsRuntime<'conversation.input.dock'> & SteerQueueDockInjected & PropsLocale<'steer'>\r\n\r\n/** The planning tier of one queued row. */\r\nexport type SteerTier = 'now' | 'next' | 'later'\r\n\r\n/**\r\n * Resolve the action sequence for one planning button press. Pure so the\r\n * button wiring and its tests share one truth.\r\n * @param tier - the pressed planning tier.\r\n * @returns the queue mutation (red re-uses a steer-shaped action for the\r\n * yellow branch; the red branch performs cancel + remove + resend instead).\r\n */\r\nexport function planActionFor(tier: SteerTier): { action: SteerQueueAction; interruptFirst: boolean } {\r\n if (tier === 'later') return { action: { kind: 'steer' }, interruptFirst: false }\r\n // Yellow steers only; red cancels the running turn first, then steers.\r\n return { action: { kind: 'steer' }, interruptFirst: tier === 'now' }\r\n}\r\n\r\n/**\r\n * Project the tier badge of one inbox row from its placement. Pure so the\r\n * row rendering and its tests share one truth.\r\n * @param placement - the inbox projection placement.\r\n * @returns the tier badge, or null for non-visible context rows.\r\n */\r\nexport function badgeFor(placement: 'queued' | 'steering' | 'context'): SteerTier | null {\r\n if (placement === 'steering') return 'next'\r\n if (placement === 'queued') return 'later'\r\n return null\r\n}\r\n\r\n/**\r\n * Auto-grow one edit textarea to its content. The CSS max-height caps the\r\n * growth; beyond it the textarea scrolls internally. Height is reset first so\r\n * shrink (deleting lines) also tracks the content.\r\n * @param el - the textarea to resize in place.\r\n */\r\nexport function resizeEditor(el: HTMLTextAreaElement): void {\r\n el.style.height = 'auto'\r\n el.style.height = `${el.scrollHeight}px`\r\n}\r\n\r\n/**\r\n * Queue strip with three-tier planning: one item renders directly; multiple\r\n * items default to a collapsible count header; an empty queue renders nothing.\r\n */\r\nexport function SteerQueueDock({ useSession, input, updateQueue, cancel, send, setDraft, notify, t }: SteerQueueDockProps) {\r\n const inbox = useSession(s => s.queue)\r\n const queue = useMemo(() => inbox.filter(row => row.placement === 'queued'), [inbox])\r\n const steering = useMemo(() => inbox.filter(row => row.placement === 'steering'), [inbox])\r\n const running = useSession(s => s.running)\r\n const queueMutable = useSession(s => s.subagent === null)\r\n const [editing, setEditing] = useState<{ id: string; text: string } | null>(null)\r\n const [busy, setBusy] = useState<string | null>(null)\r\n const [clearing, setClearing] = useState(false)\r\n // Two-step clear confirmation: the first click arms the prompt, the second\r\n // executes; arming auto-reverts after a few seconds (no native confirm).\r\n const [confirmClear, setConfirmClear] = useState(false)\r\n const confirmTimer = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n // Drag-and-drop reorder source index and the current drop-target row.\r\n const dragIndex = useRef<number | null>(null)\r\n const [dragOver, setDragOver] = useState<number | null>(null)\r\n // Collapse state persists across mounts (dsh-queue-plus parity).\r\n const [collapsed, setCollapsed] = useState(() => {\r\n try {\r\n const v = localStorage.getItem(COLLAPSE_KEY)\r\n return v === null ? true : v === '1'\r\n } catch {\r\n return true\r\n }\r\n })\r\n // Session-level freeze lives in the composer-right control; the dock reads\r\n // the shared store for the banner and inert states. While frozen the\r\n // detached queue is rendered here (read-only) so the waiting area stays\r\n // visible — freezing only pauses the running behavior, it must not hide\r\n // the queued messages.\r\n const { frozen, pending: frozenPending } = useSyncExternalStore(freezeStore.subscribe, freezeStore.getSnapshot)\r\n const listId = useId()\r\n // The edit textarea; grown to its content on entry and on every input.\r\n const editorRef = useRef<HTMLTextAreaElement>(null)\r\n\r\n useEffect(() => {\r\n if (queue.length === 0 && !collapsed) setCollapsed(true)\r\n // Frozen-row edits use a `frozen:` id that never exists in the dsh queue;\r\n // skip the stale-check for them so the detached queue stays editable.\r\n if (editing !== null && !editing.id.startsWith('frozen:') && (!queueMutable || !queue.some(row => row.id === editing.id))) setEditing(null)\r\n }, [collapsed, editing, queue, queueMutable])\r\n\r\n // Persist the manual collapse state; clear the confirm timer on unmount.\r\n useEffect(() => {\r\n try {\r\n localStorage.setItem(COLLAPSE_KEY, collapsed ? '1' : '0')\r\n } catch {\r\n /* storage unavailable: in-memory only */\r\n }\r\n }, [collapsed])\r\n useEffect(() => () => {\r\n if (confirmTimer.current !== null) clearTimeout(confirmTimer.current)\r\n }, [])\r\n\r\n // Grow the editor to its full content when a row enters edit mode.\r\n const editingId = editing?.id\r\n useEffect(() => {\r\n if (editingId === undefined) return\r\n const el = editorRef.current\r\n if (el !== null) resizeEditor(el)\r\n }, [editingId])\r\n\r\n // The dock stays mounted while the agent runs (the freeze entry must be\r\n // reachable before any message queues), while any row is pending, and while\r\n // the session is frozen (the detached queue stays visible).\r\n if (queue.length === 0 && steering.length === 0 && !running && !frozen) return null\r\n\r\n const interactionActive = queueMutable && (editing !== null || busy !== null || clearing)\r\n const expanded = !collapsed || interactionActive\r\n const listVisible = queue.length === 1 || expanded\r\n const planDisabled = !queueMutable || !running || frozen\r\n const nothingPending = queue.length === 0 && steering.length === 0\r\n // Reordering rebuilds the queue by re-sending texts; non-text rows cannot\r\n // be re-sent, so sorting is disabled while any such row is queued.\r\n const reorderUnsupported = queue.some(row => row.text === null)\r\n // Pull-back-to-composer is only offered when the composer draft is empty:\r\n // the pulled message back-fills the draft, so an occupied composer would be\r\n // overwritten. Steered (yellow/red) rows never offer it — once inserted,\r\n // they are not deeply re-edited.\r\n const composerEmpty = input.draft.trim() === ''\r\n\r\n const applyAction = async (\r\n itemId: string,\r\n action: SteerQueueAction,\r\n failure: string,\r\n ): Promise<boolean> => {\r\n setBusy(itemId)\r\n try {\r\n await updateQueue(itemId, action)\r\n return true\r\n } catch {\r\n notify('error', failure)\r\n return false\r\n } finally {\r\n setBusy(current => current === itemId ? null : current)\r\n }\r\n }\r\n\r\n const saveEdit = async (): Promise<void> => {\r\n if (editing === null || editing.text.trim() === '') return\r\n const itemId = editing.id\r\n const text = editing.text\r\n setBusy(itemId)\r\n try {\r\n await updateQueue(itemId, { kind: 'edit', content: [{ type: 'text', text }] })\r\n setEditing(null)\r\n } catch {\r\n // The edit failed (the agent may have claimed the row mid-edit): fall\r\n // back to the composer so the edited content is never lost. Only when\r\n // the composer is free — an occupied draft must not be overwritten.\r\n if (input.draft.trim() === '') {\r\n setDraft(text)\r\n setEditing(null)\r\n notify('error', t('queue.editFailed.pulledBack'))\r\n } else {\r\n notify('error', t('queue.editFailed'))\r\n }\r\n } finally {\r\n setBusy(current => current === itemId ? null : current)\r\n }\r\n }\r\n\r\n const steerRow = async (row: { id: string; text: string | null }, tier: Exclude<SteerTier, 'later'>): Promise<void> => {\r\n setBusy(row.id)\r\n try {\r\n if (tier === 'now') {\r\n // Interrupt, then re-submit: cancel stops the current run (keepInbox),\r\n // the row is removed so its identity cannot collide, and re-sending\r\n // the text arms the harness wake latch (the converged driver restarts\r\n // and processes it as the next turn's input). A plain steer after\r\n // cancel would re-insert a message already pending in next-turn and\r\n // the inbox rejects the duplicate.\r\n await cancel()\r\n await updateQueue(row.id, { kind: 'remove' })\r\n if (row.text !== null) await send(row.text)\r\n } else {\r\n await updateQueue(row.id, { kind: 'steer' })\r\n }\r\n } catch {\r\n notify('error', tier === 'now' ? t('steer.nowFailed') : t('steer.nextFailed'))\r\n } finally {\r\n setBusy(current => current === row.id ? null : current)\r\n }\r\n }\r\n\r\n /**\r\n * Revoke a steered (yellow) or interrupting (red) row back to later: remove\r\n * the admitted row and re-send its text as a queued follow-up, so it lands\r\n * in next-turn again (the yellow flow is reversible).\r\n */\r\n const revokeToLater = async (row: { id: string; text: string | null }): Promise<void> => {\r\n if (row.text === null) return\r\n setBusy(row.id)\r\n try {\r\n await updateQueue(row.id, { kind: 'remove' })\r\n await send(row.text)\r\n } catch {\r\n notify('error', t('steer.revokeFailed'))\r\n } finally {\r\n setBusy(current => current === row.id ? null : current)\r\n }\r\n }\r\n\r\n /**\r\n * Rebuild the queue in a new order: remove every queued row, then re-send\r\n * the texts sequentially so the agent's next-turn list matches the new\r\n * order. Concurrency protection (dsh-queue-plus parity): if a remove fails\r\n * with queue-item-not-found, the agent already claimed that row — the\r\n * rebuild stops immediately and nothing is re-sent, so the changed queue\r\n * is never scrambled.\r\n */\r\n const rebuildQueue = async (rows: readonly { id: string; text: string | null }[], next: readonly { id: string; text: string | null }[]): Promise<void> => {\r\n setBusy(REORDER_MARK)\r\n try {\r\n for (const row of rows) {\r\n try {\r\n await updateQueue(row.id, { kind: 'remove' })\r\n } catch (error) {\r\n if (error instanceof Error && error.message.includes('queue-item-not-found')) {\r\n notify('error', t('steer.reorderStale'))\r\n return\r\n }\r\n throw error\r\n }\r\n }\r\n for (const row of next) {\r\n if (row.text !== null) await send(row.text)\r\n }\r\n } catch {\r\n notify('error', t('steer.reorderFailed'))\r\n } finally {\r\n setBusy(null)\r\n }\r\n }\r\n\r\n /**\r\n * Move one queued row up/down in the FIFO order (arrow buttons).\r\n */\r\n const reorder = async (rowId: string, delta: -1 | 1): Promise<void> => {\r\n const rows = queue\r\n const index = rows.findIndex(row => row.id === rowId)\r\n const target = index + delta\r\n if (index < 0 || target < 0 || target >= rows.length) return\r\n const next = [...rows]\r\n const swapped = next[index] as typeof next[number]\r\n next[index] = next[target] as typeof next[number]\r\n next[target] = swapped\r\n if (next.some(row => row.text === null)) {\r\n notify('error', t('steer.reorder.unsupported'))\r\n return\r\n }\r\n await rebuildQueue(rows, next)\r\n }\r\n\r\n /**\r\n * Move one row to an absolute position (drag-and-drop drop handler).\r\n */\r\n const reorderTo = async (fromIndex: number, toIndex: number): Promise<void> => {\r\n if (fromIndex === toIndex) return\r\n const rows = queue\r\n if (rows[fromIndex] === undefined || rows[toIndex] === undefined) return\r\n const next = [...rows]\r\n const [moved] = next.splice(fromIndex, 1)\r\n if (moved === undefined) return\r\n next.splice(toIndex, 0, moved)\r\n if (next.some(row => row.text === null)) {\r\n notify('error', t('steer.reorder.unsupported'))\r\n return\r\n }\r\n await rebuildQueue(rows, next)\r\n }\r\n\r\n /** Arm or execute the two-step clear confirmation. */\r\n const armClear = (): void => {\r\n if (confirmClear) {\r\n if (confirmTimer.current !== null) clearTimeout(confirmTimer.current)\r\n setConfirmClear(false)\r\n void clearAll()\r\n return\r\n }\r\n setConfirmClear(true)\r\n if (confirmTimer.current !== null) clearTimeout(confirmTimer.current)\r\n confirmTimer.current = setTimeout(() => setConfirmClear(false), 3000)\r\n }\r\n\r\n /** Abort the armed clear confirmation (the explicit cancel button). */\r\n const cancelClear = (): void => {\r\n if (confirmTimer.current !== null) clearTimeout(confirmTimer.current)\r\n setConfirmClear(false)\r\n }\r\n\r\n /** Save an in-place edit of one detached (frozen) queued message. */\r\n const saveFrozenEdit = async (index: number): Promise<void> => {\r\n if (editing === null) return\r\n const text = editing.text.trim()\r\n if (text === '') {\r\n setEditing(null)\r\n return\r\n }\r\n updatePendingAt(index, text)\r\n setEditing(null)\r\n }\r\n\r\n /**\r\n * Pull one queued row back into the composer draft for editing: the text\r\n * back-fills the input box and the row leaves the queue; the user edits and\r\n * resubmits it as a fresh message.\r\n */\r\n const pullBackToComposer = async (row: { id: string; text: string | null }): Promise<void> => {\r\n if (row.text === null) return\r\n setDraft(row.text)\r\n setBusy(row.id)\r\n try {\r\n await updateQueue(row.id, { kind: 'remove' })\r\n } catch {\r\n notify('error', t('steer.pullBackFailed'))\r\n } finally {\r\n setBusy(current => current === row.id ? null : current)\r\n }\r\n }\r\n\r\n const clearAll = async (): Promise<void> => {\r\n setClearing(true)\r\n // Cancel the current run and clear every pending row (queued and\r\n // steering alike). Removal races the agent claiming rows;\r\n // item-not-found is a normal convergence and must not surface.\r\n const pending = [...queue, ...steering]\r\n try {\r\n await cancel()\r\n await Promise.all(pending.map(row =>\r\n updateQueue(row.id, { kind: 'remove' }).catch(() => undefined),\r\n ))\r\n } catch {\r\n notify('error', t('steer.clearFailed'))\r\n } finally {\r\n setClearing(false)\r\n }\r\n }\r\n\r\n return (\r\n <div className={css.dock} data-steer-dock=\"\">\r\n <div className={css.panel}>\r\n <div className={css.toolbar}>\r\n <button\r\n type=\"button\"\r\n className={css.header}\r\n aria-controls={listId}\r\n aria-expanded={expanded}\r\n disabled={queue.length <= 1 || interactionActive}\r\n onClick={() => { setCollapsed(value => !value) }}\r\n >\r\n <span className={css.lead} aria-hidden><IconQueueOutline14 /></span>\r\n {queue.length > 0 && (\r\n <span className={css.count}>{t('queue.count', { n: queue.length })}</span>\r\n )}\r\n {queue.length > 1 && (\r\n <span className={css.chevron} aria-hidden>\r\n {expanded ? <IconChevronDownOutline14 /> : <IconChevronUpOutline14 />}\r\n </span>\r\n )}\r\n </button>\r\n <div className={css.toolbarActions}>\r\n {confirmClear && (\r\n <button\r\n type=\"button\"\r\n className={css.clearCancel}\r\n aria-label={t('steer.clear.cancel')}\r\n disabled={clearing || busy !== null || nothingPending}\r\n onClick={cancelClear}\r\n >\r\n <span className={css.clearLabel}>{t('steer.clear.cancel')}</span>\r\n </button>\r\n )}\r\n <Tooltip label={confirmClear ? t('steer.clear.confirm') : t('steer.clear')} side=\"top\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={`${css.clear} ${confirmClear ? css.clearConfirm : ''}`}\r\n aria-label={confirmClear ? t('steer.clear.confirm') : t('steer.clear')}\r\n disabled={clearing || busy !== null || nothingPending}\r\n onClick={armClear}\r\n >\r\n <IconTrashOutline16 size={14} />\r\n <span className={css.clearLabel}>{confirmClear ? t('steer.clear.confirm') : t('steer.clear')}</span>\r\n </button>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n {frozen && (\r\n <div className={css.frozenBanner} role=\"status\">\r\n {t('steer.frozen')}\r\n </div>\r\n )}\r\n {/* While frozen the queue is detached into the shared store: render it\r\n here so the waiting area never disappears. The detached rows stay\r\n fully editable (edit / remove / reorder) — freezing only pauses\r\n the running behavior, it must not lock the queue. */}\r\n {frozen && frozenPending.length > 0 && (\r\n <ul className={css.frozenList} data-testid=\"frozen-list\">\r\n {frozenPending.map((entry, i) => {\r\n const editingFrozen = editing?.id === `frozen:${i}`\r\n const text = entry.text\r\n return (\r\n <li\r\n key={i}\r\n className={`${css.frozenRow} ${dragOver === i && frozen ? css.rowDragOver : ''}`}\r\n data-tier={entry.tier === 'force' ? 'now' : entry.tier === 'safe_point' ? 'next' : 'later'}\r\n data-editing={editingFrozen ? '' : undefined}\r\n draggable={!editingFrozen}\r\n title={!editingFrozen ? t('steer.dragReorder') : undefined}\r\n onDragStart={(event) => {\r\n if (editingFrozen) return\r\n dragIndex.current = i\r\n event.dataTransfer.effectAllowed = 'move'\r\n }}\r\n onDragOver={(event) => {\r\n if (dragIndex.current === null) return\r\n event.preventDefault()\r\n setDragOver(i)\r\n }}\r\n onDrop={(event) => {\r\n event.preventDefault()\r\n const from = dragIndex.current\r\n dragIndex.current = null\r\n setDragOver(null)\r\n if (from !== null) movePending(from, i)\r\n }}\r\n onDragEnd={() => {\r\n dragIndex.current = null\r\n setDragOver(null)\r\n }}\r\n >\r\n <span className={css.lead} aria-hidden><IconQueueOutline14 /></span>\r\n <SteerBadge tier={entry.tier === 'force' ? 'now' : entry.tier === 'safe_point' ? 'next' : 'later'} t={t} />\r\n {editingFrozen\r\n ? (\r\n <textarea\r\n ref={editorRef}\r\n autoFocus\r\n className={css.editor}\r\n aria-label={t('queue.edit')}\r\n rows={1}\r\n value={editing?.text ?? text}\r\n onChange={(event) => { setEditing({ id: `frozen:${i}`, text: event.currentTarget.value }) }}\r\n onInput={(event) => { resizeEditor(event.currentTarget) }}\r\n onKeyDown={(event) => {\r\n if (event.key === 'Escape') {\r\n setEditing(null)\r\n return\r\n }\r\n if (event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing) {\r\n event.preventDefault()\r\n void saveFrozenEdit(i)\r\n }\r\n }}\r\n />\r\n )\r\n : <span className={css.preview}>{text}</span>}\r\n <div className={css.actions}>\r\n {editingFrozen ? (\r\n <>\r\n <Tooltip label={t('queue.save')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.save')}\r\n disabled={editing === null || editing.text.trim() === ''}\r\n onClick={() => { void saveFrozenEdit(i) }}\r\n >\r\n <IconCheckOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.cancelEdit')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.cancelEdit')}\r\n onClick={() => { setEditing(null) }}\r\n >\r\n <IconCloseOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n </>\r\n ) : (\r\n <>\r\n <Tooltip label={t('steer.moveUp')} side=\"bottom\" delayMs={500} disabled={i === 0}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.moveUp')}\r\n disabled={i === 0}\r\n onClick={() => movePending(i, i - 1)}\r\n >\r\n <IconChevronUpOutline14 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.moveDown')} side=\"bottom\" delayMs={500} disabled={i === frozenPending.length - 1}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.moveDown')}\r\n disabled={i === frozenPending.length - 1}\r\n onClick={() => movePending(i, i + 1)}\r\n >\r\n <IconChevronDownOutline14 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.edit')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.edit')}\r\n onClick={() => { setEditing({ id: `frozen:${i}`, text }) }}\r\n >\r\n <IconEditOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.remove')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.remove')}\r\n onClick={() => removePendingAt(i)}\r\n >\r\n <IconTrashOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n {/* Planned insertion tier: freezing pauses consumption,\r\n it must not lock the tier planning of each row. */}\r\n <span className={css.plan} role=\"group\" aria-label={t('steer.later.aria')}>\r\n <Tooltip label={t('steer.now')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierNow}`}\r\n aria-label={t('steer.now')}\r\n aria-pressed={entry.tier === 'force' || undefined}\r\n onClick={() => setTierAt(i, 'force')}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.next')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierNext}`}\r\n aria-label={t('steer.next')}\r\n aria-pressed={entry.tier === 'safe_point' || undefined}\r\n onClick={() => setTierAt(i, 'safe_point')}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.later')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierLater}`}\r\n aria-label={t('steer.later')}\r\n aria-pressed={entry.tier === 'queue' || undefined}\r\n onClick={() => setTierAt(i, 'queue')}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n </span>\r\n </>\r\n )}\r\n </div>\r\n <span className={css.frozenMark}>{t('steer.frozenBadge')}</span>\r\n </li>\r\n )\r\n })}\r\n </ul>\r\n )}\r\n <ul id={listId} className={css.list} hidden={!listVisible}>\r\n {listVisible && queue.map((row, index) => (\r\n <li\r\n key={row.id}\r\n className={`${css.row} ${dragOver === index ? css.rowDragOver : ''}`}\r\n data-tier={badgeFor('queued') ?? undefined}\r\n data-editing={editing?.id === row.id ? '' : undefined}\r\n draggable={queueMutable && !reorderUnsupported && busy === null && !frozen}\r\n title={queueMutable && !reorderUnsupported && busy === null && !frozen ? t('steer.dragReorder') : undefined}\r\n onDragStart={(event) => {\r\n dragIndex.current = index\r\n event.dataTransfer.effectAllowed = 'move'\r\n }}\r\n onDragOver={(event) => {\r\n if (dragIndex.current === null) return\r\n event.preventDefault()\r\n setDragOver(index)\r\n }}\r\n onDrop={(event) => {\r\n event.preventDefault()\r\n const from = dragIndex.current\r\n dragIndex.current = null\r\n setDragOver(null)\r\n if (from !== null) void reorderTo(from, index)\r\n }}\r\n onDragEnd={() => {\r\n dragIndex.current = null\r\n setDragOver(null)\r\n }}\r\n >\r\n {queue.length === 1 && <span className={css.lead} aria-hidden><IconQueueOutline14 /></span>}\r\n <SteerBadge tier={badgeFor('queued')} t={t} />\r\n {editing?.id === row.id\r\n ? (\r\n <textarea\r\n ref={editorRef}\r\n autoFocus\r\n className={css.editor}\r\n aria-label={t('queue.edit')}\r\n rows={1}\r\n value={editing.text}\r\n onChange={(event) => { setEditing({ id: row.id, text: event.currentTarget.value }) }}\r\n onInput={(event) => { resizeEditor(event.currentTarget) }}\r\n onKeyDown={(event) => {\r\n if (event.key === 'Escape') {\r\n setEditing(null)\r\n return\r\n }\r\n // Plain Enter saves; Shift+Enter keeps editing (newline).\r\n if (event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing) {\r\n event.preventDefault()\r\n void saveEdit()\r\n }\r\n }}\r\n />\r\n )\r\n : <span className={css.preview}>{row.preview}</span>}\r\n {queueMutable && <div className={css.actions}>\r\n {editing?.id === row.id\r\n ? (\r\n <>\r\n <Tooltip label={t('queue.save')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.save')}\r\n disabled={busy !== null || editing.text.trim() === ''}\r\n onClick={() => { void saveEdit() }}\r\n >\r\n <IconCheckOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.cancelEdit')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.cancelEdit')}\r\n disabled={busy !== null}\r\n onClick={() => { setEditing(null) }}\r\n >\r\n <IconCloseOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n </>\r\n )\r\n : (\r\n <>\r\n <Tooltip label={t('steer.moveUp')} side=\"bottom\" delayMs={500} disabled={frozen || reorderUnsupported}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.moveUp')}\r\n title={reorderUnsupported ? t('steer.reorder.unsupported') : undefined}\r\n disabled={busy !== null || frozen || reorderUnsupported}\r\n onClick={() => { void reorder(row.id, -1) }}\r\n >\r\n <IconChevronUpOutline14 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.moveDown')} side=\"bottom\" delayMs={500} disabled={frozen || reorderUnsupported}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.moveDown')}\r\n title={reorderUnsupported ? t('steer.reorder.unsupported') : undefined}\r\n disabled={busy !== null || frozen || reorderUnsupported}\r\n onClick={() => { void reorder(row.id, 1) }}\r\n >\r\n <IconChevronDownOutline14 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.pullBack')} side=\"bottom\" delayMs={500} disabled={row.text === null || !composerEmpty}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('steer.pullBack')}\r\n title={row.text === null ? t('steer.pullBack.unsupported') : !composerEmpty ? t('steer.pullBack.composerBusy') : undefined}\r\n disabled={busy !== null || frozen || row.text === null || !composerEmpty}\r\n onClick={() => { void pullBackToComposer(row) }}\r\n >\r\n <IconRightUpOutline16 />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.edit')} side=\"bottom\" delayMs={500} disabled={row.text === null}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.edit')}\r\n title={row.text === null ? t('queue.edit.unsupported') : undefined}\r\n disabled={busy !== null || row.text === null}\r\n onClick={() => {\r\n if (row.text !== null) setEditing({ id: row.id, text: row.text })\r\n }}\r\n >\r\n <IconEditOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('queue.remove')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={css.action}\r\n aria-label={t('queue.remove')}\r\n disabled={busy !== null}\r\n onClick={() => {\r\n void applyAction(row.id, { kind: 'remove' }, t('queue.removeFailed'))\r\n }}\r\n >\r\n <IconTrashOutline16 size={14} />\r\n </button>\r\n </Tooltip>\r\n <span className={css.plan} role=\"group\" aria-label={t('steer.later.aria')}>\r\n <Tooltip label={t('steer.now')} side=\"bottom\" delayMs={500} disabled={planDisabled || row.text === null}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierNow}`}\r\n aria-label={t('steer.now')}\r\n title={planDisabled ? t('steer.unavailable.running') : row.text === null ? t('steer.now.unsupported') : undefined}\r\n disabled={busy !== null || planDisabled || row.text === null}\r\n onClick={() => { void steerRow(row, 'now') }}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.next')} side=\"bottom\" delayMs={500} disabled={planDisabled}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierNext}`}\r\n aria-label={t('steer.next')}\r\n title={planDisabled ? t('steer.unavailable.running') : undefined}\r\n disabled={busy !== null || planDisabled}\r\n onClick={() => { void steerRow(row, 'next') }}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n <Tooltip label={t('steer.later')} side=\"bottom\" delayMs={500}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierLater}`}\r\n aria-label={t('steer.later')}\r\n aria-pressed\r\n disabled={busy !== null || clearing}\r\n onClick={() => {\r\n // Later is the default queue state; pressing it\r\n // keeps the row queued (no-op by design).\r\n }}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n </span>\r\n </>\r\n )}\r\n </div>}\r\n </li>\r\n ))}\r\n </ul>\r\n {steering.length > 0 && (\r\n <ul className={css.steeringList} data-steering-list=\"\">\r\n {steering.map(row => (\r\n <li key={row.id} className={css.row} data-tier={badgeFor('steering') ?? undefined}>\r\n <span className={css.lead} aria-hidden><IconQueueOutline14 /></span>\r\n <SteerBadge tier={badgeFor('steering')} t={t} />\r\n <span className={css.preview}>{row.preview}</span>\r\n <div className={css.actions}>\r\n <Tooltip label={t('steer.revoke')} side=\"bottom\" delayMs={500} disabled={row.text === null}>\r\n <button\r\n type=\"button\"\r\n className={`${css.tier} ${css.tierLater}`}\r\n aria-label={t('steer.revoke')}\r\n title={row.text === null ? t('steer.revoke.unsupported') : undefined}\r\n disabled={busy !== null || row.text === null || frozen}\r\n onClick={() => { void revokeToLater(row) }}\r\n >\r\n <span className={css.dot} aria-hidden />\r\n </button>\r\n </Tooltip>\r\n </div>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n/** Badge label keys per tier. */\r\nconst BADGE_KEYS: Record<SteerTier, string> = {\r\n now: 'steer.badge.now',\r\n next: 'steer.badge.next',\r\n later: 'steer.badge.later',\r\n}\r\n\r\n/** Badge tint classes per tier (present at bundle time; typed through the css-modules declaration). */\r\nconst BADGE_CLASSES: Record<SteerTier, string> = {\r\n now: css.badgeNow as string,\r\n next: css.badgeNext as string,\r\n later: css.badgeLater as string,\r\n}\r\n\r\n/** One row's tier badge: colored dot + label; context rows render nothing. */\r\nfunction SteerBadge({ tier, t }: { tier: SteerTier | null; t: SteerQueueDockProps['t'] }) {\r\n if (tier === null) return null\r\n return (\r\n <span className={`${css.badge} ${BADGE_CLASSES[tier]}`} data-badge={tier}>\r\n <span className={css.dot} aria-hidden />\r\n <span className={css.badgeLabel}>{t(BADGE_KEYS[tier])}</span>\r\n </span>\r\n )\r\n}\r\n","/**\r\n * Session freeze/resume control, mounted in the composer's right tool row\r\n * (`conversation.input.right`) so it is reachable before anything queues.\r\n *\r\n * Peak-hour pause semantics: freeze does NOT interrupt the running turn —it\r\n * finishes naturally. The queued messages are detached (removed, preserved in\r\n * the shared store), so the driver finds no pending work and stops after the\r\n * current turn. Resume re-submits the preserved texts, waking the driver and\r\n * continuing the queue.\r\n */\r\nimport { useSyncExternalStore } from 'react'\r\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\r\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\r\nimport { freezeStore } from './freeze-store.ts'\r\nimport type { SteerQueueDockInjected } from './steer-queue-dock.tsx'\r\nimport css from './freeze-button.module.css'\r\n\r\n/** Full props of the composer-right entry: InputZone owner share + injected verbs + locale seat. */\r\nexport type FreezeButtonProps = PropsRuntime<'conversation.input.right'> & SteerQueueDockInjected & PropsLocale<'steer'>\r\n\r\n/**\r\n * Freeze/resume toggle for the peak-hour scenario.\r\n * @param props - slot props; the session snapshot drives the detach list.\r\n */\r\nexport function FreezeButton({ session, updateQueue, cancel, send, notify, t }: FreezeButtonProps) {\r\n const { frozen } = useSyncExternalStore(freezeStore.subscribe, freezeStore.getSnapshot)\r\n\r\n const freeze = async (): Promise<void> => {\r\n const queued = session.queue.filter(row => row.placement === 'queued')\r\n // Preserve plain-text copies; non-text rows cannot be re-sent and are\r\n // released by the freeze (documented limitation).\r\n const pending = queued.flatMap(row => row.text === null ? [] : [{ text: row.text, tier: 'queue' as const }])\r\n // Detach every queued row: the running turn finishes naturally, then the\r\n // driver finds no pending work and stops.\r\n await Promise.all(queued.map(row =>\r\n updateQueue(row.id, { kind: 'remove' }).catch(() => undefined),\r\n ))\r\n freezeStore.set({ frozen: true, pending })\r\n }\r\n\r\n const resume = async (): Promise<void> => {\r\n const pending = freezeStore.getSnapshot().pending\r\n freezeStore.set({ frozen: false, pending: [] })\r\n try {\r\n // Re-submit the preserved queue in FIFO order honoring each entry's\r\n // planned insertion tier: a force (red) entry interrupts the current\r\n // run first so it is consumed immediately; safe_point/later entries\r\n // flow through the wake-and-continue chain.\r\n for (const entry of pending) {\r\n if (entry.tier === 'force') await cancel()\r\n await send(entry.text)\r\n }\r\n } catch {\r\n notify('error', t('steer.resumeFailed'))\r\n }\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n className={css.freeze}\r\n aria-label={frozen ? t('steer.resume') : t('steer.freeze')}\r\n aria-pressed={frozen || undefined}\r\n title={frozen ? t('steer.frozen') : undefined}\r\n onClick={() => {\r\n if (frozen) void resume()\r\n else void freeze()\r\n }}\r\n >\r\n <span className={css.label}>{frozen ? t('steer.resume') : t('steer.freeze')}</span>\r\n </button>\r\n )\r\n}\r\n","/**\r\n * Busy-Enter row hiding: shadows the official `settings.general.item` entry\r\n * `composer-enter` (same cell id, priority -1) so the lower priority wins and\r\n * the official \"繁忙时 Enter 键行为\" row never renders while this plugin is\r\n * mounted.\r\n *\r\n * The behavior itself is taken over by the plugin: plain Enter stays\r\n * queue-later (green), the planning dock owns yellow/red, and the plugin apply\r\n * pins `ui-conversation.busyEnter` to `queue` so no stale preference can\r\n * leak through the hidden row.\r\n */\r\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\r\nimport type {} from '@deepseek-ai/dsh-client-ui-conversation/client'\r\n\r\n/** Full props of a settings-row entry (unused: the row renders nothing). */\r\nexport type HideEnterRowProps = PropsRuntime<'settings.general.item'> & PropsLocale<'steer'>\r\n\r\n/** Render nothing: the official busy-Enter row is hidden while mounted. */\r\nexport function HideEnterRow(_props: HideEnterRowProps): null {\r\n return null\r\n}\r\n","/**\r\n * dsh-input-traffic —browser half.\r\n *\r\n * The whole takeover lives here:\r\n * 1. registers the `steer` dictionaries;\r\n * 2. pins `ui-conversation.busyEnter` to `queue` (plain Enter = green later)\r\n * so the hidden official row cannot leak a stale queue/steer preference;\r\n * 3. shadows the official queue dock (`conversation.input.dock` cell id\r\n * `queue`, priority -1) with the three-tier planning strip;\r\n * 4. shadows the official busy-Enter settings row (`settings.general.item`\r\n * cell id `composer-enter`, priority -1) with a null render.\r\n *\r\n * All @deepseek-ai/* imports are type-only: collaboration happens through\r\n * cordis services and slot registration only (client bundle purity).\r\n */\r\nimport type { ClientContext, SessionId } from '@deepseek-ai/dsh-client-runtime/client'\r\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\r\nimport type {} from '@deepseek-ai/dsh-client-ui-settings/client'\r\nimport type { IConversation } from '@deepseek-ai/dsh-client-ui-conversation/client'\r\nimport { NS, en, zh } from './locales.ts'\r\nimport { SteerQueueDock } from './steer-queue-dock.tsx'\r\nimport type { SteerQueueDockInjected } from './steer-queue-dock.tsx'\r\nimport { FreezeButton } from './freeze-button.tsx'\r\nimport { HideEnterRow } from './hide-enter-row.tsx'\r\n\r\n/** Durable conversation settings namespace owned by ui-conversation. */\r\nconst CONVERSATION_SETTINGS_NAMESPACE = 'ui-conversation'\r\n\r\n/** Busy-Enter field inside that namespace; the plugin pins it to queue. */\r\nconst BUSY_ENTER_FIELD = 'busyEnter'\r\n\r\n/** Services required by the browser half. */\r\nexport const inject = ['slots', 'locale', 'sessions', 'conversation', 'settingsScope']\r\n\r\n/**\r\n * Client plugin body: dictionaries, busy-Enter pinning, and the two slot\r\n * shadowings.\r\n * @param ctx - client root context.\r\n */\r\nexport function apply(ctx: ClientContext): void {\r\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'dsh-input-traffic: dictionaries')\r\n\r\n // Take over the busy-Enter behavior: plain Enter stays queue-later while\r\n // the official row is hidden. Pinning here also repairs a persisted `steer`\r\n // preference that would otherwise keep working invisibly behind the hidden\r\n // row. Best-effort: a memory-mode host simply accepts it locally.\r\n const conversationSettings = ctx.settingsScope.bind<{ busyEnter: 'queue' | 'steer' }>({\r\n namespace: CONVERSATION_SETTINGS_NAMESPACE,\r\n })\r\n void conversationSettings.set(BUSY_ENTER_FIELD, 'queue')\r\n\r\n // Shadow the official queue dock with the three-tier planning strip.\r\n ctx.slots.inject('conversation.input.dock', () => ctx.slots.register({\r\n name: 'conversation.input.dock',\r\n id: 'queue',\r\n order: 20,\r\n priority: -1,\r\n locale: NS,\r\n inject: (sessionId: SessionId): SteerQueueDockInjected => {\r\n const actx = ctx.sessions.scope(sessionId)\r\n if (actx === undefined) throw new Error(`steer dock: session \"${sessionId}\" resolved no scope`)\r\n const conversation = actx.get<IConversation>('conversation')\r\n if (conversation === undefined) throw new Error('steer dock: conversation service unavailable')\r\n return {\r\n updateQueue: (itemId, action) => conversation.updateQueue(itemId, action),\r\n cancel: () => conversation.cancel(),\r\n send: (text) => conversation.send(text),\r\n setDraft: (text) => { conversation.input.for(actx).actions.setDraft(text) },\r\n notify: (level, text) => { conversation.input.for(actx).notify(level, text) },\r\n }\r\n },\r\n }, SteerQueueDock))\r\n\r\n // Composer-right freeze/resume control (reachable before anything queues).\r\n ctx.slots.inject('conversation.input.right', () => ctx.slots.register({\r\n name: 'conversation.input.right',\r\n id: 'steer-freeze',\r\n order: 30,\r\n locale: NS,\r\n inject: (sessionId: SessionId): SteerQueueDockInjected => {\r\n const actx = ctx.sessions.scope(sessionId)\r\n if (actx === undefined) throw new Error(`steer freeze: session \"${sessionId}\" resolved no scope`)\r\n const conversation = actx.get<IConversation>('conversation')\r\n if (conversation === undefined) throw new Error('steer freeze: conversation service unavailable')\r\n return {\r\n updateQueue: (itemId, action) => conversation.updateQueue(itemId, action),\r\n cancel: () => conversation.cancel(),\r\n send: (text) => conversation.send(text),\r\n setDraft: (text) => { conversation.input.for(actx).actions.setDraft(text) },\r\n notify: (level, text) => { conversation.input.for(actx).notify(level, text) },\r\n }\r\n },\r\n }, FreezeButton))\r\n\r\n // Hide the official busy-Enter settings row (null render wins the cell).\r\n ctx.slots.inject('settings.general.item', () => ctx.slots.register({\r\n name: 'settings.general.item',\r\n id: 'composer-enter',\r\n order: 20,\r\n priority: -1,\r\n locale: NS,\r\n }, HideEnterRow))\r\n}\r\n"],"mappings":"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"}
@@ -6,5 +6,5 @@ export type FreezeButtonProps = PropsRuntime<'conversation.input.right'> & Steer
6
6
  * Freeze/resume toggle for the peak-hour scenario.
7
7
  * @param props - slot props; the session snapshot drives the detach list.
8
8
  */
9
- export declare function FreezeButton({ session, updateQueue, send, notify, t }: FreezeButtonProps): import("react").JSX.Element;
9
+ export declare function FreezeButton({ session, updateQueue, cancel, send, notify, t }: FreezeButtonProps): import("react").JSX.Element;
10
10
  //# sourceMappingURL=freeze-button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"freeze-button.d.ts","sourceRoot":"","sources":["../../../src/client/freeze-button.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAGjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAGpE,oGAAoG;AACpG,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,0BAA0B,CAAC,GAAG,sBAAsB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAExH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,iBAAiB,+BA2CxF"}
1
+ {"version":3,"file":"freeze-button.d.ts","sourceRoot":"","sources":["../../../src/client/freeze-button.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAGjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAGpE,oGAAoG;AACpG,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,0BAA0B,CAAC,GAAG,sBAAsB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAExH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,iBAAiB,+BAgDhG"}
@@ -16,13 +16,13 @@ import css from './freeze-button.module.css';
16
16
  * Freeze/resume toggle for the peak-hour scenario.
17
17
  * @param props - slot props; the session snapshot drives the detach list.
18
18
  */
19
- export function FreezeButton({ session, updateQueue, send, notify, t }) {
19
+ export function FreezeButton({ session, updateQueue, cancel, send, notify, t }) {
20
20
  const { frozen } = useSyncExternalStore(freezeStore.subscribe, freezeStore.getSnapshot);
21
21
  const freeze = async () => {
22
22
  const queued = session.queue.filter(row => row.placement === 'queued');
23
23
  // Preserve plain-text copies; non-text rows cannot be re-sent and are
24
24
  // released by the freeze (documented limitation).
25
- const pending = queued.flatMap(row => row.text === null ? [] : [row.text]);
25
+ const pending = queued.flatMap(row => row.text === null ? [] : [{ text: row.text, tier: 'queue' }]);
26
26
  // Detach every queued row: the running turn finishes naturally, then the
27
27
  // driver finds no pending work and stops.
28
28
  await Promise.all(queued.map(row => updateQueue(row.id, { kind: 'remove' }).catch(() => undefined)));
@@ -32,10 +32,15 @@ export function FreezeButton({ session, updateQueue, send, notify, t }) {
32
32
  const pending = freezeStore.getSnapshot().pending;
33
33
  freezeStore.set({ frozen: false, pending: [] });
34
34
  try {
35
- // Re-submit the preserved texts in FIFO order; the first send wakes the
36
- // driver and the whole chain continues.
37
- for (const text of pending)
38
- await send(text);
35
+ // Re-submit the preserved queue in FIFO order honoring each entry's
36
+ // planned insertion tier: a force (red) entry interrupts the current
37
+ // run first so it is consumed immediately; safe_point/later entries
38
+ // flow through the wake-and-continue chain.
39
+ for (const entry of pending) {
40
+ if (entry.tier === 'force')
41
+ await cancel();
42
+ await send(entry.text);
43
+ }
39
44
  }
40
45
  catch {
41
46
  notify('error', t('steer.resumeFailed'));
@@ -1 +1 @@
1
- {"version":3,"file":"freeze-button.js","sourceRoot":"","sources":["../../../src/client/freeze-button.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,GAAG,MAAM,4BAA4B,CAAA;AAK5C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAqB;IACvF,MAAM,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;IAEvF,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAA;QACtE,sEAAsE;QACtE,kDAAkD;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1E,yEAAyE;QACzE,0CAA0C;QAC1C,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACjC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAC/D,CAAC,CAAA;QACF,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC5C,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAA;QACjD,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC;YACH,wEAAwE;YACxE,wCAAwC;YACxC,KAAK,MAAM,IAAI,IAAI,OAAO;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,kBAC5C,MAAM,IAAI,SAAS,EACjC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,EAC7C,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,MAAM;gBAAE,KAAK,MAAM,EAAE,CAAA;;gBACpB,KAAK,MAAM,EAAE,CAAA;QACpB,CAAC,YAED,eAAM,SAAS,EAAE,GAAG,CAAC,KAAK,YAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAQ,GAC5E,CACV,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"freeze-button.js","sourceRoot":"","sources":["../../../src/client/freeze-button.tsx"],"names":[],"mappings":"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"}
@@ -2,16 +2,23 @@
2
2
  * Session-freeze store shared by the composer freeze button (the control)
3
3
  * and the steering dock (the banner/disabled states).
4
4
  *
5
- * Freeze semantics (peak-hour pause): the current turn is NOT interrupted
6
- * it finishes naturally; the queued messages are detached (removed) and
7
- * preserved here, so the driver finds no pending work and stops. Resume
8
- * re-submits the preserved texts, which wakes the driver and continues the
9
- * queue.
5
+ * The queue is fully decoupled from freezing: freezing only stops the agent
6
+ * from consuming the queue (the detached entries are preserved here so the
7
+ * driver finds no pending work and stops). While frozen the entries stay
8
+ * fully editable text, order and the planned insertion tier (now/next/
9
+ * later) can all change; resume re-submits the queue honoring those tiers.
10
10
  */
11
+ /** Insertion tier planned for one detached queued message. */
12
+ export type FrozenTier = 'queue' | 'safe_point' | 'force';
13
+ /** One detached queued message with its planned insertion tier. */
14
+ export interface FrozenEntry {
15
+ text: string;
16
+ tier: FrozenTier;
17
+ }
11
18
  export interface FreezeState {
12
19
  frozen: boolean;
13
- /** Plain-text copies of the detached queued messages, in FIFO order. */
14
- pending: readonly string[];
20
+ /** Detached queued messages in FIFO order, each with a planned tier. */
21
+ pending: readonly FrozenEntry[];
15
22
  }
16
23
  /** Minimal snapshot store (no runtime dependency, stable identity per mount). */
17
24
  export declare const freezeStore: {
@@ -21,12 +28,14 @@ export declare const freezeStore: {
21
28
  };
22
29
  /** Reset for tests. */
23
30
  export declare function resetFreezeStore(): void;
24
- /** Append one queued text while frozen (new input lands in the detached queue). */
25
- export declare function pushPending(text: string): void;
26
- /** Edit one detached queued text in place. */
31
+ /** Append one queued message while frozen (new input lands in the detached queue). */
32
+ export declare function pushPending(text: string, tier?: FrozenTier): void;
33
+ /** Edit one detached queued message's text in place. */
27
34
  export declare function updatePendingAt(index: number, text: string): void;
28
- /** Remove one detached queued text. */
35
+ /** Change one detached queued message's planned insertion tier. */
36
+ export declare function setTierAt(index: number, tier: FrozenTier): void;
37
+ /** Remove one detached queued message. */
29
38
  export declare function removePendingAt(index: number): void;
30
- /** Move one detached queued text to a new position (reorder while frozen). */
39
+ /** Move one detached queued message to a new position (reorder while frozen). */
31
40
  export declare function movePending(from: number, to: number): void;
32
41
  //# sourceMappingURL=freeze-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"freeze-store.d.ts","sourceRoot":"","sources":["../../../src/client/freeze-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,wEAAwE;IACxE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3B;AAKD,iFAAiF;AACjF,eAAO,MAAM,WAAW;mBACP,WAAW;wBAGN,MAAM,IAAI,GAAG,MAAM,IAAI;cAIjC,WAAW,GAAG,IAAI;CAI7B,CAAA;AAED,uBAAuB;AACvB,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAG9C;AAED,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMjE;AAED,uCAAuC;AACvC,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAQ1D"}
1
+ {"version":3,"file":"freeze-store.d.ts","sourceRoot":"","sources":["../../../src/client/freeze-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,CAAA;AAEzD,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,wEAAwE;IACxE,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;CAChC;AAKD,iFAAiF;AACjF,eAAO,MAAM,WAAW;mBACP,WAAW;wBAGN,MAAM,IAAI,GAAG,MAAM,IAAI;cAIjC,WAAW,GAAG,IAAI;CAI7B,CAAA;AAED,uBAAuB;AACvB,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,UAAoB,GAAG,IAAI,CAG1E;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQjE;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAQ/D;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAQ1D"}
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Session-freeze store shared by the composer freeze button (the control)
3
+ * and the steering dock (the banner/disabled states).
4
+ *
5
+ * The queue is fully decoupled from freezing: freezing only stops the agent
6
+ * from consuming the queue (the detached entries are preserved here so the
7
+ * driver finds no pending work and stops). While frozen the entries stay
8
+ * fully editable — text, order and the planned insertion tier (now/next/
9
+ * later) can all change; resume re-submits the queue honoring those tiers.
10
+ */
1
11
  const listeners = new Set();
2
12
  let state = { frozen: false, pending: [] };
3
13
  /** Minimal snapshot store (no runtime dependency, stable identity per mount). */
@@ -21,28 +31,43 @@ export function resetFreezeStore() {
21
31
  for (const listener of listeners)
22
32
  listener();
23
33
  }
24
- /** Append one queued text while frozen (new input lands in the detached queue). */
25
- export function pushPending(text) {
26
- state = { ...state, pending: [...state.pending, text] };
34
+ /** Append one queued message while frozen (new input lands in the detached queue). */
35
+ export function pushPending(text, tier = 'queue') {
36
+ state = { ...state, pending: [...state.pending, { text, tier }] };
27
37
  emit();
28
38
  }
29
- /** Edit one detached queued text in place. */
39
+ /** Edit one detached queued message's text in place. */
30
40
  export function updatePendingAt(index, text) {
31
41
  const pending = [...state.pending];
32
42
  if (index < 0 || index >= pending.length)
33
43
  return;
34
- pending[index] = text;
44
+ const entry = pending[index];
45
+ if (entry === undefined)
46
+ return;
47
+ pending[index] = { ...entry, text };
48
+ state = { ...state, pending };
49
+ emit();
50
+ }
51
+ /** Change one detached queued message's planned insertion tier. */
52
+ export function setTierAt(index, tier) {
53
+ const pending = [...state.pending];
54
+ if (index < 0 || index >= pending.length)
55
+ return;
56
+ const entry = pending[index];
57
+ if (entry === undefined)
58
+ return;
59
+ pending[index] = { ...entry, tier };
35
60
  state = { ...state, pending };
36
61
  emit();
37
62
  }
38
- /** Remove one detached queued text. */
63
+ /** Remove one detached queued message. */
39
64
  export function removePendingAt(index) {
40
65
  if (index < 0 || index >= state.pending.length)
41
66
  return;
42
67
  state = { ...state, pending: state.pending.filter((_, i) => i !== index) };
43
68
  emit();
44
69
  }
45
- /** Move one detached queued text to a new position (reorder while frozen). */
70
+ /** Move one detached queued message to a new position (reorder while frozen). */
46
71
  export function movePending(from, to) {
47
72
  if (from === to)
48
73
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"freeze-store.js","sourceRoot":"","sources":["../../../src/client/freeze-store.ts"],"names":[],"mappings":"AAgBA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;AACvC,IAAI,KAAK,GAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;AAEvD,iFAAiF;AACjF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,WAAW;QACT,OAAO,KAAK,CAAA;IACd,CAAC;IACD,SAAS,CAAC,QAAoB;QAC5B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,GAAG,CAAC,IAAiB;QACnB,KAAK,GAAG,IAAI,CAAA;QACZ,KAAK,MAAM,QAAQ,IAAI,SAAS;YAAE,QAAQ,EAAE,CAAA;IAC9C,CAAC;CACF,CAAA;AAED,uBAAuB;AACvB,MAAM,UAAU,gBAAgB;IAC9B,KAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IACtC,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,QAAQ,EAAE,CAAA;AAC9C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAA;IACvD,IAAI,EAAE,CAAA;AACR,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,IAAY;IACzD,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM;QAAE,OAAM;IAChD,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IACrB,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAA;IAC7B,IAAI,EAAE,CAAA;AACR,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;QAAE,OAAM;IACtD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAA;IAC1E,IAAI,EAAE,CAAA;AACR,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,EAAU;IAClD,IAAI,IAAI,KAAK,EAAE;QAAE,OAAM;IACvB,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACvC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAM;IAC/B,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;IAC5B,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAA;IAC7B,IAAI,EAAE,CAAA;AACR,CAAC;AAED,SAAS,IAAI;IACX,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,QAAQ,EAAE,CAAA;AAC9C,CAAC"}
1
+ {"version":3,"file":"freeze-store.js","sourceRoot":"","sources":["../../../src/client/freeze-store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"steer-queue-dock.d.ts","sourceRoot":"","sources":["../../../src/client/steer-queue-dock.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAYjF,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAQrB,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,kEAAkE;IAClE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,8EAA8E;IAC9E,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,0EAA0E;IAC1E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACxD;AAED,gHAAgH;AAChH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,yBAAyB,CAAC,GAAG,sBAAsB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAEzH,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;AAEhD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAIpG;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAIvF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI,CAG1D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,mBAAmB,sCAmrBxH"}
1
+ {"version":3,"file":"steer-queue-dock.d.ts","sourceRoot":"","sources":["../../../src/client/steer-queue-dock.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAYjF,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAQrB,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE,kEAAkE;IAClE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,8EAA8E;IAC9E,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,0EAA0E;IAC1E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACxD;AAED,gHAAgH;AAChH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,yBAAyB,CAAC,GAAG,sBAAsB,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAEzH,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;AAEhD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAIpG;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAIvF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI,CAG1D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,mBAAmB,sCAqvBxH"}
@@ -26,7 +26,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
26
26
  */
27
27
  import { useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from 'react';
28
28
  import { IconCheckOutline16, IconChevronDownOutline14, IconChevronUpOutline14, IconCloseOutline16, IconEditOutline16, IconQueueOutline14, IconRightUpOutline16, IconTrashOutline16, Tooltip, } from '@deepseek-ai/dsh-client-ui-primitives';
29
- import { freezeStore, updatePendingAt, removePendingAt, movePending } from "./freeze-store.js";
29
+ import { freezeStore, setTierAt, updatePendingAt, removePendingAt, movePending } from "./freeze-store.js";
30
30
  import css from './steer-queue-dock.module.css';
31
31
  /** Busy marker for a whole-queue rebuild (reorder); locks every row action. */
32
32
  const REORDER_MARK = '__reorder__';
@@ -385,9 +385,30 @@ export function SteerQueueDock({ useSession, input, updateQueue, cancel, send, s
385
385
  setClearing(false);
386
386
  }
387
387
  };
388
- return (_jsx("div", { className: css.dock, "data-steer-dock": "", children: _jsxs("div", { className: css.panel, children: [_jsxs("div", { className: css.toolbar, children: [_jsxs("button", { type: "button", className: css.header, "aria-controls": listId, "aria-expanded": expanded, disabled: queue.length <= 1 || interactionActive, onClick: () => { setCollapsed(value => !value); }, children: [_jsx("span", { className: css.lead, "aria-hidden": true, children: _jsx(IconQueueOutline14, {}) }), queue.length > 0 && (_jsx("span", { className: css.count, children: t('queue.count', { n: queue.length }) })), queue.length > 1 && (_jsx("span", { className: css.chevron, "aria-hidden": true, children: expanded ? _jsx(IconChevronDownOutline14, {}) : _jsx(IconChevronUpOutline14, {}) }))] }), _jsxs("div", { className: css.toolbarActions, children: [confirmClear && (_jsx("button", { type: "button", className: css.clearCancel, "aria-label": t('steer.clear.cancel'), disabled: clearing || busy !== null || nothingPending, onClick: cancelClear, children: _jsx("span", { className: css.clearLabel, children: t('steer.clear.cancel') }) })), _jsx(Tooltip, { label: confirmClear ? t('steer.clear.confirm') : t('steer.clear'), side: "top", delayMs: 500, children: _jsxs("button", { type: "button", className: `${css.clear} ${confirmClear ? css.clearConfirm : ''}`, "aria-label": confirmClear ? t('steer.clear.confirm') : t('steer.clear'), disabled: clearing || busy !== null || nothingPending, onClick: armClear, children: [_jsx(IconTrashOutline16, { size: 14 }), _jsx("span", { className: css.clearLabel, children: confirmClear ? t('steer.clear.confirm') : t('steer.clear') })] }) })] })] }), frozen && (_jsx("div", { className: css.frozenBanner, role: "status", children: t('steer.frozen') })), frozen && frozenPending.length > 0 && (_jsx("ul", { className: css.frozenList, "data-testid": "frozen-list", children: frozenPending.map((text, i) => {
388
+ return (_jsx("div", { className: css.dock, "data-steer-dock": "", children: _jsxs("div", { className: css.panel, children: [_jsxs("div", { className: css.toolbar, children: [_jsxs("button", { type: "button", className: css.header, "aria-controls": listId, "aria-expanded": expanded, disabled: queue.length <= 1 || interactionActive, onClick: () => { setCollapsed(value => !value); }, children: [_jsx("span", { className: css.lead, "aria-hidden": true, children: _jsx(IconQueueOutline14, {}) }), queue.length > 0 && (_jsx("span", { className: css.count, children: t('queue.count', { n: queue.length }) })), queue.length > 1 && (_jsx("span", { className: css.chevron, "aria-hidden": true, children: expanded ? _jsx(IconChevronDownOutline14, {}) : _jsx(IconChevronUpOutline14, {}) }))] }), _jsxs("div", { className: css.toolbarActions, children: [confirmClear && (_jsx("button", { type: "button", className: css.clearCancel, "aria-label": t('steer.clear.cancel'), disabled: clearing || busy !== null || nothingPending, onClick: cancelClear, children: _jsx("span", { className: css.clearLabel, children: t('steer.clear.cancel') }) })), _jsx(Tooltip, { label: confirmClear ? t('steer.clear.confirm') : t('steer.clear'), side: "top", delayMs: 500, children: _jsxs("button", { type: "button", className: `${css.clear} ${confirmClear ? css.clearConfirm : ''}`, "aria-label": confirmClear ? t('steer.clear.confirm') : t('steer.clear'), disabled: clearing || busy !== null || nothingPending, onClick: armClear, children: [_jsx(IconTrashOutline16, { size: 14 }), _jsx("span", { className: css.clearLabel, children: confirmClear ? t('steer.clear.confirm') : t('steer.clear') })] }) })] })] }), frozen && (_jsx("div", { className: css.frozenBanner, role: "status", children: t('steer.frozen') })), frozen && frozenPending.length > 0 && (_jsx("ul", { className: css.frozenList, "data-testid": "frozen-list", children: frozenPending.map((entry, i) => {
389
389
  const editingFrozen = editing?.id === `frozen:${i}`;
390
- return (_jsxs("li", { className: css.frozenRow, "data-editing": editingFrozen ? '' : undefined, children: [_jsx("span", { className: css.lead, "aria-hidden": true, children: _jsx(IconQueueOutline14, {}) }), _jsx(SteerBadge, { tier: "later", t: t }), editingFrozen
390
+ const text = entry.text;
391
+ return (_jsxs("li", { className: `${css.frozenRow} ${dragOver === i && frozen ? css.rowDragOver : ''}`, "data-tier": entry.tier === 'force' ? 'now' : entry.tier === 'safe_point' ? 'next' : 'later', "data-editing": editingFrozen ? '' : undefined, draggable: !editingFrozen, title: !editingFrozen ? t('steer.dragReorder') : undefined, onDragStart: (event) => {
392
+ if (editingFrozen)
393
+ return;
394
+ dragIndex.current = i;
395
+ event.dataTransfer.effectAllowed = 'move';
396
+ }, onDragOver: (event) => {
397
+ if (dragIndex.current === null)
398
+ return;
399
+ event.preventDefault();
400
+ setDragOver(i);
401
+ }, onDrop: (event) => {
402
+ event.preventDefault();
403
+ const from = dragIndex.current;
404
+ dragIndex.current = null;
405
+ setDragOver(null);
406
+ if (from !== null)
407
+ movePending(from, i);
408
+ }, onDragEnd: () => {
409
+ dragIndex.current = null;
410
+ setDragOver(null);
411
+ }, children: [_jsx("span", { className: css.lead, "aria-hidden": true, children: _jsx(IconQueueOutline14, {}) }), _jsx(SteerBadge, { tier: entry.tier === 'force' ? 'now' : entry.tier === 'safe_point' ? 'next' : 'later', t: t }), editingFrozen
391
412
  ? (_jsx("textarea", { ref: editorRef, autoFocus: true, className: css.editor, "aria-label": t('queue.edit'), rows: 1, value: editing?.text ?? text, onChange: (event) => { setEditing({ id: `frozen:${i}`, text: event.currentTarget.value }); }, onInput: (event) => { resizeEditor(event.currentTarget); }, onKeyDown: (event) => {
392
413
  if (event.key === 'Escape') {
393
414
  setEditing(null);
@@ -398,7 +419,7 @@ export function SteerQueueDock({ useSession, input, updateQueue, cancel, send, s
398
419
  void saveFrozenEdit(i);
399
420
  }
400
421
  } }))
401
- : _jsx("span", { className: css.preview, children: text }), _jsx("div", { className: css.actions, children: editingFrozen ? (_jsxs(_Fragment, { children: [_jsx(Tooltip, { label: t('queue.save'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('queue.save'), disabled: editing === null || editing.text.trim() === '', onClick: () => { void saveFrozenEdit(i); }, children: _jsx(IconCheckOutline16, { size: 14 }) }) }), _jsx(Tooltip, { label: t('queue.cancelEdit'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('queue.cancelEdit'), onClick: () => { setEditing(null); }, children: _jsx(IconCloseOutline16, { size: 14 }) }) })] })) : (_jsxs(_Fragment, { children: [_jsx(Tooltip, { label: t('steer.moveUp'), side: "bottom", delayMs: 500, disabled: i === 0, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('steer.moveUp'), disabled: i === 0, onClick: () => movePending(i, i - 1), children: _jsx(IconChevronUpOutline14, {}) }) }), _jsx(Tooltip, { label: t('steer.moveDown'), side: "bottom", delayMs: 500, disabled: i === frozenPending.length - 1, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('steer.moveDown'), disabled: i === frozenPending.length - 1, onClick: () => movePending(i, i + 1), children: _jsx(IconChevronDownOutline14, {}) }) }), _jsx(Tooltip, { label: t('queue.edit'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('queue.edit'), onClick: () => { setEditing({ id: `frozen:${i}`, text }); }, children: _jsx(IconEditOutline16, { size: 14 }) }) }), _jsx(Tooltip, { label: t('queue.remove'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('queue.remove'), onClick: () => removePendingAt(i), children: _jsx(IconTrashOutline16, { size: 14 }) }) })] })) }), _jsx("span", { className: css.frozenMark, children: t('steer.frozenBadge') })] }, i));
422
+ : _jsx("span", { className: css.preview, children: text }), _jsx("div", { className: css.actions, children: editingFrozen ? (_jsxs(_Fragment, { children: [_jsx(Tooltip, { label: t('queue.save'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('queue.save'), disabled: editing === null || editing.text.trim() === '', onClick: () => { void saveFrozenEdit(i); }, children: _jsx(IconCheckOutline16, { size: 14 }) }) }), _jsx(Tooltip, { label: t('queue.cancelEdit'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('queue.cancelEdit'), onClick: () => { setEditing(null); }, children: _jsx(IconCloseOutline16, { size: 14 }) }) })] })) : (_jsxs(_Fragment, { children: [_jsx(Tooltip, { label: t('steer.moveUp'), side: "bottom", delayMs: 500, disabled: i === 0, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('steer.moveUp'), disabled: i === 0, onClick: () => movePending(i, i - 1), children: _jsx(IconChevronUpOutline14, {}) }) }), _jsx(Tooltip, { label: t('steer.moveDown'), side: "bottom", delayMs: 500, disabled: i === frozenPending.length - 1, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('steer.moveDown'), disabled: i === frozenPending.length - 1, onClick: () => movePending(i, i + 1), children: _jsx(IconChevronDownOutline14, {}) }) }), _jsx(Tooltip, { label: t('queue.edit'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('queue.edit'), onClick: () => { setEditing({ id: `frozen:${i}`, text }); }, children: _jsx(IconEditOutline16, { size: 14 }) }) }), _jsx(Tooltip, { label: t('queue.remove'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: css.action, "aria-label": t('queue.remove'), onClick: () => removePendingAt(i), children: _jsx(IconTrashOutline16, { size: 14 }) }) }), _jsxs("span", { className: css.plan, role: "group", "aria-label": t('steer.later.aria'), children: [_jsx(Tooltip, { label: t('steer.now'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: `${css.tier} ${css.tierNow}`, "aria-label": t('steer.now'), "aria-pressed": entry.tier === 'force' || undefined, onClick: () => setTierAt(i, 'force'), children: _jsx("span", { className: css.dot, "aria-hidden": true }) }) }), _jsx(Tooltip, { label: t('steer.next'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: `${css.tier} ${css.tierNext}`, "aria-label": t('steer.next'), "aria-pressed": entry.tier === 'safe_point' || undefined, onClick: () => setTierAt(i, 'safe_point'), children: _jsx("span", { className: css.dot, "aria-hidden": true }) }) }), _jsx(Tooltip, { label: t('steer.later'), side: "bottom", delayMs: 500, children: _jsx("button", { type: "button", className: `${css.tier} ${css.tierLater}`, "aria-label": t('steer.later'), "aria-pressed": entry.tier === 'queue' || undefined, onClick: () => setTierAt(i, 'queue'), children: _jsx("span", { className: css.dot, "aria-hidden": true }) }) })] })] })) }), _jsx("span", { className: css.frozenMark, children: t('steer.frozenBadge') })] }, i));
402
423
  }) })), _jsx("ul", { id: listId, className: css.list, hidden: !listVisible, children: listVisible && queue.map((row, index) => (_jsxs("li", { className: `${css.row} ${dragOver === index ? css.rowDragOver : ''}`, "data-tier": badgeFor('queued') ?? undefined, "data-editing": editing?.id === row.id ? '' : undefined, draggable: queueMutable && !reorderUnsupported && busy === null && !frozen, title: queueMutable && !reorderUnsupported && busy === null && !frozen ? t('steer.dragReorder') : undefined, onDragStart: (event) => {
403
424
  dragIndex.current = index;
404
425
  event.dataTransfer.effectAllowed = 'move';
@@ -1 +1 @@
1
- {"version":3,"file":"steer-queue-dock.js","sourceRoot":"","sources":["../../../src/client/steer-queue-dock.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAMzF,OAAO,EACL,kBAAkB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,kBAAkB,EACxF,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO,GACzF,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC9F,OAAO,GAAG,MAAM,+BAA+B,CAAA;AAQ/C,+EAA+E;AAC/E,MAAM,YAAY,GAAG,aAAa,CAAA;AAElC,8EAA8E;AAC9E,MAAM,YAAY,GAAG,6BAA6B,CAAA;AAoBlD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe;IAC3C,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;IACjF,uEAAuE;IACvE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,KAAK,KAAK,EAAE,CAAA;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,SAA4C;IACnE,IAAI,SAAS,KAAK,UAAU;QAAE,OAAO,MAAM,CAAA;IAC3C,IAAI,SAAS,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAA;IAC1C,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,EAAuB;IAClD,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,IAAI,CAAA;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAuB;IACvH,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IACrF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1F,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAA;IACzD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAsC,IAAI,CAAC,CAAA;IACjF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACrD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvD,MAAM,YAAY,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAA;IACvE,sEAAsE;IACtE,MAAM,SAAS,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAC7C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAC7D,iEAAiE;IACjE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC,CAAC,CAAA;IACF,2EAA2E;IAC3E,qEAAqE;IACrE,wEAAwE;IACxE,wEAAwE;IACxE,uBAAuB;IACvB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;IAC/G,MAAM,MAAM,GAAG,KAAK,EAAE,CAAA;IACtB,uEAAuE;IACvE,MAAM,SAAS,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAA;IAEnD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS;YAAE,YAAY,CAAC,IAAI,CAAC,CAAA;QACxD,0EAA0E;QAC1E,sEAAsE;QACtE,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7I,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;IAE7C,yEAAyE;IACzE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IACf,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;QACnB,IAAI,YAAY,CAAC,OAAO,KAAK,IAAI;YAAE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACvE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,mEAAmE;IACnE,MAAM,SAAS,GAAG,OAAO,EAAE,EAAE,CAAA;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,KAAK,SAAS;YAAE,OAAM;QACnC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAA;QAC5B,IAAI,EAAE,KAAK,IAAI;YAAE,YAAY,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,wEAAwE;IACxE,4EAA4E;IAC5E,4DAA4D;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAEnF,MAAM,iBAAiB,GAAG,YAAY,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,CAAA;IACzF,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAA;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAA;IAClD,MAAM,YAAY,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,IAAI,MAAM,CAAA;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;IAClE,0EAA0E;IAC1E,mEAAmE;IACnE,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC/D,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,iCAAiC;IACjC,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IAE/C,MAAM,WAAW,GAAG,KAAK,EACvB,MAAc,EACd,MAAwB,EACxB,OAAe,EACG,EAAE;QACpB,OAAO,CAAC,MAAM,CAAC,CAAA;QACf,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YACjC,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAM;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAA;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACzB,OAAO,CAAC,MAAM,CAAC,CAAA;QACf,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;YAC9E,UAAU,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,sEAAsE;YACtE,oEAAoE;YACpE,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9B,QAAQ,CAAC,IAAI,CAAC,CAAA;gBACd,UAAU,CAAC,IAAI,CAAC,CAAA;gBAChB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAwC,EAAE,IAAiC,EAAiB,EAAE;QACpH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,uEAAuE;gBACvE,oEAAoE;gBACpE,sEAAsE;gBACtE,kEAAkE;gBAClE,oEAAoE;gBACpE,mCAAmC;gBACnC,MAAM,MAAM,EAAE,CAAA;gBACd,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAC7C,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;oBAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;YAC9C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAChF,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC;IACH,CAAC,CAAA;IAED;;;;OAIG;IACH,MAAM,aAAa,GAAG,KAAK,EAAE,GAAwC,EAAiB,EAAE;QACtF,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;YAAE,OAAM;QAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAC1C,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC;IACH,CAAC,CAAA;IAED;;;;;;;OAOG;IACH,MAAM,YAAY,GAAG,KAAK,EAAE,IAAoD,EAAE,IAAoD,EAAiB,EAAE;QACvJ,OAAO,CAAC,YAAY,CAAC,CAAA;QACrB,IAAI,CAAC;YACH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAC/C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;wBAC7E,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;wBACxC,OAAM;oBACR,CAAC;oBACD,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;oBAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAA;QAC3C,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC;IACH,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,OAAO,GAAG,KAAK,EAAE,KAAa,EAAE,KAAa,EAAiB,EAAE;QACpE,MAAM,IAAI,GAAG,KAAK,CAAA;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;QAC5B,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QAC5D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAwB,CAAA;QAClD,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAwB,CAAA;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAA;QACtB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAA;YAC/C,OAAM;QACR,CAAC;QACD,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC,CAAA;IAED;;OAEG;IACH,MAAM,SAAS,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAiB,EAAE;QAC5E,IAAI,SAAS,KAAK,OAAO;YAAE,OAAM;QACjC,MAAM,IAAI,GAAG,KAAK,CAAA;QAClB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS;YAAE,OAAM;QACxE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;QACtB,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QACzC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;QAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAA;YAC/C,OAAM;QACR,CAAC;QACD,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC,CAAA;IAED,sDAAsD;IACtD,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,YAAY,CAAC,OAAO,KAAK,IAAI;gBAAE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YACrE,eAAe,CAAC,KAAK,CAAC,CAAA;YACtB,KAAK,QAAQ,EAAE,CAAA;YACf,OAAM;QACR,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,YAAY,CAAC,OAAO,KAAK,IAAI;YAAE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACrE,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;IACvE,CAAC,CAAA;IAED,uEAAuE;IACvE,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,IAAI,YAAY,CAAC,OAAO,KAAK,IAAI;YAAE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QACrE,eAAe,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC,CAAA;IAED,qEAAqE;IACrE,MAAM,cAAc,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;QAC5D,IAAI,OAAO,KAAK,IAAI;YAAE,OAAM;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QAChC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,UAAU,CAAC,IAAI,CAAC,CAAA;YAChB,OAAM;QACR,CAAC;QACD,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC5B,UAAU,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC,CAAA;IAED;;;;OAIG;IACH,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAwC,EAAiB,EAAE;QAC3F,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;YAAE,OAAM;QAC7B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAC5C,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACzD,CAAC;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,iEAAiE;QACjE,0DAA0D;QAC1D,+DAA+D;QAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAA;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,EAAE,CAAA;YACd,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAClC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAC/D,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAA;QACzC,CAAC;gBAAS,CAAC;YACT,WAAW,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,cAAK,SAAS,EAAE,GAAG,CAAC,IAAI,qBAAkB,EAAE,YAC1C,eAAK,SAAS,EAAE,GAAG,CAAC,KAAK,aACvB,eAAK,SAAS,EAAE,GAAG,CAAC,OAAO,aACzB,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,mBACN,MAAM,mBACN,QAAQ,EACvB,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,iBAAiB,EAChD,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,aAEhD,eAAM,SAAS,EAAE,GAAG,CAAC,IAAI,iCAAc,KAAC,kBAAkB,KAAG,GAAO,EACnE,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACnB,eAAM,SAAS,EAAE,GAAG,CAAC,KAAK,YAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,GAAQ,CAC3E,EACA,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACnB,eAAM,SAAS,EAAE,GAAG,CAAC,OAAO,iCACzB,QAAQ,CAAC,CAAC,CAAC,KAAC,wBAAwB,KAAG,CAAC,CAAC,CAAC,KAAC,sBAAsB,KAAG,GAChE,CACR,IACM,EACT,eAAK,SAAS,EAAE,GAAG,CAAC,cAAc,aAC/B,YAAY,IAAI,CACf,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,WAAW,gBACd,CAAC,CAAC,oBAAoB,CAAC,EACnC,QAAQ,EAAE,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,cAAc,EACrD,OAAO,EAAE,WAAW,YAEpB,eAAM,SAAS,EAAE,GAAG,CAAC,UAAU,YAAG,CAAC,CAAC,oBAAoB,CAAC,GAAQ,GAC1D,CACV,EACD,KAAC,OAAO,IAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAC,KAAK,EAAC,OAAO,EAAE,GAAG,YACjG,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,gBACrD,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EACtE,QAAQ,EAAE,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,cAAc,EACrD,OAAO,EAAE,QAAQ,aAEjB,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,EAChC,eAAM,SAAS,EAAE,GAAG,CAAC,UAAU,YAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAQ,IAC7F,GACD,IACN,IACF,EACL,MAAM,IAAI,CACT,cAAK,SAAS,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,EAAC,QAAQ,YAC5C,CAAC,CAAC,cAAc,CAAC,GACd,CACP,EAKA,MAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CACrC,aAAI,SAAS,EAAE,GAAG,CAAC,UAAU,iBAAc,aAAa,YACrD,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBAC7B,MAAM,aAAa,GAAG,OAAO,EAAE,EAAE,KAAK,UAAU,CAAC,EAAE,CAAA;wBACnD,OAAO,CACL,cAAY,SAAS,EAAE,GAAG,CAAC,SAAS,kBAAgB,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,aAChF,eAAM,SAAS,EAAE,GAAG,CAAC,IAAI,iCAAc,KAAC,kBAAkB,KAAG,GAAO,EACpE,KAAC,UAAU,IAAC,IAAI,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,GAAI,EAChC,aAAa;oCACZ,CAAC,CAAC,CACA,mBACE,GAAG,EAAE,SAAS,EACd,SAAS,QACT,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,YAAY,CAAC,EAC3B,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC,CAAC,EAC3F,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC,CAAC,EACzD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;4CACnB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gDAC3B,UAAU,CAAC,IAAI,CAAC,CAAA;gDAChB,OAAM;4CACR,CAAC;4CACD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;gDAC/E,KAAK,CAAC,cAAc,EAAE,CAAA;gDACtB,KAAK,cAAc,CAAC,CAAC,CAAC,CAAA;4CACxB,CAAC;wCACH,CAAC,GACD,CACH;oCACD,CAAC,CAAC,eAAM,SAAS,EAAE,GAAG,CAAC,OAAO,YAAG,IAAI,GAAQ,EAC/C,cAAK,SAAS,EAAE,GAAG,CAAC,OAAO,YACxB,aAAa,CAAC,CAAC,CAAC,CACf,8BACE,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,YACzD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,YAAY,CAAC,EAC3B,QAAQ,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EACxD,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,YAEzC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GACzB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,YAC/D,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,kBAAkB,CAAC,EACjC,OAAO,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,YAEnC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GACzB,GACD,IACT,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,YAC9E,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,cAAc,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,CAAC,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,YAEpC,KAAC,sBAAsB,KAAG,GACnB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,YACvG,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,gBAAgB,CAAC,EAC/B,QAAQ,EAAE,CAAC,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EACxC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,YAEpC,KAAC,wBAAwB,KAAG,GACrB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,YACzD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,YAAY,CAAC,EAC3B,OAAO,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC,YAE1D,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GACxB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,YAC3D,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,cAAc,CAAC,EAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,YAEjC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GACzB,GACD,IACT,CACJ,GACG,EACN,eAAM,SAAS,EAAE,GAAG,CAAC,UAAU,YAAG,CAAC,CAAC,mBAAmB,CAAC,GAAQ,KAnGzD,CAAC,CAoGL,CACN,CAAA;oBACH,CAAC,CAAC,GACC,CACN,EACD,aAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,WAAW,YACtD,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACxC,cAEE,SAAS,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,eACzD,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,kBAC5B,OAAO,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EACrD,SAAS,EAAE,YAAY,IAAI,CAAC,kBAAkB,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAC1E,KAAK,EAAE,YAAY,IAAI,CAAC,kBAAkB,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,EAC3G,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;4BACrB,SAAS,CAAC,OAAO,GAAG,KAAK,CAAA;4BACzB,KAAK,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAA;wBAC3C,CAAC,EACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;4BACpB,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI;gCAAE,OAAM;4BACtC,KAAK,CAAC,cAAc,EAAE,CAAA;4BACtB,WAAW,CAAC,KAAK,CAAC,CAAA;wBACpB,CAAC,EACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;4BAChB,KAAK,CAAC,cAAc,EAAE,CAAA;4BACtB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAA;4BAC9B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;4BACxB,WAAW,CAAC,IAAI,CAAC,CAAA;4BACjB,IAAI,IAAI,KAAK,IAAI;gCAAE,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;wBAChD,CAAC,EACD,SAAS,EAAE,GAAG,EAAE;4BACd,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;4BACxB,WAAW,CAAC,IAAI,CAAC,CAAA;wBACnB,CAAC,aAEA,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,eAAM,SAAS,EAAE,GAAG,CAAC,IAAI,iCAAc,KAAC,kBAAkB,KAAG,GAAO,EAC3F,KAAC,UAAU,IAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAI,EAC7C,OAAO,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE;gCACrB,CAAC,CAAC,CACA,mBACE,GAAG,EAAE,SAAS,EACd,SAAS,QACT,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,YAAY,CAAC,EAC3B,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,OAAO,CAAC,IAAI,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC,CAAC,EACpF,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA,CAAC,CAAC,EACzD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;wCACnB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;4CAC3B,UAAU,CAAC,IAAI,CAAC,CAAA;4CAChB,OAAM;wCACR,CAAC;wCACD,0DAA0D;wCAC1D,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;4CAC/E,KAAK,CAAC,cAAc,EAAE,CAAA;4CACtB,KAAK,QAAQ,EAAE,CAAA;wCACjB,CAAC;oCACH,CAAC,GACD,CACH;gCACD,CAAC,CAAC,eAAM,SAAS,EAAE,GAAG,CAAC,OAAO,YAAG,GAAG,CAAC,OAAO,GAAQ,EACrD,YAAY,IAAI,cAAK,SAAS,EAAE,GAAG,CAAC,OAAO,YACzC,OAAO,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE;oCACrB,CAAC,CAAC,CACA,8BACE,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,YACzD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,YAAY,CAAC,EAC3B,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EACrD,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,QAAQ,EAAE,CAAA,CAAC,CAAC,YAElC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GACzB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,YAC/D,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,kBAAkB,CAAC,EACjC,QAAQ,EAAE,IAAI,KAAK,IAAI,EACvB,OAAO,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,YAEnC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GACzB,GACD,IACT,CACJ;oCACD,CAAC,CAAC,CACA,8BACE,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,kBAAkB,YACnG,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,cAAc,CAAC,EAC7B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,EACtE,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,kBAAkB,EACvD,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,YAE3C,KAAC,sBAAsB,KAAG,GACnB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,kBAAkB,YACrG,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,gBAAgB,CAAC,EAC/B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,EACtE,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,kBAAkB,EACvD,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,YAE1C,KAAC,wBAAwB,KAAG,GACrB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,YAC5G,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,gBAAgB,CAAC,EAC/B,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1H,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,EACxE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,kBAAkB,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,YAE/C,KAAC,oBAAoB,KAAG,GACjB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,YACtF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,SAAS,EAClE,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAC5C,OAAO,EAAE,GAAG,EAAE;wDACZ,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;4DAAE,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;oDACnE,CAAC,YAED,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GACxB,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,YAC3D,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,gBACT,CAAC,CAAC,cAAc,CAAC,EAC7B,QAAQ,EAAE,IAAI,KAAK,IAAI,EACvB,OAAO,EAAE,GAAG,EAAE;wDACZ,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;oDACvE,CAAC,YAED,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GACzB,GACD,EACV,gBAAM,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAC,OAAO,gBAAa,CAAC,CAAC,kBAAkB,CAAC,aACvE,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,YACrG,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,gBAC3B,CAAC,CAAC,WAAW,CAAC,EAC1B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,SAAS,EACjH,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAC5D,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,CAAC,CAAC,YAE5C,eAAM,SAAS,EAAE,GAAG,CAAC,GAAG,wBAAgB,GACjC,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,YACjF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,gBAC5B,CAAC,CAAC,YAAY,CAAC,EAC3B,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,SAAS,EAChE,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,YAAY,EACvC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,YAE7C,eAAM,SAAS,EAAE,GAAG,CAAC,GAAG,wBAAgB,GACjC,GACD,EACV,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,YAC1D,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,gBAC7B,CAAC,CAAC,aAAa,CAAC,wBAE5B,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,QAAQ,EACnC,OAAO,EAAE,GAAG,EAAE;gEACZ,gDAAgD;gEAChD,0CAA0C;4DAC5C,CAAC,YAED,eAAM,SAAS,EAAE,GAAG,CAAC,GAAG,wBAAgB,GACjC,GACD,IACL,IACN,CACJ,GACC,KA9LD,GAAG,CAAC,EAAE,CA+LR,CACN,CAAC,GACC,EACJ,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,aAAI,SAAS,EAAE,GAAG,CAAC,YAAY,wBAAqB,EAAE,YACnD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACnB,cAAiB,SAAS,EAAE,GAAG,CAAC,GAAG,eAAa,QAAQ,CAAC,UAAU,CAAC,IAAI,SAAS,aAC/E,eAAM,SAAS,EAAE,GAAG,CAAC,IAAI,iCAAc,KAAC,kBAAkB,KAAG,GAAO,EACpE,KAAC,UAAU,IAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,GAAI,EAChD,eAAM,SAAS,EAAE,GAAG,CAAC,OAAO,YAAG,GAAG,CAAC,OAAO,GAAQ,EAClD,cAAK,SAAS,EAAE,GAAG,CAAC,OAAO,YACzB,KAAC,OAAO,IAAC,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,YACxF,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,gBAC7B,CAAC,CAAC,cAAc,CAAC,EAC7B,KAAK,EAAE,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,SAAS,EACpE,QAAQ,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,EACtD,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,aAAa,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,YAE1C,eAAM,SAAS,EAAE,GAAG,CAAC,GAAG,wBAAgB,GACjC,GACD,GACN,KAjBC,GAAG,CAAC,EAAE,CAkBV,CACN,CAAC,GACC,CACN,IACG,GACF,CACP,CAAA;AACH,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,GAA8B;IAC5C,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,mBAAmB;CAC3B,CAAA;AAED,uGAAuG;AACvG,MAAM,aAAa,GAA8B;IAC/C,GAAG,EAAE,GAAG,CAAC,QAAkB;IAC3B,IAAI,EAAE,GAAG,CAAC,SAAmB;IAC7B,KAAK,EAAE,GAAG,CAAC,UAAoB;CAChC,CAAA;AAED,8EAA8E;AAC9E,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,EAA2D;IACtF,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC9B,OAAO,CACL,gBAAM,SAAS,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,gBAAc,IAAI,aACtE,eAAM,SAAS,EAAE,GAAG,CAAC,GAAG,wBAAgB,EACxC,eAAM,SAAS,EAAE,GAAG,CAAC,UAAU,YAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAQ,IACxD,CACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"steer-queue-dock.js","sourceRoot":"","sources":["../../../src/client/steer-queue-dock.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-input-traffic",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "type": "module",
5
5
  "description": "Busy-time input queue for the DeepSeek Harness web GUI: three-tier (now/next/later) planning, queue editing with drag-to-reorder and concurrency protection, interject (steer) and interrupt, batch clear with confirm, session freeze - a cordis client plugin, no dsh source changes, no PR required",
6
6
  "repository": {