dsh-cliworker-now 0.0.0-stage → 0.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +344 -0
  3. package/README.md +346 -2
  4. package/cordis.patch.yml +3 -0
  5. package/lib/account-models.mjs +259 -0
  6. package/lib/client.js +21542 -0
  7. package/lib/client.js.map +1 -0
  8. package/lib/grok-catalog.mjs +145 -0
  9. package/lib/hermes-native-entry.py +61 -0
  10. package/lib/index.js +12409 -0
  11. package/lib/index.js.map +1 -0
  12. package/lib/native-launch.mjs +179 -0
  13. package/lib/own-account-lease.mjs +105 -0
  14. package/lib/pi-installation.mjs +63 -0
  15. package/lib/pi-login.mjs +80 -0
  16. package/lib/pi-native-catalog.mjs +417 -0
  17. package/lib/pi-omp-bridge.mjs +602 -0
  18. package/lib/pi-omp-environment.mjs +15 -0
  19. package/lib/pi-omp-refresh.mjs +324 -0
  20. package/lib/private-launch.mjs +19 -0
  21. package/lib/terminal-bridge.mjs +18 -0
  22. package/lib/typert.host.d.ts +3 -0
  23. package/lib/typert.host.js +1358 -0
  24. package/lib/typert.remote-client.d.ts +70 -0
  25. package/lib/typert.remote-client.d.ts.map +1 -0
  26. package/lib/typert.remote-client.js +1190 -0
  27. package/lib/types/client/account-terminal-css.d.ts +1 -0
  28. package/lib/types/client/account-terminal-css.js +3 -0
  29. package/lib/types/client/account-terminal-css.js.map +1 -0
  30. package/lib/types/client/account-terminal.d.ts +13 -0
  31. package/lib/types/client/account-terminal.js +296 -0
  32. package/lib/types/client/account-terminal.js.map +1 -0
  33. package/lib/types/client/assets/antigravity.png +0 -0
  34. package/lib/types/client/assets/claude-code.png +0 -0
  35. package/lib/types/client/assets/cliworker-now-logo.png +0 -0
  36. package/lib/types/client/assets/codex.png +0 -0
  37. package/lib/types/client/assets/grok.png +0 -0
  38. package/lib/types/client/assets/hermes.png +0 -0
  39. package/lib/types/client/assets/kimi-dark.png +0 -0
  40. package/lib/types/client/assets/kimi-light.png +0 -0
  41. package/lib/types/client/assets/mimo-code.png +0 -0
  42. package/lib/types/client/assets/omp.png +0 -0
  43. package/lib/types/client/assets/opencode.png +0 -0
  44. package/lib/types/client/assets/pi.png +0 -0
  45. package/lib/types/client/assets/zcode.png +0 -0
  46. package/lib/types/client/composer-keymap.d.ts +18 -0
  47. package/lib/types/client/composer-keymap.js +49 -0
  48. package/lib/types/client/composer-keymap.js.map +1 -0
  49. package/lib/types/client/conversation-timeline.d.ts +6 -0
  50. package/lib/types/client/conversation-timeline.js +65 -0
  51. package/lib/types/client/conversation-timeline.js.map +1 -0
  52. package/lib/types/client/copy-text.d.ts +5 -0
  53. package/lib/types/client/copy-text.js +45 -0
  54. package/lib/types/client/copy-text.js.map +1 -0
  55. package/lib/types/client/icons.d.ts +21 -0
  56. package/lib/types/client/icons.js +68 -0
  57. package/lib/types/client/icons.js.map +1 -0
  58. package/lib/types/client/index.d.ts +3 -0
  59. package/lib/types/client/index.js +124 -0
  60. package/lib/types/client/index.js.map +1 -0
  61. package/lib/types/client/management-styles.d.ts +1 -0
  62. package/lib/types/client/management-styles.js +17 -0
  63. package/lib/types/client/management-styles.js.map +1 -0
  64. package/lib/types/client/name-copy.d.ts +5 -0
  65. package/lib/types/client/name-copy.js +107 -0
  66. package/lib/types/client/name-copy.js.map +1 -0
  67. package/lib/types/client/native-job-overlay.d.ts +11 -0
  68. package/lib/types/client/native-job-overlay.js +129 -0
  69. package/lib/types/client/native-job-overlay.js.map +1 -0
  70. package/lib/types/client/operation-error.d.ts +2 -0
  71. package/lib/types/client/operation-error.js +12 -0
  72. package/lib/types/client/operation-error.js.map +1 -0
  73. package/lib/types/client/panel.d.ts +8 -0
  74. package/lib/types/client/panel.js +310 -0
  75. package/lib/types/client/panel.js.map +1 -0
  76. package/lib/types/client/rename-copy-styles.d.ts +1 -0
  77. package/lib/types/client/rename-copy-styles.js +21 -0
  78. package/lib/types/client/rename-copy-styles.js.map +1 -0
  79. package/lib/types/client/rename-worker.d.ts +9 -0
  80. package/lib/types/client/rename-worker.js +53 -0
  81. package/lib/types/client/rename-worker.js.map +1 -0
  82. package/lib/types/client/role-presets.d.ts +6 -0
  83. package/lib/types/client/role-presets.js +111 -0
  84. package/lib/types/client/role-presets.js.map +1 -0
  85. package/lib/types/client/settings-dialog.d.ts +13 -0
  86. package/lib/types/client/settings-dialog.js +415 -0
  87. package/lib/types/client/settings-dialog.js.map +1 -0
  88. package/lib/types/client/stat-popover.d.ts +10 -0
  89. package/lib/types/client/stat-popover.js +32 -0
  90. package/lib/types/client/stat-popover.js.map +1 -0
  91. package/lib/types/client/styles.d.ts +9 -0
  92. package/lib/types/client/styles.js +221 -0
  93. package/lib/types/client/styles.js.map +1 -0
  94. package/lib/types/client/telemetry.d.ts +11 -0
  95. package/lib/types/client/telemetry.js +24 -0
  96. package/lib/types/client/telemetry.js.map +1 -0
  97. package/lib/types/client/worker-card.d.ts +10 -0
  98. package/lib/types/client/worker-card.js +75 -0
  99. package/lib/types/client/worker-card.js.map +1 -0
  100. package/lib/types/client/worker-model-menu.d.ts +9 -0
  101. package/lib/types/client/worker-model-menu.js +136 -0
  102. package/lib/types/client/worker-model-menu.js.map +1 -0
  103. package/lib/types/client/workers.d.ts +21 -0
  104. package/lib/types/client/workers.js +59 -0
  105. package/lib/types/client/workers.js.map +1 -0
  106. package/lib/types/host/account-identity.d.ts +16 -0
  107. package/lib/types/host/account-identity.js +126 -0
  108. package/lib/types/host/account-identity.js.map +1 -0
  109. package/lib/types/host/account-login.d.ts +10 -0
  110. package/lib/types/host/account-login.js +126 -0
  111. package/lib/types/host/account-login.js.map +1 -0
  112. package/lib/types/host/account-models.d.mts +19 -0
  113. package/lib/types/host/account-models.mjs +259 -0
  114. package/lib/types/host/accounts.d.ts +41 -0
  115. package/lib/types/host/accounts.js +838 -0
  116. package/lib/types/host/accounts.js.map +1 -0
  117. package/lib/types/host/adapters.d.ts +24 -0
  118. package/lib/types/host/adapters.js +331 -0
  119. package/lib/types/host/adapters.js.map +1 -0
  120. package/lib/types/host/agy-context.d.ts +8 -0
  121. package/lib/types/host/agy-context.js +122 -0
  122. package/lib/types/host/agy-context.js.map +1 -0
  123. package/lib/types/host/agy-models.d.ts +4 -0
  124. package/lib/types/host/agy-models.js +37 -0
  125. package/lib/types/host/agy-models.js.map +1 -0
  126. package/lib/types/host/authorized-catalog.d.ts +14 -0
  127. package/lib/types/host/authorized-catalog.js +26 -0
  128. package/lib/types/host/authorized-catalog.js.map +1 -0
  129. package/lib/types/host/bridge-protocol.d.ts +15 -0
  130. package/lib/types/host/bridge-protocol.js +80 -0
  131. package/lib/types/host/bridge-protocol.js.map +1 -0
  132. package/lib/types/host/cli-account-binding.d.ts +32 -0
  133. package/lib/types/host/cli-account-binding.js +502 -0
  134. package/lib/types/host/cli-account-binding.js.map +1 -0
  135. package/lib/types/host/cli-protocol.d.ts +27 -0
  136. package/lib/types/host/cli-protocol.js +212 -0
  137. package/lib/types/host/cli-protocol.js.map +1 -0
  138. package/lib/types/host/codex-account.d.ts +8 -0
  139. package/lib/types/host/codex-account.js +143 -0
  140. package/lib/types/host/codex-account.js.map +1 -0
  141. package/lib/types/host/codex-models.d.ts +6 -0
  142. package/lib/types/host/codex-models.js +165 -0
  143. package/lib/types/host/codex-models.js.map +1 -0
  144. package/lib/types/host/extended-adapters.d.ts +43 -0
  145. package/lib/types/host/extended-adapters.js +205 -0
  146. package/lib/types/host/extended-adapters.js.map +1 -0
  147. package/lib/types/host/first-party-account-context.d.ts +26 -0
  148. package/lib/types/host/first-party-account-context.js +55 -0
  149. package/lib/types/host/first-party-account-context.js.map +1 -0
  150. package/lib/types/host/first-party-models.d.ts +28 -0
  151. package/lib/types/host/first-party-models.js +370 -0
  152. package/lib/types/host/first-party-models.js.map +1 -0
  153. package/lib/types/host/grok-adapter.d.ts +44 -0
  154. package/lib/types/host/grok-adapter.js +293 -0
  155. package/lib/types/host/grok-adapter.js.map +1 -0
  156. package/lib/types/host/grok-models.d.ts +47 -0
  157. package/lib/types/host/grok-models.js +320 -0
  158. package/lib/types/host/grok-models.js.map +1 -0
  159. package/lib/types/host/harness-opencode-accounts.d.ts +17 -0
  160. package/lib/types/host/harness-opencode-accounts.js +80 -0
  161. package/lib/types/host/harness-opencode-accounts.js.map +1 -0
  162. package/lib/types/host/hermes-account-context.d.ts +8 -0
  163. package/lib/types/host/hermes-account-context.js +99 -0
  164. package/lib/types/host/hermes-account-context.js.map +1 -0
  165. package/lib/types/host/hermes-accounts.d.ts +19 -0
  166. package/lib/types/host/hermes-accounts.js +342 -0
  167. package/lib/types/host/hermes-accounts.js.map +1 -0
  168. package/lib/types/host/hermes-adapter.d.ts +90 -0
  169. package/lib/types/host/hermes-adapter.js +446 -0
  170. package/lib/types/host/hermes-adapter.js.map +1 -0
  171. package/lib/types/host/hermes-env.d.ts +4 -0
  172. package/lib/types/host/hermes-env.js +22 -0
  173. package/lib/types/host/hermes-env.js.map +1 -0
  174. package/lib/types/host/hermes-installation.d.ts +10 -0
  175. package/lib/types/host/hermes-installation.js +162 -0
  176. package/lib/types/host/hermes-installation.js.map +1 -0
  177. package/lib/types/host/hermes-models.d.ts +26 -0
  178. package/lib/types/host/hermes-models.js +328 -0
  179. package/lib/types/host/hermes-models.js.map +1 -0
  180. package/lib/types/host/hermes-native-entry.py +61 -0
  181. package/lib/types/host/hermes-nous.d.ts +49 -0
  182. package/lib/types/host/hermes-nous.js +343 -0
  183. package/lib/types/host/hermes-nous.js.map +1 -0
  184. package/lib/types/host/hermes-suppression.d.ts +7 -0
  185. package/lib/types/host/hermes-suppression.js +69 -0
  186. package/lib/types/host/hermes-suppression.js.map +1 -0
  187. package/lib/types/host/index.d.ts +138 -0
  188. package/lib/types/host/index.js +932 -0
  189. package/lib/types/host/index.js.map +1 -0
  190. package/lib/types/host/kimi-accounts.d.ts +15 -0
  191. package/lib/types/host/kimi-accounts.js +218 -0
  192. package/lib/types/host/kimi-accounts.js.map +1 -0
  193. package/lib/types/host/managed-agent.d.ts +4 -0
  194. package/lib/types/host/managed-agent.js +127 -0
  195. package/lib/types/host/managed-agent.js.map +1 -0
  196. package/lib/types/host/mimo-configuration.d.ts +22 -0
  197. package/lib/types/host/mimo-configuration.js +258 -0
  198. package/lib/types/host/mimo-configuration.js.map +1 -0
  199. package/lib/types/host/native-launch.d.mts +2 -0
  200. package/lib/types/host/native-launch.mjs +179 -0
  201. package/lib/types/host/native-process.d.ts +3 -0
  202. package/lib/types/host/native-process.js +26 -0
  203. package/lib/types/host/native-process.js.map +1 -0
  204. package/lib/types/host/opencode-adapter.d.ts +94 -0
  205. package/lib/types/host/opencode-adapter.js +507 -0
  206. package/lib/types/host/opencode-adapter.js.map +1 -0
  207. package/lib/types/host/opencode-native.d.ts +27 -0
  208. package/lib/types/host/opencode-native.js +403 -0
  209. package/lib/types/host/opencode-native.js.map +1 -0
  210. package/lib/types/host/own-account-lease.d.mts +5 -0
  211. package/lib/types/host/own-account-lease.mjs +105 -0
  212. package/lib/types/host/pi-installation.d.mts +7 -0
  213. package/lib/types/host/pi-installation.mjs +63 -0
  214. package/lib/types/host/pi-omp-accounts.d.ts +28 -0
  215. package/lib/types/host/pi-omp-accounts.js +175 -0
  216. package/lib/types/host/pi-omp-accounts.js.map +1 -0
  217. package/lib/types/host/pi-omp-adapter.d.ts +32 -0
  218. package/lib/types/host/pi-omp-adapter.js +176 -0
  219. package/lib/types/host/pi-omp-adapter.js.map +1 -0
  220. package/lib/types/host/pi-omp-environment.d.mts +1 -0
  221. package/lib/types/host/pi-omp-environment.mjs +15 -0
  222. package/lib/types/host/pi-omp-identity.d.ts +2 -0
  223. package/lib/types/host/pi-omp-identity.js +142 -0
  224. package/lib/types/host/pi-omp-identity.js.map +1 -0
  225. package/lib/types/host/pi-omp-logout.d.ts +3 -0
  226. package/lib/types/host/pi-omp-logout.js +152 -0
  227. package/lib/types/host/pi-omp-logout.js.map +1 -0
  228. package/lib/types/host/pi-omp-native.d.ts +71 -0
  229. package/lib/types/host/pi-omp-native.js +753 -0
  230. package/lib/types/host/pi-omp-native.js.map +1 -0
  231. package/lib/types/host/pi-omp-refresh.d.mts +7 -0
  232. package/lib/types/host/pi-omp-refresh.mjs +324 -0
  233. package/lib/types/host/process.d.ts +43 -0
  234. package/lib/types/host/process.js +134 -0
  235. package/lib/types/host/process.js.map +1 -0
  236. package/lib/types/host/protocol.d.ts +23 -0
  237. package/lib/types/host/protocol.js +112 -0
  238. package/lib/types/host/protocol.js.map +1 -0
  239. package/lib/types/host/roles.d.ts +34 -0
  240. package/lib/types/host/roles.js +80 -0
  241. package/lib/types/host/roles.js.map +1 -0
  242. package/lib/types/host/routing.d.ts +31 -0
  243. package/lib/types/host/routing.js +225 -0
  244. package/lib/types/host/routing.js.map +1 -0
  245. package/lib/types/host/runtime.d.ts +60 -0
  246. package/lib/types/host/runtime.js +586 -0
  247. package/lib/types/host/runtime.js.map +1 -0
  248. package/lib/types/host/storage.d.ts +48 -0
  249. package/lib/types/host/storage.js +449 -0
  250. package/lib/types/host/storage.js.map +1 -0
  251. package/lib/types/host/telemetry.d.ts +17 -0
  252. package/lib/types/host/telemetry.js +158 -0
  253. package/lib/types/host/telemetry.js.map +1 -0
  254. package/lib/types/host/zcode-account-models.d.ts +16 -0
  255. package/lib/types/host/zcode-account-models.js +114 -0
  256. package/lib/types/host/zcode-account-models.js.map +1 -0
  257. package/lib/types/host/zcode-adapter.d.ts +93 -0
  258. package/lib/types/host/zcode-adapter.js +804 -0
  259. package/lib/types/host/zcode-adapter.js.map +1 -0
  260. package/lib/types/host/zcode-grok-accounts.d.ts +28 -0
  261. package/lib/types/host/zcode-grok-accounts.js +359 -0
  262. package/lib/types/host/zcode-grok-accounts.js.map +1 -0
  263. package/lib/types/shared/accounts.d.ts +43 -0
  264. package/lib/types/shared/accounts.js +2 -0
  265. package/lib/types/shared/accounts.js.map +1 -0
  266. package/lib/types/shared/builtin-presets.d.ts +2 -0
  267. package/lib/types/shared/builtin-presets.js +231 -0
  268. package/lib/types/shared/builtin-presets.js.map +1 -0
  269. package/lib/types/shared/cli-settings.d.ts +5 -0
  270. package/lib/types/shared/cli-settings.js +2 -0
  271. package/lib/types/shared/cli-settings.js.map +1 -0
  272. package/lib/types/shared/model-presentation.d.ts +10 -0
  273. package/lib/types/shared/model-presentation.js +95 -0
  274. package/lib/types/shared/model-presentation.js.map +1 -0
  275. package/lib/types/shared/models.d.ts +7 -0
  276. package/lib/types/shared/models.js +35 -0
  277. package/lib/types/shared/models.js.map +1 -0
  278. package/lib/types/shared/telemetry.d.ts +18 -0
  279. package/lib/types/shared/telemetry.js +16 -0
  280. package/lib/types/shared/telemetry.js.map +1 -0
  281. package/lib/types/shared/types.d.ts +127 -0
  282. package/lib/types/shared/types.js +147 -0
  283. package/lib/types/shared/types.js.map +1 -0
  284. package/lib/zcode-resume.mjs +423 -0
  285. package/package.json +109 -4
@@ -0,0 +1,310 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { ComposerTelemetry } from "./telemetry.js";
3
+ import { ConversationTimeline } from "./conversation-timeline.js";
4
+ import { displayModelName } from "../shared/model-presentation.js";
5
+ import { operationMessage } from "./operation-error.js";
6
+ import { useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';
7
+ import { Button, Input, Tooltip, StateDot, IconChevronDownOutlineRegular, IconTrashOutlineRegular, } from '@deepseek-ai/dsh-client-ui-primitives';
8
+ import { createComposerKeymap } from "./composer-keymap.js";
9
+ import { active, CLI_IDS, CLI_LABELS, isRetiredCli, RETIRED_HARNESS_NOTICE, cliOf, workerName, } from "../shared/types.js";
10
+ import { useWorkers, value } from "./workers.js";
11
+ import { CopyText } from "./copy-text.js";
12
+ import { BrandIcon, Glyph } from "./icons.js";
13
+ import { WorkerModelMenu } from "./worker-model-menu.js";
14
+ import { SettingsDialog } from "./settings-dialog.js";
15
+ import { RenameWorker } from "./rename-worker.js";
16
+ import { WorkerCard } from "./worker-card.js";
17
+ const status = {
18
+ queued: '排队中',
19
+ running: '运行中',
20
+ stopping: '正在停止',
21
+ completed: '已完成',
22
+ failed: '失败',
23
+ interrupted: '已中断',
24
+ };
25
+ export function Panel(props) {
26
+ // In-memory only: project content is never copied into browser localStorage.
27
+ const [drafts, setDrafts] = useState({});
28
+ return (_jsx(SessionPanel, { ...props, drafts: drafts, editDraft: (id, text) => setDrafts((old) => ({ ...old, [id]: text })), clearSubmitted: (id, submitted) => setDrafts((old) => (old[id] === submitted ? { ...old, [id]: '' } : old)) }, props.sessionId));
29
+ }
30
+ function SessionPanel({ sessionId, api, openNativeSettings, drafts, editDraft, clearSubmitted, }) {
31
+ const [selected, select] = useState('');
32
+ const [collapsed, setCollapsed] = useState({});
33
+ const cliGroupId = useId();
34
+ const overview = useRef(null), overviewScroll = useRef(0);
35
+ const back = useRef(null), lastWorker = useRef('');
36
+ useLayoutEffect(() => {
37
+ if (selected)
38
+ back.current?.focus();
39
+ else if (overview.current) {
40
+ overview.current.scrollTop = overviewScroll.current;
41
+ overview.current
42
+ .querySelector(`[data-open-worker-id='${lastWorker.current}']`)
43
+ ?.focus({ preventScroll: true });
44
+ }
45
+ }, [selected]);
46
+ const openWorker = (id) => {
47
+ lastWorker.current = id;
48
+ setSettings(false);
49
+ select(id);
50
+ };
51
+ const [query, setQuery] = useState(''), [filter, setFilter] = useState('all');
52
+ const [showArchived, setShowArchived] = useState(false);
53
+ const [historyPage, setHistoryPage] = useState();
54
+ const history = historyPage?.workerId === selected ? historyPage : undefined;
55
+ const { snapshot, error: streamError, connecting, reconnect } = useWorkers(api, sessionId, selected);
56
+ const [errors, setErrors] = useState({}), [busy, setBusy] = useState(false);
57
+ const error = errors[selected] ?? '';
58
+ const setError = (text) => setErrors((old) => ({ ...old, [selected]: text }));
59
+ const pendingAction = useRef(false);
60
+ const managementAbort = useRef();
61
+ const [following, setFollowing] = useState(true);
62
+ const alive = useRef(true), currentSelection = useRef(selected);
63
+ currentSelection.current = selected;
64
+ useEffect(() => {
65
+ alive.current = true;
66
+ return () => {
67
+ alive.current = false;
68
+ managementAbort.current?.abort();
69
+ };
70
+ }, []);
71
+ const [settingsCli, setSettingsCli] = useState('antigravity');
72
+ const [settings, setSettings] = useState(false);
73
+ const [renaming, setRenaming] = useState();
74
+ const [restartFor, setRestartFor] = useState('');
75
+ const nativeSettingsRequested = useRef(false);
76
+ useEffect(() => {
77
+ // The native command must run after our Modal releases its focus/inert seat.
78
+ if (!settings && nativeSettingsRequested.current) {
79
+ nativeSettingsRequested.current = false;
80
+ try {
81
+ openNativeSettings?.();
82
+ }
83
+ catch {
84
+ setError('无法打开原生设置。请从 Harness 左侧打开「设置 → 模型」管理 API 登录。');
85
+ }
86
+ }
87
+ }, [settings, openNativeSettings]);
88
+ const feed = useRef(null), stick = useRef(true);
89
+ const worker = snapshot.selected;
90
+ const retired = !!worker && isRetiredCli(cliOf(worker.preference));
91
+ const prompt = drafts[selected] ?? '';
92
+ const composerInput = useRef(null);
93
+ const composerForm = useRef(null);
94
+ const submitEnabled = useRef(false);
95
+ const composerKeys = useMemo(() => createComposerKeymap(() => submitEnabled.current, () => composerForm.current?.requestSubmit()), [selected]);
96
+ useLayoutEffect(() => {
97
+ const el = composerInput.current;
98
+ if (!el)
99
+ return;
100
+ el.style.height = '36px';
101
+ el.style.height = `${Math.max(36, Math.min(el.scrollHeight, 336))}px`;
102
+ }, [prompt, selected, snapshot.selected?.id]);
103
+ useEffect(() => {
104
+ stick.current = true;
105
+ setFollowing(true);
106
+ setHistoryPage(undefined);
107
+ setRestartFor('');
108
+ }, [selected]);
109
+ useEffect(() => {
110
+ if (restartFor)
111
+ composerInput.current?.focus({ preventScroll: true });
112
+ }, [restartFor]);
113
+ useEffect(() => {
114
+ if (!history && stick.current && feed.current)
115
+ feed.current.scrollTop = feed.current.scrollHeight;
116
+ }, [snapshot.timeline, selected, history]);
117
+ useEffect(() => {
118
+ if (history && feed.current)
119
+ feed.current.scrollTop = 0;
120
+ }, [history]);
121
+ async function perform(action) {
122
+ if (pendingAction.current)
123
+ return;
124
+ pendingAction.current = true;
125
+ const origin = selected;
126
+ const isCurrent = () => alive.current && currentSelection.current === origin;
127
+ setBusy(true);
128
+ setError('');
129
+ try {
130
+ await action(isCurrent);
131
+ }
132
+ catch (e) {
133
+ if (alive.current)
134
+ setErrors((old) => ({ ...old, [origin]: operationMessage(e) }));
135
+ }
136
+ finally {
137
+ pendingAction.current = false;
138
+ if (alive.current)
139
+ setBusy(false);
140
+ }
141
+ }
142
+ const running = worker && active(worker.status);
143
+ const unavailable = connecting || !!streamError;
144
+ const startingNew = !!worker && restartFor === worker.id;
145
+ const resumeBlocked = snapshot.resumeBlockedReason;
146
+ const canResume = (startingNew || (worker?.conversationId && !resumeBlocked)) && !retired && !running && !unavailable;
147
+ submitEnabled.current = !!prompt.trim() && !!canResume && !busy;
148
+ const jumpToLatest = () => {
149
+ setHistoryPage(undefined);
150
+ stick.current = true;
151
+ setFollowing(true);
152
+ if (feed.current)
153
+ feed.current.scrollTop = feed.current.scrollHeight;
154
+ };
155
+ const visibleWorkers = snapshot.workers.filter((w) => {
156
+ const matches = `${CLI_LABELS[cliOf(w.preference)]} ${workerName(w)} ${w.title} ${w.preference.model} ${w.preference.effort}`
157
+ .toLowerCase()
158
+ .includes(query.trim().toLowerCase());
159
+ return (matches &&
160
+ (filter === 'all' ||
161
+ (filter === 'active'
162
+ ? active(w.status)
163
+ : filter === 'attention'
164
+ ? w.status === 'failed' || w.status === 'interrupted'
165
+ : w.status === 'completed')));
166
+ });
167
+ const archivedWorkers = snapshot.archivedWorkers ?? [];
168
+ const manageWorker = (target, action) => {
169
+ if (action === 'name' || action === 'title') {
170
+ setRenaming({ worker: target, mode: action });
171
+ return;
172
+ }
173
+ void perform(async (isCurrent) => {
174
+ const controller = new AbortController();
175
+ managementAbort.current = controller;
176
+ try {
177
+ value(await api.cliworker.deleteWorker(sessionId, target.id, controller.signal));
178
+ }
179
+ finally {
180
+ if (managementAbort.current === controller)
181
+ managementAbort.current = undefined;
182
+ }
183
+ if (isCurrent()) {
184
+ if (selected === target.id)
185
+ select('');
186
+ setShowArchived(true);
187
+ }
188
+ });
189
+ };
190
+ const displayedTimeline = history?.items ?? snapshot.timeline;
191
+ const loadHistory = (direction) => {
192
+ const anchor = direction === 'before' ? displayedTimeline[0]?.id : displayedTimeline.at(-1)?.id;
193
+ if (!worker || !anchor)
194
+ return;
195
+ void perform(async (isCurrent) => {
196
+ const page = JSON.parse(value(await api.cliworker.history(sessionId, worker.id, anchor, direction)));
197
+ if (!isCurrent())
198
+ return;
199
+ if (page.workerId !== worker.id)
200
+ throw new Error('收到不匹配的历史记录');
201
+ if (!page.items.length) {
202
+ jumpToLatest();
203
+ return;
204
+ }
205
+ stick.current = false;
206
+ setFollowing(false);
207
+ setHistoryPage(page);
208
+ });
209
+ };
210
+ return (_jsxs("section", { className: "cwn", "aria-label": "CLI Worker Now", children: [_jsx("header", { className: "cwn-head", children: selected ? (_jsxs(_Fragment, { children: [_jsx(Tooltip, { label: "\u8FD4\u56DE\u5B50 Agent \u5217\u8868", side: "bottom", portal: true, children: _jsx(Button, { ref: back, type: "button", variant: "outline", size: "sm", className: "cwn-back", "aria-label": "\u8FD4\u56DE\u5B50 Agent \u5217\u8868", onClick: () => {
211
+ setSettings(false);
212
+ select('');
213
+ }, children: _jsx(Glyph, { name: "back" }) }) }), _jsx("h2", { title: worker ? `${workerName(worker)}|${worker.title}` : undefined, children: (() => {
214
+ const current = worker ?? snapshot.workers.find((w) => w.id === selected);
215
+ return current ? `${workerName(current)}|${current.title}` : '正在加载…';
216
+ })() }), _jsxs("details", { className: "cwn-actions", children: [_jsx("summary", { "aria-label": "\u4EFB\u52A1\u9009\u9879", title: "\u4EFB\u52A1\u9009\u9879", children: _jsx(Glyph, { name: "more" }) }), _jsxs("div", { className: "cwn-action-menu", children: [worker && (_jsxs(_Fragment, { children: [_jsx("strong", { children: CLI_LABELS[cliOf(worker.preference)] }), _jsx("p", { children: worker.mode === 'plan' ? 'CLI 规划模式' : '可编辑任务' }), worker.role && _jsxs("p", { title: worker.role.summary, children: ["\u89D2\u8272\uFF1A", worker.role.name] }), _jsx(Button, { type: "button", size: "sm", variant: "ghost", onClick: () => manageWorker(worker, 'name'), disabled: unavailable || busy, children: "\u4FEE\u6539\u667A\u80FD\u4F53\u540D\u79F0" }), _jsx(Button, { type: "button", size: "sm", variant: "ghost", onClick: () => manageWorker(worker, 'title'), disabled: unavailable || busy, children: "\u4FEE\u6539\u804A\u5929\u6807\u9898" }), _jsx(Button, { type: "button", size: "sm", variant: "ghost", onClick: () => manageWorker(worker, 'delete'), disabled: unavailable || busy || !!running, children: "\u5220\u9664" }), worker.observedModel && worker.observedModel !== worker.preference.model && (_jsxs("p", { children: ["CLI \u5B9E\u9645\u6A21\u578B\uFF1A", displayModelName({ ...worker.preference, model: worker.observedModel })] })), worker.lastResult && (_jsx(CopyText, { text: worker.lastResult, label: "\u590D\u5236\u6700\u65B0\u7ED3\u679C" }, `${worker.id}:${worker.runId}`))] })), _jsx(Button, { type: "button", size: "sm", variant: "ghost", onClick: () => {
217
+ setSettingsCli(worker && !retired ? cliOf(worker.preference) : settingsCli);
218
+ setSettings(true);
219
+ }, disabled: retired, children: "\u9ED8\u8BA4\u8BBE\u7F6E" })] })] })] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "cwn-wordmark", children: [_jsx(BrandIcon, { size: 36, tone: "monochrome" }), _jsxs("h2", { "aria-label": "CLI Worker Now", children: [_jsx("span", { children: "CLI Worker" }), _jsx("small", { children: "NOW" })] })] }), _jsx(Tooltip, { label: "\u9ED8\u8BA4\u8BBE\u7F6E", side: "bottom", portal: true, children: _jsx(Button, { type: "button", variant: "ghost", size: "md", className: "cwn-settings-button", "aria-label": "\u9ED8\u8BA4\u8BBE\u7F6E", onClick: () => setSettings(true), children: _jsx(Glyph, { name: "settings" }) }) })] })) }), selected && worker && !retired && !running && (resumeBlocked || startingNew) && (_jsxs("div", { className: "cwn-resume-banner", role: "status", "aria-label": "\u5BF9\u8BDD\u72B6\u6001", children: [_jsx("span", { children: startingNew
220
+ ? '新对话将沿用原设定'
221
+ : resumeBlocked === '此历史任务缺少账号记录,请新建任务'
222
+ ? '历史账号记录缺失'
223
+ : resumeBlocked }), _jsx(Button, { type: "button", size: "sm", variant: "ghost", "aria-label": startingNew ? '取消新建' : '新建对话', disabled: busy || (!startingNew && unavailable), onClick: () => setRestartFor(startingNew ? '' : worker.id), children: startingNew ? '取消' : '新建对话' })] })), renaming && (_jsx(RenameWorker, { api: api, sessionId: sessionId, worker: renaming.worker, mode: renaming.mode, onClose: () => setRenaming(undefined) }, `${renaming.worker.id}:${renaming.mode}`)), _jsx(SettingsDialog, { openNativeSettings: openNativeSettings
224
+ ? () => {
225
+ nativeSettingsRequested.current = true;
226
+ setSettings(false);
227
+ }
228
+ : undefined, open: settings, onClose: () => setSettings(false), api: api, sessionId: sessionId, initialCli: settingsCli }), !selected && (_jsxs("div", { className: "cwn-overview", children: [_jsxs("div", { className: "cwn-overview-controls", children: [_jsx(Input, { className: "cwn-search", icon: _jsx(Glyph, { name: "search" }), type: "search", "aria-label": "\u7B5B\u9009\u5B50 Agent", placeholder: "\u641C\u7D22\u667A\u80FD\u4F53\u3001\u8BDD\u9898\u6216\u6A21\u578B\u2026", value: query, onChange: (e) => setQuery(e.target.value) }), _jsxs("div", { className: "cwn-filter-row", children: [_jsx("div", { className: "cwn-filters", role: "group", "aria-label": "\u4EFB\u52A1\u72B6\u6001\u7B5B\u9009", children: [
229
+ ['all', '全部'],
230
+ ['active', '进行中'],
231
+ ['completed', '已完成'],
232
+ ['attention', '异常'],
233
+ ].map(([id, label]) => (_jsx(Button, { type: "button", variant: "outline", size: "md", "aria-pressed": !showArchived && filter === id, onClick: () => {
234
+ setShowArchived(false);
235
+ setFilter(id);
236
+ }, children: label }, id))) }), _jsx(Tooltip, { label: showArchived ? '返回列表' : '已删除', side: "bottom", portal: true, children: _jsx(Button, { type: "button", size: "md", variant: "ghost", className: "cwn-archive-toggle", "aria-label": showArchived ? '返回列表' : '已删除', "aria-pressed": showArchived, onClick: () => setShowArchived((shown) => !shown), children: _jsx(IconTrashOutlineRegular, {}) }) })] })] }), _jsxs("div", { className: "cwn-overview-list", ref: overview, onScroll: () => {
237
+ overviewScroll.current = overview.current?.scrollTop ?? 0;
238
+ }, children: [showArchived ? (_jsxs("div", { className: "cwn-archived-list", "aria-label": "\u5DF2\u5220\u9664\u5BF9\u8BDD", children: [archivedWorkers.length === 0 && _jsx("div", { className: "cwn-empty", children: "\u6CA1\u6709\u5DF2\u5220\u9664\u7684\u5BF9\u8BDD" }), archivedWorkers.map((archived) => (_jsxs("article", { className: "cwn-archived-row", children: [_jsxs("div", { children: [_jsx("strong", { children: archived.title }), _jsx("small", { children: workerName(archived) })] }), _jsx(Button, { type: "button", size: "sm", variant: "outline", "aria-label": `恢复对话 ${archived.title}`, disabled: busy || unavailable, onClick: () => {
239
+ void perform(async () => {
240
+ const controller = new AbortController();
241
+ managementAbort.current = controller;
242
+ try {
243
+ value(await api.cliworker.restoreWorker(sessionId, archived.id, controller.signal));
244
+ }
245
+ finally {
246
+ if (managementAbort.current === controller)
247
+ managementAbort.current = undefined;
248
+ }
249
+ });
250
+ }, children: "\u6062\u590D" })] }, archived.id)))] })) : (_jsx("nav", { "aria-label": "\u5B50 Agent", children: [...CLI_IDS, 'harness'].map((cli) => {
251
+ const rows = visibleWorkers.filter((w) => cliOf(w.preference) === cli);
252
+ if (!rows.length)
253
+ return null;
254
+ return (_jsxs("section", { className: "cwn-cli-group", "aria-label": `${CLI_LABELS[cli]} 子 Agent`, children: [_jsxs("button", { className: "cwn-cli-heading", type: "button", "aria-expanded": !collapsed[cli], "aria-controls": `${cliGroupId}-${cli}`, onClick: () => setCollapsed((old) => ({ ...old, [cli]: !old[cli] })), children: [_jsx(BrandIcon, { cli: cli }), _jsx("strong", { children: CLI_LABELS[cli] }), _jsxs("span", { children: [rows.length, " \u4E2A Agent"] }), _jsx(Glyph, { name: "chevron" })] }), _jsx("div", { id: `${cliGroupId}-${cli}`, className: "cwn-cli-rows", "data-expanded": !collapsed[cli], "aria-hidden": !!collapsed[cli], ...(collapsed[cli] ? { inert: '' } : {}), children: _jsx("div", { className: "cwn-cli-rows-inner", children: rows.map((w) => (_jsx(WorkerCard, { worker: w, collapsed: !!collapsed[cli], unavailable: unavailable, busy: busy, onOpen: () => openWorker(w.id), onManage: (action) => manageWorker(w, action) }, w.id))) }) })] }, cli));
255
+ }) })), snapshot.configuring && (_jsx("div", { className: "cwn-notice", children: "\u7B49\u5F85\u786E\u8BA4\u8BBE\u5B9A\u3002\u8BF7\u5728\u4E3B\u5BF9\u8BDD\u7684\u95EE\u9898\u5361\u7247\u4E2D\u9009\u62E9\u3002" })), !connecting &&
256
+ !streamError &&
257
+ !snapshot.workers.length &&
258
+ !snapshot.configuring &&
259
+ !showArchived &&
260
+ !query &&
261
+ filter === 'all' && (_jsxs("div", { className: "cwn-empty cwn-start-empty", children: [_jsx("h3", { children: "\u628A\u60F3\u505A\u7684\u4E8B\uFF0C\u4EA4\u7ED9\u5408\u9002\u7684\u4F19\u4F34\u3002" }), _jsx("p", { children: "\u5728\u4E3B\u5BF9\u8BDD\u4E2D\u53D1\u8D77\u4EFB\u52A1\uFF0C\u534F\u4F5C\u4F1A\u5728\u8FD9\u91CC\u5C55\u5F00\u3002" })] }))] })] })), streamError && (_jsxs("div", { role: "alert", className: "cwn-error", children: [_jsx("div", { children: "\u5B9E\u65F6\u8FDE\u63A5\u5DF2\u65AD\u5F00\uFF0C\u5DF2\u6536\u5230\u7684\u8BB0\u5F55\u4FDD\u7559\u5728\u8FD9\u91CC\u3002\u91CD\u65B0\u8FDE\u63A5\u4E0D\u4F1A\u91CD\u65B0\u6267\u884C\u4EFB\u52A1\u3002" }), _jsx(Button, { type: "button", size: "sm", variant: "outline", onClick: reconnect, children: "\u91CD\u65B0\u8FDE\u63A5" }), _jsxs("details", { children: [_jsx("summary", { children: "\u8FDE\u63A5\u8BE6\u60C5" }), streamError] })] })), connecting && (_jsxs("div", { className: "cwn-notice", role: "status", children: [_jsx(StateDot, { state: "ongoing", size: 14 }), " \u6B63\u5728\u8FDE\u63A5\u5E76\u6062\u590D\u8BB0\u5F55\u2026"] })), error && !settings && (_jsx("div", { role: "alert", className: "cwn-notice", children: error })), worker?.error && (_jsx("div", { role: "status", className: "cwn-error", children: worker.error })), selected && history && (_jsxs("div", { className: "cwn-history-nav", "aria-label": "\u5386\u53F2\u7FFB\u9875", children: [_jsxs("span", { children: ["\u5386\u53F2\u8BB0\u5F55 ", history.start + 1, "\u2013", history.end, " \u00B7 \u8BFB\u53D6\u65F6\u5171 ", history.total, " \u6761"] }), _jsxs("div", { children: [_jsx(Button, { type: "button", size: "sm", variant: "outline", disabled: busy || unavailable || !history.hasOlder, onClick: () => loadHistory('before'), children: "\u66F4\u65E9\u8BB0\u5F55" }), _jsx(Button, { type: "button", size: "sm", variant: "outline", disabled: busy || unavailable || !history.hasNewer, onClick: () => loadHistory('after'), children: "\u8F83\u65B0\u8BB0\u5F55" }), _jsx(Button, { type: "button", size: "sm", variant: "ghost", onClick: jumpToLatest, children: "\u8FD4\u56DE\u5B9E\u65F6" })] }), _jsx("small", { children: "\u5386\u53F2\u9875\u4FDD\u6301\u9759\u6B62\uFF0C\u8FD4\u56DE\u5B9E\u65F6\u53EF\u67E5\u770B\u6700\u65B0\u8FDB\u5C55\u3002" })] })), selected && (_jsxs("div", { className: "cwn-conversation", children: [_jsxs("div", { className: "cwn-feed", ref: feed, onScroll: () => {
262
+ if (history)
263
+ return;
264
+ const el = feed.current;
265
+ // Harness rc.2 ScrollFollow uses a 25px bottom tolerance.
266
+ stick.current = el.scrollHeight - el.scrollTop - el.clientHeight <= 25;
267
+ setFollowing(stick.current);
268
+ }, "aria-label": "\u5BF9\u8BDD\u8BB0\u5F55", "aria-busy": running || false, children: [snapshot.configuring && (_jsx("div", { className: "cwn-notice", children: "\u7B49\u5F85\u786E\u8BA4\u8BBE\u5B9A\u3002\u8BF7\u5728\u4E3B\u5BF9\u8BDD\u7684\u95EE\u9898\u5361\u7247\u4E2D\u9009\u62E9\u3002" })), !history && snapshot.truncated && (_jsxs("div", { className: "cwn-history-start", children: [_jsxs("span", { children: ["\u5F53\u524D\u663E\u793A\u6700\u8FD1 ", snapshot.timeline.length, " \u6761\u8BB0\u5F55"] }), _jsx(Button, { type: "button", size: "sm", variant: "outline", disabled: busy || unavailable, onClick: () => loadHistory('before'), children: "\u67E5\u770B\u66F4\u65E9\u8BB0\u5F55" })] })), _jsx(ConversationTimeline, { items: displayedTimeline, latestItems: snapshot.timeline, worker: worker })] }), !history && !following && worker && (_jsx("div", { className: "cwn-jump", children: _jsx("button", { className: "cwn-jump-button", type: "button", "aria-label": "\u56DE\u5230\u6700\u65B0\u6D88\u606F", onClick: jumpToLatest, children: _jsx(IconChevronDownOutlineRegular, {}) }) }))] })), selected && worker && (_jsxs("form", { ref: composerForm, className: "cwn-compose", onSubmit: (e) => {
269
+ e.preventDefault();
270
+ if (!prompt.trim() || !canResume || busy)
271
+ return;
272
+ void perform(async (isCurrent) => {
273
+ if (startingNew) {
274
+ const controller = new AbortController();
275
+ managementAbort.current = controller;
276
+ let receipt;
277
+ try {
278
+ receipt = JSON.parse(value(await api.cliworker.restartWorker(sessionId, worker.id, prompt, controller.signal)));
279
+ }
280
+ finally {
281
+ if (managementAbort.current === controller)
282
+ managementAbort.current = undefined;
283
+ }
284
+ if (!receipt.workerId || receipt.workerId === worker.id)
285
+ throw new Error('新对话未返回有效的智能体记录');
286
+ clearSubmitted(worker.id, prompt);
287
+ if (isCurrent()) {
288
+ lastWorker.current = receipt.workerId;
289
+ setRestartFor('');
290
+ select(receipt.workerId);
291
+ }
292
+ return;
293
+ }
294
+ value(await api.cliworker.followup(sessionId, worker.id, prompt));
295
+ clearSubmitted(worker.id, prompt);
296
+ if (isCurrent())
297
+ jumpToLatest();
298
+ });
299
+ }, children: [retired && _jsx("p", { className: "cwn-resume-hint", children: RETIRED_HARNESS_NOTICE }), _jsxs("div", { className: "cwn-compose-box", children: [_jsx("textarea", { ref: composerInput, "aria-label": startingNew ? '新建对话内容' : '继续对话', value: prompt, onChange: (e) => editDraft(worker.id, e.target.value), onKeyDown: composerKeys.onKeyDown, onCompositionStart: composerKeys.onCompositionStart, onCompositionEnd: composerKeys.onCompositionEnd, disabled: !canResume || busy, maxLength: 100000, placeholder: startingNew
300
+ ? '输入新对话的任务…'
301
+ : running
302
+ ? '本轮完成后可以继续对话'
303
+ : '给这个子 Agent 分配下一步…', rows: 1 }), _jsxs("div", { className: "cwn-compose-bottom", children: [_jsx(WorkerModelMenu, { worker: worker, api: api, sessionId: sessionId, disabled: retired || busy || unavailable || !!running || startingNew || !!resumeBlocked }, worker.id), running ? (_jsx(Button, { type: "button", size: "sm", variant: "outline", className: "cwn-send", "aria-label": "\u505C\u6B62", title: "\u505C\u6B62", disabled: busy || worker.status === 'stopping', onClick: () => void perform(async () => {
304
+ value(await api.cliworker.stop(sessionId, worker.id));
305
+ }), children: _jsx(Glyph, { name: "stop" }) })) : (_jsx("button", { type: "submit", className: "cwn-send", "aria-label": startingNew ? '新建对话并发送' : '继续对话', title: startingNew ? '新建对话并发送' : '继续对话', disabled: !canResume || busy || !prompt.trim(), onMouseDown: (e) => {
306
+ e.preventDefault();
307
+ composerInput.current?.focus({ preventScroll: true });
308
+ }, children: _jsx(Glyph, { name: "send" }) }))] })] }), _jsx(ComposerTelemetry, { worker: worker, telemetry: snapshot.telemetry, statusLabel: status[worker.status] })] }))] }));
309
+ }
310
+ //# sourceMappingURL=panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel.js","sourceRoot":"","sources":["../../../src/client/panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const renameCopyStyles = "\n.cwn-rename-dialog{padding-bottom:16px;gap:12px}\n.cwn-rename-content>:first-child{padding-top:16px;padding-bottom:8px}\n.cwn-rename-content>:last-child{margin-top:12px}\n.cwn-rename-form{display:flex;flex-direction:column;gap:12px;min-width:0;width:100%}\n.cwn-rename-form>.cwn-rename-input{display:flex;box-sizing:border-box;width:100%;min-width:0}\n.cwn-rename-input>input{width:100%;min-width:0}\n.cwn-rename-form>p{margin:0;font-size:var(--dsw-font-xxs-12-font-size);color:var(--dsw-alias-label-tertiary);line-height:20px}\n.cwn-rename-error{font-size:var(--dsw-font-xxs-12-font-size);line-height:20px;color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere}\n.cwn-rename-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}\n.cwn-name-copy{min-width:0;max-width:38%;display:inline-flex;position:relative;flex-shrink:1}\n.cwn .cwn-worker-name{display:inline-flex;align-items:center;flex:1;max-width:none;min-width:0;gap:0;border:0;border-radius:var(--dsw-radius-sm);padding:2px 8px;margin:0 -4px;background:transparent;color:inherit;font:inherit;user-select:text;transition:background-color .1s,color .1s}\n.cwn-worker-name>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.cwn-name-divider{display:block;width:1px;height:12px;background:currentColor;flex:none}\n.cwn-worker-meta>.cwn-worker-model{margin-inline-start:4px}\n.cwn .cwn-worker-name:hover,.cwn .cwn-worker-name:focus-visible{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}\n.cwn-name-copy-failure{position:absolute;top:100%;left:0;z-index:1;max-width:260px;width:max-content;padding:4px 8px;border-radius:var(--dsw-radius-sm);background:var(--dsw-specific-menu);color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px;white-space:normal}\n@media(prefers-reduced-motion:reduce){.cwn-worker-name{transition:none!important}}\n";
@@ -0,0 +1,21 @@
1
+ // Local placement for the native Modal/Input and independent name-copy action.
2
+ export const renameCopyStyles = `
3
+ .cwn-rename-dialog{padding-bottom:16px;gap:12px}
4
+ .cwn-rename-content>:first-child{padding-top:16px;padding-bottom:8px}
5
+ .cwn-rename-content>:last-child{margin-top:12px}
6
+ .cwn-rename-form{display:flex;flex-direction:column;gap:12px;min-width:0;width:100%}
7
+ .cwn-rename-form>.cwn-rename-input{display:flex;box-sizing:border-box;width:100%;min-width:0}
8
+ .cwn-rename-input>input{width:100%;min-width:0}
9
+ .cwn-rename-form>p{margin:0;font-size:var(--dsw-font-xxs-12-font-size);color:var(--dsw-alias-label-tertiary);line-height:20px}
10
+ .cwn-rename-error{font-size:var(--dsw-font-xxs-12-font-size);line-height:20px;color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere}
11
+ .cwn-rename-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
12
+ .cwn-name-copy{min-width:0;max-width:38%;display:inline-flex;position:relative;flex-shrink:1}
13
+ .cwn .cwn-worker-name{display:inline-flex;align-items:center;flex:1;max-width:none;min-width:0;gap:0;border:0;border-radius:var(--dsw-radius-sm);padding:2px 8px;margin:0 -4px;background:transparent;color:inherit;font:inherit;user-select:text;transition:background-color .1s,color .1s}
14
+ .cwn-worker-name>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
15
+ .cwn-name-divider{display:block;width:1px;height:12px;background:currentColor;flex:none}
16
+ .cwn-worker-meta>.cwn-worker-model{margin-inline-start:4px}
17
+ .cwn .cwn-worker-name:hover,.cwn .cwn-worker-name:focus-visible{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}
18
+ .cwn-name-copy-failure{position:absolute;top:100%;left:0;z-index:1;max-width:260px;width:max-content;padding:4px 8px;border-radius:var(--dsw-radius-sm);background:var(--dsw-specific-menu);color:var(--dsw-alias-state-error-primary);font-size:12px;line-height:18px;white-space:normal}
19
+ @media(prefers-reduced-motion:reduce){.cwn-worker-name{transition:none!important}}
20
+ `;
21
+ //# sourceMappingURL=rename-copy-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-copy-styles.js","sourceRoot":"","sources":["../../../src/client/rename-copy-styles.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;CAkB/B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { type Worker } from '../shared/types.ts';
2
+ import { type API } from './workers.ts';
3
+ export declare function RenameWorker({ api, sessionId, worker, mode, onClose, }: {
4
+ api: API;
5
+ sessionId: string;
6
+ worker: Worker;
7
+ mode?: 'name' | 'title';
8
+ onClose: () => void;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { Button, Input, Modal, StateDot } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ import { workerName } from "../shared/types.js";
5
+ import { operationMessage } from "./operation-error.js";
6
+ import { value } from "./workers.js";
7
+ export function RenameWorker({ api, sessionId, worker, mode = 'name', onClose, }) {
8
+ const titleMode = mode === 'title';
9
+ const [name, setName] = useState(titleMode ? worker.title : workerName(worker));
10
+ const [saving, setSaving] = useState(false);
11
+ const [error, setError] = useState('');
12
+ const pending = useRef();
13
+ useEffect(() => () => pending.current?.abort(), []);
14
+ const close = () => {
15
+ pending.current?.abort();
16
+ pending.current = undefined;
17
+ onClose();
18
+ };
19
+ const save = async () => {
20
+ if (pending.current)
21
+ return;
22
+ if (!name.trim()) {
23
+ setError(titleMode ? '请输入聊天标题。' : '请输入智能体名称。');
24
+ return;
25
+ }
26
+ const controller = new AbortController();
27
+ pending.current = controller;
28
+ setSaving(true);
29
+ setError('');
30
+ try {
31
+ value(await (titleMode
32
+ ? api.cliworker.renameWorkerTitle(sessionId, worker.id, name.trim(), controller.signal)
33
+ : api.cliworker.renameWorker(sessionId, worker.id, name.trim(), controller.signal)));
34
+ if (!controller.signal.aborted)
35
+ onClose();
36
+ }
37
+ catch (e) {
38
+ if (!controller.signal.aborted)
39
+ setError(operationMessage(e));
40
+ }
41
+ finally {
42
+ if (!controller.signal.aborted) {
43
+ pending.current = undefined;
44
+ setSaving(false);
45
+ }
46
+ }
47
+ };
48
+ return (_jsx(Modal, { open: true, onClose: close, title: titleMode ? '聊天标题' : '智能体名称', closeLabel: titleMode ? '关闭聊天标题编辑' : '关闭智能体命名', className: "cwn-rename-dialog", contentClassName: "cwn-rename-content", children: _jsxs("form", { className: "cwn-rename-form", onSubmit: (event) => {
49
+ event.preventDefault();
50
+ void save();
51
+ }, children: [_jsx(Input, { className: "cwn-control-input cwn-rename-input", "aria-label": titleMode ? '新的聊天标题' : '新的智能体名称', "data-modal-autofocus": true, value: name, maxLength: titleMode ? 160 : 60, disabled: saving, onChange: (event) => setName(event.target.value) }), !titleMode && _jsx("p", { children: "\u4E4B\u540E\u53EF\u5728\u4E3B\u5BF9\u8BDD\u4E2D\u901A\u8FC7\u8FD9\u4E2A\u540D\u5B57\u7EE7\u7EED\u8C03\u7528\u3002" }), error && (_jsx("div", { className: "cwn-rename-error", role: "alert", children: error })), _jsxs("div", { className: "cwn-rename-actions", children: [_jsx(Button, { type: "button", size: "md", variant: "outline", onClick: close, children: "\u53D6\u6D88" }), _jsxs(Button, { type: "submit", size: "md", variant: "primary", disabled: saving, children: [saving && _jsx(StateDot, { state: "ongoing", size: 14 }), titleMode ? '保存标题' : '保存名称'] })] })] }) }));
52
+ }
53
+ //# sourceMappingURL=rename-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-worker.js","sourceRoot":"","sources":["../../../src/client/rename-worker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type API } from './workers.ts';
2
+ /** The Host stores the library; saved workers keep their own role snapshot. */
3
+ export declare function RolePresetsPane({ api, sessionId }: {
4
+ api: API;
5
+ sessionId: string;
6
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,111 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { Button, Input, StateDot } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ import { operationMessage } from "./operation-error.js";
5
+ import { Glyph } from "./icons.js";
6
+ import { value } from "./workers.js";
7
+ const emptyDraft = () => ({ name: '', summary: '', prompt: '' });
8
+ /** The Host stores the library; saved workers keep their own role snapshot. */
9
+ export function RolePresetsPane({ api, sessionId }) {
10
+ const [presets, setPresets] = useState([]);
11
+ const [query, setQuery] = useState('');
12
+ const [draft, setDraft] = useState();
13
+ const [loading, setLoading] = useState(true);
14
+ const [busy, setBusy] = useState(false);
15
+ const [error, setError] = useState('');
16
+ const [feedback, setFeedback] = useState('');
17
+ const [confirmDelete, setConfirmDelete] = useState(false);
18
+ const [revision, setRevision] = useState(0);
19
+ const action = useRef();
20
+ useEffect(() => {
21
+ const controller = new AbortController();
22
+ setLoading(true);
23
+ setError('');
24
+ void (async () => {
25
+ try {
26
+ const next = JSON.parse(value(await api.cliworker.rolePresets(sessionId, controller.signal)));
27
+ if (!controller.signal.aborted)
28
+ setPresets(next);
29
+ }
30
+ catch (e) {
31
+ if (!controller.signal.aborted)
32
+ setError(operationMessage(e));
33
+ }
34
+ finally {
35
+ if (!controller.signal.aborted)
36
+ setLoading(false);
37
+ }
38
+ })();
39
+ return () => controller.abort();
40
+ }, [api, sessionId, revision]);
41
+ useEffect(() => () => action.current?.abort(), []);
42
+ const openEditor = (next) => {
43
+ setDraft({ ...next });
44
+ setConfirmDelete(false);
45
+ setError('');
46
+ setFeedback('');
47
+ };
48
+ const closeEditor = () => {
49
+ if (busy)
50
+ return;
51
+ setDraft(undefined);
52
+ setConfirmDelete(false);
53
+ setError('');
54
+ };
55
+ async function persist(remove = false) {
56
+ if (!draft || action.current || (remove && !draft.id))
57
+ return;
58
+ const request = {
59
+ ...draft,
60
+ name: draft.name.trim(),
61
+ summary: draft.summary.trim(),
62
+ prompt: draft.prompt.trim(),
63
+ };
64
+ if (!remove && (!request.name || !request.summary || !request.prompt)) {
65
+ setError('请填写智能体名称、概述和角色提示词。');
66
+ return;
67
+ }
68
+ const controller = new AbortController();
69
+ action.current = controller;
70
+ setBusy(true);
71
+ setError('');
72
+ try {
73
+ if (remove) {
74
+ value(await api.cliworker.deleteRolePreset(sessionId, draft.id, controller.signal));
75
+ if (!controller.signal.aborted) {
76
+ setPresets((old) => old.filter((item) => item.id !== draft.id));
77
+ setFeedback('预设已删除,已有智能体保留原角色。');
78
+ }
79
+ }
80
+ else {
81
+ const saved = JSON.parse(value(await api.cliworker.saveRolePreset(sessionId, JSON.stringify(request), controller.signal)));
82
+ if (!controller.signal.aborted) {
83
+ setPresets((old) => old.some((item) => item.id === saved.id)
84
+ ? old.map((item) => (item.id === saved.id ? saved : item))
85
+ : [...old, saved]);
86
+ setFeedback('预设已保存,可在下次派遣时选择。');
87
+ }
88
+ }
89
+ if (!controller.signal.aborted) {
90
+ setDraft(undefined);
91
+ setConfirmDelete(false);
92
+ }
93
+ }
94
+ catch (e) {
95
+ if (!controller.signal.aborted)
96
+ setError(operationMessage(e));
97
+ }
98
+ finally {
99
+ if (!controller.signal.aborted) {
100
+ action.current = undefined;
101
+ setBusy(false);
102
+ }
103
+ }
104
+ }
105
+ const visible = presets.filter((item) => `${item.name} ${item.summary}`.toLowerCase().includes(query.trim().toLowerCase()));
106
+ return (_jsxs("section", { className: "cwn-settings-pane cwn-roles-pane", "aria-label": "\u667A\u80FD\u4F53\u9884\u8BBE\u7BA1\u7406", children: [_jsxs("div", { className: "cwn-roles-heading", children: [_jsxs("div", { children: [_jsx("h2", { children: draft ? (draft.id ? '编辑智能体' : '新增智能体') : '智能体预设' }), _jsx("p", { children: draft ? '定义它的职责、方法与工作边界' : '为不同任务准备合适的协作者' })] }), _jsx("span", { className: "cwn-section-progress", role: "status", "aria-label": loading || busy ? '正在同步智能体预设' : undefined, children: (loading || busy) && _jsx(StateDot, { state: "ongoing", size: 14 }) })] }), draft ? (_jsxs("form", { className: "cwn-role-editor", onSubmit: (event) => {
107
+ event.preventDefault();
108
+ void persist();
109
+ }, children: [_jsxs(Button, { type: "button", variant: "outline", size: "md", className: "cwn-role-back", onClick: closeEditor, disabled: busy, children: [_jsx(Glyph, { name: "back" }), "\u8FD4\u56DE\u9884\u8BBE"] }), _jsxs("label", { children: [_jsx("span", { children: "\u667A\u80FD\u4F53\u540D\u79F0" }), _jsx(Input, { className: "cwn-control-input", "aria-label": "\u667A\u80FD\u4F53\u540D\u79F0", autoFocus: true, value: draft.name, maxLength: 60, disabled: busy, onChange: (e) => setDraft({ ...draft, name: e.target.value }), placeholder: "\u4F8B\u5982\uFF1A\u903B\u8F91\u5BA1\u7A3F\u4EBA" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u6982\u8FF0" }), _jsx(Input, { className: "cwn-control-input", "aria-label": "\u667A\u80FD\u4F53\u6982\u8FF0", value: draft.summary, maxLength: 240, disabled: busy, onChange: (e) => setDraft({ ...draft, summary: e.target.value }), placeholder: "\u7528\u4E00\u53E5\u8BDD\u63CF\u8FF0\u64C5\u957F\u7684\u4EFB\u52A1" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u89D2\u8272\u63D0\u793A\u8BCD" }), _jsx("textarea", { "aria-label": "\u89D2\u8272\u63D0\u793A\u8BCD", value: draft.prompt, maxLength: 30000, disabled: busy, onChange: (e) => setDraft({ ...draft, prompt: e.target.value }), placeholder: "\u63CF\u8FF0\u667A\u80FD\u4F53\u7684\u89D2\u8272\u3001\u5DE5\u4F5C\u65B9\u5F0F\u4E0E\u8F93\u51FA\u8981\u6C42\u2026", rows: 14 })] }), _jsxs("div", { className: "cwn-role-editor-actions", children: [draft.id && (_jsx(Button, { type: "button", variant: "primary", size: "md", className: "cwn-role-delete", disabled: busy, onClick: () => setConfirmDelete(true), children: "\u5220\u9664\u9884\u8BBE" })), _jsx(Button, { type: "button", variant: "outline", size: "md", disabled: busy, onClick: closeEditor, children: "\u53D6\u6D88" }), _jsx(Button, { type: "submit", variant: "primary", size: "md", disabled: busy, children: "\u4FDD\u5B58\u9884\u8BBE" })] }), confirmDelete && (_jsxs("div", { className: "cwn-role-delete-confirm", role: "alert", children: [_jsxs("p", { children: ["\u5220\u9664\u300C", draft.name, "\u300D\uFF1F\u5DF2\u6709\u667A\u80FD\u4F53\u4ECD\u4FDD\u7559\u539F\u89D2\u8272\u3002"] }), _jsx(Button, { type: "button", variant: "outline", size: "md", disabled: busy, onClick: () => setConfirmDelete(false), children: "\u4FDD\u7559\u9884\u8BBE" }), _jsx(Button, { type: "button", variant: "primary", size: "md", className: "cwn-role-delete", disabled: busy, onClick: () => void persist(true), children: "\u786E\u8BA4\u5220\u9664" })] }))] })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "cwn-roles-toolbar", children: [_jsx(Input, { className: "cwn-control-input", icon: _jsx(Glyph, { name: "search" }), "aria-label": "\u641C\u7D22\u667A\u80FD\u4F53\u9884\u8BBE", type: "search", value: query, onChange: (e) => setQuery(e.target.value), placeholder: "\u641C\u7D22\u667A\u80FD\u4F53" }), _jsx(Button, { type: "button", variant: "primary", size: "md", disabled: loading, onClick: () => openEditor(emptyDraft()), children: "\u65B0\u589E\u9884\u8BBE" })] }), _jsx("div", { className: "cwn-role-grid", "aria-busy": loading, children: visible.map((item) => (_jsx("article", { className: "cwn-role-card", children: _jsxs("button", { type: "button", "aria-label": `编辑预设 ${item.name}`, onClick: () => openEditor(item), children: [_jsxs("span", { className: "cwn-role-card-heading", children: [_jsx("strong", { children: item.name }), _jsx(Glyph, { name: "chevron" })] }), _jsx("span", { className: "cwn-role-card-summary", children: item.summary })] }) }, item.id))) }), !loading && !error && !visible.length && (_jsx("p", { className: "cwn-role-empty", children: presets.length ? '没有匹配的预设。' : '还没有预设,添加一个智能体角色吧。' })), !loading && error && (_jsx(Button, { type: "button", variant: "ghost", size: "md", onClick: () => setRevision((n) => n + 1), children: "\u91CD\u65B0\u52A0\u8F7D\u9884\u8BBE" }))] })), _jsx("div", { className: "cwn-role-feedback", role: error ? 'alert' : 'status', children: error || feedback })] }));
110
+ }
111
+ //# sourceMappingURL=role-presets.js.map