@lemoncat7/dsh-partner 1.4.2 → 1.5.1
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.md +38 -0
- package/docs/architecture.md +99 -0
- package/lib/agent-runtime.d.ts +31 -8
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +230 -48
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/workspace-api.d.ts +18 -0
- package/lib/api/features/workspace-api.d.ts.map +1 -0
- package/lib/api/features/workspace-api.js +188 -0
- package/lib/api/features/workspace-api.js.map +1 -0
- package/lib/api/http.d.ts +12 -0
- package/lib/api/http.d.ts.map +1 -0
- package/lib/api/http.js +53 -0
- package/lib/api/http.js.map +1 -0
- package/lib/api.d.ts +10 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +48 -63
- package/lib/api.js.map +1 -1
- package/lib/channels/manager.d.ts +4 -1
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +20 -3
- package/lib/channels/manager.js.map +1 -1
- package/lib/client-api.d.ts +157 -1
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client-controller.d.ts +15 -0
- package/lib/client-controller.d.ts.map +1 -0
- package/lib/client-controller.js +69 -0
- package/lib/client-controller.js.map +1 -0
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +2827 -885
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts +27 -0
- package/lib/collaboration/composition.d.ts.map +1 -0
- package/lib/collaboration/composition.js +345 -0
- package/lib/collaboration/composition.js.map +1 -0
- package/lib/collaboration/domain.d.ts +38 -0
- package/lib/collaboration/domain.d.ts.map +1 -0
- package/lib/collaboration/domain.js +3 -0
- package/lib/collaboration/domain.js.map +1 -0
- package/lib/collaboration/retry-policy.d.ts +4 -0
- package/lib/collaboration/retry-policy.d.ts.map +1 -0
- package/lib/collaboration/retry-policy.js +18 -0
- package/lib/collaboration/retry-policy.js.map +1 -0
- package/lib/collaboration/service.d.ts +76 -0
- package/lib/collaboration/service.d.ts.map +1 -0
- package/lib/collaboration/service.js +370 -0
- package/lib/collaboration/service.js.map +1 -0
- package/lib/companions/service.d.ts +13 -0
- package/lib/companions/service.d.ts.map +1 -0
- package/lib/companions/service.js +51 -0
- package/lib/companions/service.js.map +1 -0
- package/lib/concern-domain.d.ts +8 -1
- package/lib/concern-domain.d.ts.map +1 -1
- package/lib/concern-domain.js +25 -1
- package/lib/concern-domain.js.map +1 -1
- package/lib/concern-store.d.ts.map +1 -1
- package/lib/concern-store.js +2 -1
- package/lib/concern-store.js.map +1 -1
- package/lib/concern-tool.d.ts +6 -0
- package/lib/concern-tool.d.ts.map +1 -1
- package/lib/concern-tool.js +35 -9
- package/lib/concern-tool.js.map +1 -1
- package/lib/core/collections.d.ts +2 -0
- package/lib/core/collections.d.ts.map +1 -0
- package/lib/core/collections.js +6 -0
- package/lib/core/collections.js.map +1 -0
- package/lib/core/semaphore.d.ts +10 -0
- package/lib/core/semaphore.d.ts.map +1 -0
- package/lib/core/semaphore.js +32 -0
- package/lib/core/semaphore.js.map +1 -0
- package/lib/core/validation.d.ts +7 -0
- package/lib/core/validation.d.ts.map +1 -0
- package/lib/core/validation.js +40 -0
- package/lib/core/validation.js.map +1 -0
- package/lib/domain.d.ts +28 -2
- package/lib/domain.d.ts.map +1 -1
- package/lib/domain.js +3 -3
- package/lib/domain.js.map +1 -1
- package/lib/execution/agent-support.d.ts +12 -0
- package/lib/execution/agent-support.d.ts.map +1 -0
- package/lib/execution/agent-support.js +48 -0
- package/lib/execution/agent-support.js.map +1 -0
- package/lib/execution/domain.d.ts +17 -0
- package/lib/execution/domain.d.ts.map +1 -0
- package/lib/execution/domain.js +2 -0
- package/lib/execution/domain.js.map +1 -0
- package/lib/execution/service.d.ts +52 -0
- package/lib/execution/service.d.ts.map +1 -0
- package/lib/execution/service.js +175 -0
- package/lib/execution/service.js.map +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +42 -3
- package/lib/index.js.map +1 -1
- package/lib/memory-reflection.js +2 -2
- package/lib/memory-reflection.js.map +1 -1
- package/lib/scheduler/domain.d.ts +25 -0
- package/lib/scheduler/domain.d.ts.map +1 -0
- package/lib/scheduler/domain.js +2 -0
- package/lib/scheduler/domain.js.map +1 -0
- package/lib/scheduler/service.d.ts +26 -0
- package/lib/scheduler/service.d.ts.map +1 -0
- package/lib/scheduler/service.js +177 -0
- package/lib/scheduler/service.js.map +1 -0
- package/lib/skills/builtin.d.ts +7 -0
- package/lib/skills/builtin.d.ts.map +1 -0
- package/lib/skills/builtin.js +16 -0
- package/lib/skills/builtin.js.map +1 -0
- package/lib/skills/domain.d.ts +52 -0
- package/lib/skills/domain.d.ts.map +1 -0
- package/lib/skills/domain.js +2 -0
- package/lib/skills/domain.js.map +1 -0
- package/lib/skills/loader.d.ts +18 -0
- package/lib/skills/loader.d.ts.map +1 -0
- package/lib/skills/loader.js +134 -0
- package/lib/skills/loader.js.map +1 -0
- package/lib/skills/markets/adapters.d.ts +8 -0
- package/lib/skills/markets/adapters.d.ts.map +1 -0
- package/lib/skills/markets/adapters.js +72 -0
- package/lib/skills/markets/adapters.js.map +1 -0
- package/lib/skills/markets/builtin.d.ts +10 -0
- package/lib/skills/markets/builtin.d.ts.map +1 -0
- package/lib/skills/markets/builtin.js +19 -0
- package/lib/skills/markets/builtin.js.map +1 -0
- package/lib/skills/network.d.ts +14 -0
- package/lib/skills/network.d.ts.map +1 -0
- package/lib/skills/network.js +174 -0
- package/lib/skills/network.js.map +1 -0
- package/lib/skills/repository.d.ts +17 -0
- package/lib/skills/repository.d.ts.map +1 -0
- package/lib/skills/repository.js +76 -0
- package/lib/skills/repository.js.map +1 -0
- package/lib/skills/service.d.ts +48 -0
- package/lib/skills/service.d.ts.map +1 -0
- package/lib/skills/service.js +248 -0
- package/lib/skills/service.js.map +1 -0
- package/lib/skills/zip.d.ts +3 -0
- package/lib/skills/zip.d.ts.map +1 -0
- package/lib/skills/zip.js +59 -0
- package/lib/skills/zip.js.map +1 -0
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +69 -3
- package/lib/store.js.map +1 -1
- package/lib/tasks/domain.d.ts +39 -0
- package/lib/tasks/domain.d.ts.map +1 -0
- package/lib/tasks/domain.js +3 -0
- package/lib/tasks/domain.js.map +1 -0
- package/lib/tasks/result.d.ts +14 -0
- package/lib/tasks/result.d.ts.map +1 -0
- package/lib/tasks/result.js +109 -0
- package/lib/tasks/result.js.map +1 -0
- package/lib/tasks/service.d.ts +39 -0
- package/lib/tasks/service.d.ts.map +1 -0
- package/lib/tasks/service.js +334 -0
- package/lib/tasks/service.js.map +1 -0
- package/lib/ui/companion-access-panel.d.ts +4 -0
- package/lib/ui/companion-access-panel.d.ts.map +1 -0
- package/lib/ui/companion-access-panel.js +46 -0
- package/lib/ui/companion-access-panel.js.map +1 -0
- package/lib/ui/companion-create.d.ts +11 -0
- package/lib/ui/companion-create.d.ts.map +1 -0
- package/lib/ui/companion-create.js +30 -0
- package/lib/ui/companion-create.js.map +1 -0
- package/lib/ui/partner-components.d.ts +36 -0
- package/lib/ui/partner-components.d.ts.map +1 -0
- package/lib/ui/partner-components.js +32 -0
- package/lib/ui/partner-components.js.map +1 -0
- package/lib/ui/schedule-panel.d.ts +5 -0
- package/lib/ui/schedule-panel.d.ts.map +1 -0
- package/lib/ui/schedule-panel.js +86 -0
- package/lib/ui/schedule-panel.js.map +1 -0
- package/lib/ui/skills-panel.d.ts +5 -0
- package/lib/ui/skills-panel.d.ts.map +1 -0
- package/lib/ui/skills-panel.js +236 -0
- package/lib/ui/skills-panel.js.map +1 -0
- package/lib/ui/task-board-panel.d.ts +2 -0
- package/lib/ui/task-board-panel.d.ts.map +1 -0
- package/lib/ui/task-board-panel.js +282 -0
- package/lib/ui/task-board-panel.js.map +1 -0
- package/lib/ui/workspace-components.d.ts +40 -0
- package/lib/ui/workspace-components.d.ts.map +1 -0
- package/lib/ui/workspace-components.js +61 -0
- package/lib/ui/workspace-components.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useDeferredValue, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import { IconCheckOutline16, IconChevronRightOutline14, IconCloseOutline16, IconPlusOutline16, IconSearchOutline16, IconTrashOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
|
+
import { api } from '../client-api.js';
|
|
5
|
+
import { CollectionSkeleton, WorkspaceDialog, WorkspaceHero, WorkspaceNotice, errorMessage } from './workspace-components.js';
|
|
6
|
+
const COLUMNS = [
|
|
7
|
+
{ id: 'backlog', label: '收集箱' }, { id: 'ready', label: '待开始' }, { id: 'doing', label: '进行中' },
|
|
8
|
+
{ id: 'review', label: '待验收' }, { id: 'blocked', label: '受阻' }, { id: 'done', label: '已完成' },
|
|
9
|
+
];
|
|
10
|
+
const LIVE_REFRESH_MS = 4_000;
|
|
11
|
+
export function TaskBoardPanel() {
|
|
12
|
+
const [board, setBoard] = useState({ tasks: [], activities: [] });
|
|
13
|
+
const [directory, setDirectory] = useState([]);
|
|
14
|
+
const [delegations, setDelegations] = useState([]);
|
|
15
|
+
const [creating, setCreating] = useState(false);
|
|
16
|
+
const [selectedTaskId, setSelectedTaskId] = useState();
|
|
17
|
+
const [busy, setBusy] = useState();
|
|
18
|
+
const [loading, setLoading] = useState(true);
|
|
19
|
+
const [error, setError] = useState();
|
|
20
|
+
const [syncedAt, setSyncedAt] = useState();
|
|
21
|
+
const [query, setQuery] = useState('');
|
|
22
|
+
const [statusFilter, setStatusFilter] = useState('all');
|
|
23
|
+
const [assigneeFilter, setAssigneeFilter] = useState('all');
|
|
24
|
+
const deferredQuery = useDeferredValue(query.trim().toLocaleLowerCase());
|
|
25
|
+
const tasksById = useMemo(() => new Map(board.tasks.map(item => [item.id, item])), [board.tasks]);
|
|
26
|
+
const directoryById = useMemo(() => new Map(directory.map(item => [item.id, item])), [directory]);
|
|
27
|
+
const activeDelegationByTaskId = useMemo(() => {
|
|
28
|
+
const result = new Map();
|
|
29
|
+
for (const delegation of delegations) {
|
|
30
|
+
if ((delegation.status === 'queued' || delegation.status === 'running') && !result.has(delegation.taskId))
|
|
31
|
+
result.set(delegation.taskId, delegation);
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}, [delegations]);
|
|
35
|
+
const selectedTask = selectedTaskId ? tasksById.get(selectedTaskId) : undefined;
|
|
36
|
+
const dependentsById = useMemo(() => {
|
|
37
|
+
const result = new Map();
|
|
38
|
+
for (const task of board.tasks)
|
|
39
|
+
for (const dependencyId of task.dependencyTaskIds)
|
|
40
|
+
result.set(dependencyId, (result.get(dependencyId) ?? 0) + 1);
|
|
41
|
+
return result;
|
|
42
|
+
}, [board.tasks]);
|
|
43
|
+
const scopedTasks = useMemo(() => board.tasks.filter(task => {
|
|
44
|
+
if (assigneeFilter !== 'all' && (task.assigneeCompanionId ?? 'unassigned') !== assigneeFilter)
|
|
45
|
+
return false;
|
|
46
|
+
if (!deferredQuery)
|
|
47
|
+
return true;
|
|
48
|
+
const dependencies = task.dependencyTaskIds.map(id => tasksById.get(id)?.title ?? '');
|
|
49
|
+
return [task.title, task.description, task.resultAbstract, task.resultSummary, directoryById.get(task.assigneeCompanionId ?? '')?.name, ...dependencies]
|
|
50
|
+
.some(value => value?.toLocaleLowerCase().includes(deferredQuery));
|
|
51
|
+
}), [assigneeFilter, board.tasks, deferredQuery, directoryById, tasksById]);
|
|
52
|
+
const statusCounts = useMemo(() => {
|
|
53
|
+
const result = new Map(COLUMNS.map(column => [column.id, 0]));
|
|
54
|
+
for (const task of scopedTasks)
|
|
55
|
+
result.set(task.status, (result.get(task.status) ?? 0) + 1);
|
|
56
|
+
return result;
|
|
57
|
+
}, [scopedTasks]);
|
|
58
|
+
const visibleColumns = statusFilter === 'all' ? COLUMNS : COLUMNS.filter(column => column.id === statusFilter);
|
|
59
|
+
const tasksByStatus = useMemo(() => {
|
|
60
|
+
const priorityRank = { urgent: 3, high: 2, normal: 1, low: 0 };
|
|
61
|
+
const result = new Map(COLUMNS.map(column => [column.id, []]));
|
|
62
|
+
for (const task of scopedTasks) {
|
|
63
|
+
if (statusFilter !== 'all' && task.status !== statusFilter)
|
|
64
|
+
continue;
|
|
65
|
+
result.get(task.status)?.push(task);
|
|
66
|
+
}
|
|
67
|
+
for (const tasks of result.values())
|
|
68
|
+
tasks.sort((left, right) => priorityRank[right.priority] - priorityRank[left.priority] || right.updatedAt - left.updatedAt);
|
|
69
|
+
return result;
|
|
70
|
+
}, [scopedTasks, statusFilter]);
|
|
71
|
+
const visibleTaskCount = statusFilter === 'all' ? scopedTasks.length : (statusCounts.get(statusFilter) ?? 0);
|
|
72
|
+
const loadingRef = useRef(false);
|
|
73
|
+
const load = useCallback(async () => {
|
|
74
|
+
if (loadingRef.current)
|
|
75
|
+
return;
|
|
76
|
+
loadingRef.current = true;
|
|
77
|
+
try {
|
|
78
|
+
const [next, collaboration] = await Promise.all([api('/tasks'), api('/collaboration')]);
|
|
79
|
+
setBoard(next);
|
|
80
|
+
setDirectory(collaboration.companions);
|
|
81
|
+
setDelegations(collaboration.delegations);
|
|
82
|
+
setSyncedAt(Date.now());
|
|
83
|
+
setError(undefined);
|
|
84
|
+
}
|
|
85
|
+
catch (reason) {
|
|
86
|
+
setError(errorMessage(reason));
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
loadingRef.current = false;
|
|
90
|
+
setLoading(false);
|
|
91
|
+
}
|
|
92
|
+
}, []);
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
void load();
|
|
95
|
+
const timer = window.setInterval(() => { if (document.visibilityState === 'visible')
|
|
96
|
+
void load(); }, LIVE_REFRESH_MS);
|
|
97
|
+
const visible = () => { if (document.visibilityState === 'visible')
|
|
98
|
+
void load(); };
|
|
99
|
+
document.addEventListener('visibilitychange', visible);
|
|
100
|
+
return () => { window.clearInterval(timer); document.removeEventListener('visibilitychange', visible); };
|
|
101
|
+
}, [load]);
|
|
102
|
+
const update = async (task, change) => {
|
|
103
|
+
setBusy(task.id);
|
|
104
|
+
setError(undefined);
|
|
105
|
+
try {
|
|
106
|
+
await api(`/tasks/${task.id}`, { method: 'PUT', body: JSON.stringify({ expectedRevision: task.revision, ...change }) });
|
|
107
|
+
await load();
|
|
108
|
+
}
|
|
109
|
+
catch (reason) {
|
|
110
|
+
setError(errorMessage(reason));
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
setBusy(undefined);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const delegate = async (task) => {
|
|
117
|
+
if (!task.assigneeCompanionId)
|
|
118
|
+
return;
|
|
119
|
+
setBusy(task.id);
|
|
120
|
+
setError(undefined);
|
|
121
|
+
try {
|
|
122
|
+
await api(`/tasks/${task.id}/delegate`, { method: 'POST', body: JSON.stringify({ to: task.assigneeCompanionId, request: task.description || `完成任务:${task.title}` }) });
|
|
123
|
+
await load();
|
|
124
|
+
}
|
|
125
|
+
catch (reason) {
|
|
126
|
+
setError(errorMessage(reason));
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
setBusy(undefined);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
const review = async (task) => {
|
|
133
|
+
if (!task.reviewerCompanionId)
|
|
134
|
+
return;
|
|
135
|
+
setBusy(task.id);
|
|
136
|
+
setError(undefined);
|
|
137
|
+
try {
|
|
138
|
+
await api(`/tasks/${task.id}/review`, { method: 'POST', body: JSON.stringify({ to: task.reviewerCompanionId }) });
|
|
139
|
+
await load();
|
|
140
|
+
}
|
|
141
|
+
catch (reason) {
|
|
142
|
+
setError(errorMessage(reason));
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
setBusy(undefined);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const accept = async (task) => {
|
|
149
|
+
setBusy(task.id);
|
|
150
|
+
setError(undefined);
|
|
151
|
+
try {
|
|
152
|
+
await api(`/tasks/${task.id}/accept`, { method: 'POST' });
|
|
153
|
+
await load();
|
|
154
|
+
}
|
|
155
|
+
catch (reason) {
|
|
156
|
+
setError(errorMessage(reason));
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
setBusy(undefined);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const reject = async (task, reason) => {
|
|
163
|
+
if (!reason)
|
|
164
|
+
return;
|
|
165
|
+
setBusy(task.id);
|
|
166
|
+
setError(undefined);
|
|
167
|
+
try {
|
|
168
|
+
await api(`/tasks/${task.id}/reject`, { method: 'POST', body: JSON.stringify({ reason }) });
|
|
169
|
+
await load();
|
|
170
|
+
}
|
|
171
|
+
catch (cause) {
|
|
172
|
+
setError(errorMessage(cause));
|
|
173
|
+
}
|
|
174
|
+
finally {
|
|
175
|
+
setBusy(undefined);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
const remove = async (task) => {
|
|
179
|
+
setBusy(task.id);
|
|
180
|
+
setError(undefined);
|
|
181
|
+
try {
|
|
182
|
+
await api(`/tasks/${task.id}`, { method: 'DELETE' });
|
|
183
|
+
if (selectedTaskId === task.id)
|
|
184
|
+
setSelectedTaskId(undefined);
|
|
185
|
+
await load();
|
|
186
|
+
}
|
|
187
|
+
catch (reason) {
|
|
188
|
+
setError(errorMessage(reason));
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
setBusy(undefined);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
return _jsxs("div", { className: "dsh-partner-feature-page is-board", children: [_jsx(WorkspaceHero, { eyebrow: "Shared workspace", title: "\u4F19\u4F34\u4EFB\u52A1\u770B\u677F", detail: "\u627F\u63A5\u591A\u6B65\u3001\u4F9D\u8D56\u548C\u8DE8\u4F19\u4F34\u5DE5\u4F5C\u3002\u524D\u7F6E\u4EFB\u52A1\u5B8C\u6210\u540E\u624D\u80FD\u6267\u884C\uFF0C\u7ED3\u679C\u9A8C\u6536\u901A\u8FC7\u540E\u624D\u4F1A\u89E3\u9501\u540E\u7EED\u4EFB\u52A1\u3002", actions: _jsxs(_Fragment, { children: [_jsxs("span", { className: "dsh-partner-board-live", title: syncedAt ? `最近同步 ${new Date(syncedAt).toLocaleTimeString()}` : '正在连接', children: [_jsx("i", {}), "\u5B9E\u65F6\u540C\u6B65"] }), _jsxs("button", { type: "button", onClick: () => setCreating(true), children: [_jsx(IconPlusOutline16, { size: 15 }), "\u65B0\u4EFB\u52A1"] })] }) }), error && _jsx(WorkspaceNotice, { children: error }), creating && _jsx(WorkspaceDialog, { title: "\u65B0\u5EFA\u4EFB\u52A1", detail: "\u5199\u6E05\u76EE\u6807\u3001\u8D1F\u8D23\u4EBA\u548C\u9A8C\u6536\u8FB9\u754C\uFF1B\u53EA\u6709\u771F\u6B63\u5B58\u5728\u524D\u7F6E\u5173\u7CFB\u65F6\u624D\u6DFB\u52A0\u4F9D\u8D56\u3002", close: () => setCreating(false), width: "wide", children: _jsx(TaskForm, { companions: directory, tasks: board.tasks, close: () => setCreating(false), changed: load }) }), selectedTask && _jsx(WorkspaceDialog, { eyebrow: "TASK DETAIL", title: selectedTask.title, detail: taskDialogSummary(selectedTask, directory), close: () => setSelectedTaskId(undefined), width: "wide", children: _jsx(TaskDetail, { task: selectedTask, tasks: board.tasks, activities: board.activities.filter(item => item.taskId === selectedTask.id), directory: directory, execution: activeDelegationByTaskId.get(selectedTask.id), busy: busy === selectedTask.id, update: change => { void update(selectedTask, change); }, delegate: () => { void delegate(selectedTask); }, review: () => { void review(selectedTask); }, accept: () => { void accept(selectedTask); }, reject: reason => { void reject(selectedTask, reason); }, remove: () => { void remove(selectedTask); } }, selectedTask.id) }), loading ? _jsx(CollectionSkeleton, { rows: 6 }) : _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-partner-board-tools", children: [_jsxs("label", { className: "dsh-partner-board-search", children: [_jsx("span", { className: "sr-only", children: "\u641C\u7D22\u4EFB\u52A1" }), _jsx("span", { "aria-hidden": "true", children: _jsx(IconSearchOutline16, { size: 16 }) }), _jsx("input", { value: query, onChange: event => setQuery(event.target.value), placeholder: "\u641C\u7D22\u4EFB\u52A1\u3001\u8D1F\u8D23\u4EBA\u6216\u524D\u7F6E\u4EFB\u52A1" }), query && _jsx("button", { type: "button", onClick: () => setQuery(''), "aria-label": "\u6E05\u9664\u4EFB\u52A1\u641C\u7D22", children: _jsx(IconCloseOutline16, { size: 14 }) })] }), _jsxs("label", { className: "dsh-partner-board-assignee", children: [_jsx("span", { className: "sr-only", children: "\u6309\u8D1F\u8D23\u4EBA\u7B5B\u9009" }), _jsxs("select", { value: assigneeFilter, onChange: event => setAssigneeFilter(event.target.value), children: [_jsx("option", { value: "all", children: "\u5168\u90E8\u4F19\u4F34" }), _jsx("option", { value: "unassigned", children: "\u672A\u6307\u6D3E" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("small", { "aria-live": "polite", children: ["\u663E\u793A ", visibleTaskCount, " / ", board.tasks.length] })] }), _jsxs("nav", { className: "dsh-partner-board-statuses", "aria-label": "\u6309\u4EFB\u52A1\u72B6\u6001\u7B5B\u9009", children: [_jsxs("button", { type: "button", className: statusFilter === 'all' ? 'is-active' : '', "aria-pressed": statusFilter === 'all', onClick: () => setStatusFilter('all'), children: [_jsx("span", { children: "\u5168\u90E8" }), _jsx("b", { children: scopedTasks.length })] }), COLUMNS.map(column => _jsxs("button", { type: "button", className: statusFilter === column.id ? 'is-active' : '', "aria-pressed": statusFilter === column.id, onClick: () => setStatusFilter(column.id), children: [_jsx("span", { children: column.label }), _jsx("b", { children: statusCounts.get(column.id) ?? 0 })] }, column.id))] }), _jsx("div", { className: "dsh-partner-board", "data-focused": statusFilter !== 'all', "aria-label": "\u4EFB\u52A1\u770B\u677F", children: visibleColumns.map(column => {
|
|
195
|
+
const tasks = tasksByStatus.get(column.id) ?? [];
|
|
196
|
+
const columnTitleId = `dsh-partner-board-${column.id}`;
|
|
197
|
+
return _jsxs("section", { "data-status": column.id, "data-empty": tasks.length === 0, "aria-labelledby": columnTitleId, children: [_jsxs("header", { children: [_jsx("strong", { id: columnTitleId, children: column.label }), _jsx("b", { children: tasks.length })] }), tasks.length > 0 ? _jsx("div", { className: "dsh-partner-board-column-list", children: tasks.map(task => _jsx(TaskCard, { task: task, tasksById: tasksById, directoryById: directoryById, dependentCount: dependentsById.get(task.id) ?? 0, execution: activeDelegationByTaskId.get(task.id), open: () => setSelectedTaskId(task.id) }, task.id)) }) : _jsx("p", { children: query || assigneeFilter !== 'all' ? '没有匹配任务' : '暂无任务' })] }, column.id);
|
|
198
|
+
}) })] })] });
|
|
199
|
+
}
|
|
200
|
+
function TaskCard({ task, tasksById, directoryById, dependentCount, execution, open }) {
|
|
201
|
+
const dependencies = task.dependencyTaskIds.map(id => tasksById.get(id)).filter((item) => item !== undefined);
|
|
202
|
+
const blockers = dependencies.filter(item => item.status !== 'done');
|
|
203
|
+
const completedDependencies = dependencies.length - blockers.length;
|
|
204
|
+
const assignee = directoryById.get(task.assigneeCompanionId ?? '');
|
|
205
|
+
const executionState = execution ? delegationState(execution) : undefined;
|
|
206
|
+
return _jsx("article", { className: "dsh-partner-task-card", "data-blocked": blockers.length > 0, "data-priority": task.priority, children: _jsxs("button", { type: "button", className: "dsh-partner-task-summary", "aria-haspopup": "dialog", onClick: open, children: [_jsxs("span", { children: [_jsxs("span", { className: "dsh-partner-task-card-title", children: [_jsx("strong", { title: task.title, children: task.title }), _jsx("em", { children: priorityLabel(task.priority) })] }), _jsxs("small", { className: "dsh-partner-task-card-owner", children: [assignee ? `@${assignee.name}` : '未指派', task.resultSummary ? ' · 已有结果' : '', executionState ? ` · ${executionState.label}` : ''] }), (dependencies.length > 0 || dependentCount > 0) && _jsxs("span", { className: "dsh-partner-task-relations", children: [dependencies.length > 0 && _jsxs("small", { "data-blocked": blockers.length > 0, children: ["\u524D\u7F6E ", completedDependencies, "/", dependencies.length] }), dependentCount > 0 && _jsxs("small", { children: ["\u5B8C\u6210\u540E\u89E3\u9501 ", dependentCount] })] })] }), _jsx(IconChevronRightOutline14, { size: 14 })] }) });
|
|
207
|
+
}
|
|
208
|
+
function TaskDetail({ task, tasks, activities, directory, execution, busy, update, delegate, review, accept, reject, remove }) {
|
|
209
|
+
const [rejecting, setRejecting] = useState(false);
|
|
210
|
+
const [rejectReason, setRejectReason] = useState('');
|
|
211
|
+
const [confirmingDelete, setConfirmingDelete] = useState(false);
|
|
212
|
+
const byId = useMemo(() => new Map(tasks.map(item => [item.id, item])), [tasks]);
|
|
213
|
+
const dependencies = task.dependencyTaskIds.map(id => byId.get(id)).filter((item) => item !== undefined);
|
|
214
|
+
const blockers = dependencies.filter(item => item.status !== 'done');
|
|
215
|
+
const assignee = directory.find(item => item.id === task.assigneeCompanionId);
|
|
216
|
+
const reviewer = directory.find(item => item.id === task.reviewerCompanionId);
|
|
217
|
+
const dependencyCandidates = tasks.filter(item => item.id !== task.id && !task.dependencyTaskIds.includes(item.id) && !dependsOn(item.id, task.id, byId));
|
|
218
|
+
const canExecute = Boolean(task.assigneeCompanionId) && blockers.length === 0 && !['doing', 'review', 'done'].includes(task.status);
|
|
219
|
+
const recentActivities = [...activities].sort((left, right) => right.at - left.at).slice(0, 6);
|
|
220
|
+
const executionState = execution ? delegationState(execution) : undefined;
|
|
221
|
+
return _jsxs("div", { className: "dsh-partner-task-detail", children: [_jsxs("section", { className: "dsh-partner-task-description", children: [_jsx("strong", { children: "\u4EFB\u52A1\u8BF4\u660E" }), _jsx("p", { children: task.description || '没有补充说明' })] }), _jsxs("div", { className: "dsh-partner-task-fields", children: [_jsxs("label", { children: [_jsx("span", { children: "\u72B6\u6001" }), _jsx("select", { value: task.status, disabled: busy, onChange: event => update({ status: event.target.value }), children: COLUMNS.map(item => _jsx("option", { value: item.id, disabled: (item.id === 'doing' || item.id === 'review' || item.id === 'done') && blockers.length > 0 || item.id === 'done' && task.status !== 'review' && task.status !== 'done', children: item.label }, item.id)) })] }), _jsxs("label", { children: [_jsx("span", { children: "\u8D1F\u8D23\u4EBA" }), _jsxs("select", { value: task.assigneeCompanionId ?? '', disabled: busy || task.status === 'doing', onChange: event => update({ assigneeCompanionId: event.target.value }), children: [_jsx("option", { value: "", children: "\u672A\u6307\u6D3E" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name, " \u00B7 ", item.availability === 'busy' ? '忙碌' : '可用'] }, item.id))] })] }), _jsxs("label", { children: [_jsx("span", { children: "\u9A8C\u6536\u4F19\u4F34" }), _jsxs("select", { value: task.reviewerCompanionId ?? '', disabled: busy, onChange: event => update({ reviewerCompanionId: event.target.value }), children: [_jsx("option", { value: "", children: "\u7559\u7A7A \u00B7 \u4EBA\u5DE5\u9A8C\u6536" }), directory.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] })] }), executionState && _jsxs("section", { className: "dsh-partner-task-execution", "data-state": execution?.status, children: [_jsx("i", {}), _jsxs("span", { children: [_jsx("strong", { children: executionState.title }), _jsx("small", { children: executionState.detail })] })] }), _jsxs("section", { className: "dsh-partner-task-dependency", children: [_jsxs("header", { children: [_jsx("strong", { children: "\u524D\u7F6E\u4EFB\u52A1" }), _jsx("small", { children: blockers.length ? `${blockers.length} 项未完成,当前任务不能启动` : dependencies.length ? '已全部完成,可以启动' : '没有前置依赖' })] }), dependencies.length > 0 && _jsx("div", { children: dependencies.map(item => _jsxs("span", { "data-done": item.status === 'done', children: [_jsx("i", { children: item.status === 'done' ? _jsx(IconCheckOutline16, { size: 12 }) : '' }), _jsx("b", { children: item.title }), _jsx("button", { type: "button", disabled: busy || ['doing', 'review', 'done'].includes(task.status), "aria-label": `移除前置任务 ${item.title}`, onClick: () => update({ dependencyTaskIds: task.dependencyTaskIds.filter(id => id !== item.id) }), children: "\u79FB\u9664" })] }, item.id)) }), dependencyCandidates.length > 0 && _jsxs("label", { children: [_jsx("span", { className: "sr-only", children: "\u589E\u52A0\u524D\u7F6E\u4EFB\u52A1" }), _jsxs("select", { defaultValue: "", disabled: busy || ['doing', 'review', 'done'].includes(task.status), onChange: event => { const id = event.currentTarget.value; if (id)
|
|
222
|
+
update({ dependencyTaskIds: [...task.dependencyTaskIds, id] }); event.currentTarget.value = ''; }, children: [_jsx("option", { value: "", children: "\u589E\u52A0\u524D\u7F6E\u4EFB\u52A1\u2026" }), dependencyCandidates.map(item => _jsxs("option", { value: item.id, children: [item.title, " \u00B7 ", statusLabel(item.status)] }, item.id))] })] })] }), task.resultSummary && _jsx(ResultBlock, { label: "\u6267\u884C\u7ED3\u679C", value: task.resultSummary }), task.reviewSummary && _jsx(ResultBlock, { label: `核验意见${reviewer ? ` · @${reviewer.name}` : ''}`, value: task.reviewSummary }), recentActivities.length > 0 && _jsxs("section", { className: "dsh-partner-task-activity", children: [_jsx("strong", { children: "\u6700\u8FD1\u6D3B\u52A8" }), _jsx("ol", { children: recentActivities.map(item => _jsxs("li", { children: [_jsx("span", { children: item.message }), _jsx("time", { children: new Date(item.at).toLocaleString() })] }, item.id)) })] }), rejecting && _jsxs("form", { className: "dsh-partner-task-reject", onSubmit: event => { event.preventDefault(); const reason = rejectReason.trim(); if (!reason)
|
|
223
|
+
return; reject(reason); setRejecting(false); setRejectReason(''); }, children: [_jsxs("label", { children: [_jsx("span", { children: "\u6253\u56DE\u539F\u56E0" }), _jsx("textarea", { autoFocus: true, value: rejectReason, onChange: event => setRejectReason(event.target.value), rows: 3, maxLength: 1200, placeholder: "\u8BF4\u660E\u9700\u8981\u91CD\u505A\u6216\u8865\u5145\u7684\u5185\u5BB9" })] }), _jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => { setRejecting(false); setRejectReason(''); }, children: "\u53D6\u6D88" }), _jsx("button", { type: "submit", className: "is-primary", disabled: busy || !rejectReason.trim(), children: "\u786E\u8BA4\u6253\u56DE" })] })] }), confirmingDelete && _jsxs("div", { className: "dsh-partner-task-delete-confirm", role: "alert", children: [_jsx("span", { children: "\u5220\u9664\u540E\uFF0C\u4F9D\u8D56\u5B83\u7684\u4EFB\u52A1\u4F1A\u89E3\u9664\u8FD9\u6761\u524D\u7F6E\u5173\u7CFB\u3002" }), _jsxs("div", { children: [_jsx("button", { type: "button", onClick: () => setConfirmingDelete(false), children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "is-danger", disabled: busy, onClick: remove, children: "\u786E\u8BA4\u5220\u9664" })] })] }), _jsxs("footer", { className: "dsh-partner-task-actions", children: [_jsxs("small", { children: ["r", task.revision, " \u00B7 ", new Date(task.updatedAt).toLocaleString()] }), _jsxs("span", { children: [task.status === 'review' ? _jsxs(_Fragment, { children: [task.reviewerCompanionId && _jsx("button", { type: "button", disabled: busy, onClick: review, children: busy ? '核验中…' : `交给 @${reviewer?.name ?? '伙伴'} 核验` }), _jsx("button", { type: "button", disabled: busy, onClick: () => setRejecting(true), children: "\u6253\u56DE\u91CD\u505A" }), _jsx("button", { type: "button", className: "is-primary", disabled: busy, onClick: accept, children: "\u9A8C\u6536\u901A\u8FC7" })] }) : _jsx("button", { type: "button", disabled: busy || !canExecute, title: blockers.length ? '前置任务尚未完成' : !task.assigneeCompanionId ? '请先选择负责人' : undefined, onClick: delegate, children: busy ? '执行中…' : task.status === 'doing' ? '正在执行' : task.status === 'done' ? '已经完成' : `交给 @${assignee?.name ?? '伙伴'}` }), _jsx("button", { type: "button", className: "is-icon", "aria-label": `删除 ${task.title}`, "aria-expanded": confirmingDelete, disabled: busy, onClick: () => setConfirmingDelete(true), children: _jsx(IconTrashOutline16, { size: 14 }) })] })] })] });
|
|
224
|
+
}
|
|
225
|
+
function ResultBlock({ label, value }) {
|
|
226
|
+
return _jsxs("section", { className: "dsh-partner-task-result", children: [_jsx("strong", { children: label }), _jsx("p", { children: value })] });
|
|
227
|
+
}
|
|
228
|
+
function TaskForm({ companions, tasks, close, changed }) {
|
|
229
|
+
const [error, setError] = useState();
|
|
230
|
+
const [busy, setBusy] = useState(false);
|
|
231
|
+
const dependencyOptions = tasks.filter(item => item.status !== 'done');
|
|
232
|
+
const submit = async (event) => {
|
|
233
|
+
event.preventDefault();
|
|
234
|
+
const data = new FormData(event.currentTarget);
|
|
235
|
+
setBusy(true);
|
|
236
|
+
setError(undefined);
|
|
237
|
+
try {
|
|
238
|
+
await api('/tasks', { method: 'POST', body: JSON.stringify({
|
|
239
|
+
title: data.get('title'), description: data.get('description'), priority: data.get('priority'), status: 'backlog',
|
|
240
|
+
assigneeCompanionId: data.get('assignee') || undefined, reviewerCompanionId: data.get('reviewer') || undefined,
|
|
241
|
+
dependencyTaskIds: data.getAll('dependencyTaskId'),
|
|
242
|
+
}) });
|
|
243
|
+
await changed();
|
|
244
|
+
close();
|
|
245
|
+
}
|
|
246
|
+
catch (reason) {
|
|
247
|
+
setError(errorMessage(reason));
|
|
248
|
+
}
|
|
249
|
+
finally {
|
|
250
|
+
setBusy(false);
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
return _jsxs("form", { className: "dsh-partner-task-form", "aria-busy": busy, onSubmit: event => { void submit(event); }, children: [_jsxs("label", { children: [_jsx("span", { children: "\u4EFB\u52A1\u540D\u79F0" }), _jsx("input", { name: "title", maxLength: 200, required: true, autoFocus: true, placeholder: "\u4E00\u53E5\u8BDD\u8BF4\u660E\u4EA4\u4ED8\u76EE\u6807" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u8D1F\u8D23\u4EBA" }), _jsxs("select", { name: "assignee", defaultValue: "", children: [_jsx("option", { value: "", children: "\u672A\u6307\u6D3E" }), companions.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("label", { className: "is-wide", children: [_jsx("span", { children: "\u4EFB\u52A1\u8BF4\u660E" }), _jsx("textarea", { name: "description", maxLength: 8000, rows: 5, placeholder: "\u8865\u5145\u80CC\u666F\u3001\u4EA4\u4ED8\u7269\u548C\u5B8C\u6210\u6761\u4EF6" })] }), _jsxs("label", { children: [_jsx("span", { children: "\u4F18\u5148\u7EA7" }), _jsxs("select", { name: "priority", defaultValue: "normal", children: [_jsx("option", { value: "low", children: "\u4F4E" }), _jsx("option", { value: "normal", children: "\u666E\u901A" }), _jsx("option", { value: "high", children: "\u9AD8" }), _jsx("option", { value: "urgent", children: "\u7D27\u6025" })] })] }), _jsxs("label", { children: [_jsx("span", { children: "\u9A8C\u6536\u4F19\u4F34" }), _jsxs("select", { name: "reviewer", defaultValue: "", children: [_jsx("option", { value: "", children: "\u7559\u7A7A \u00B7 \u4EBA\u5DE5\u9A8C\u6536" }), companions.map(item => _jsxs("option", { value: item.id, children: ["@", item.name] }, item.id))] })] }), _jsxs("div", { className: "dsh-partner-task-form-dependencies is-wide", children: [_jsxs("span", { children: ["\u4F9D\u8D56\u4EFB\u52A1 ", _jsx("small", { children: "\u53EF\u9009" })] }), dependencyOptions.length > 0 ? _jsx("div", { children: dependencyOptions.map(item => _jsxs("label", { children: [_jsx("input", { type: "checkbox", name: "dependencyTaskId", value: item.id }), _jsx("i", {}), _jsx("span", { children: item.title }), _jsx("small", { children: statusLabel(item.status) })] }, item.id)) }) : _jsx("p", { children: "\u5F53\u524D\u6CA1\u6709\u53EF\u9009\u7684\u672A\u5B8C\u6210\u4EFB\u52A1" }), _jsx("small", { children: "\u53EF\u4EE5\u9009\u62E9\u591A\u4E2A\uFF1B\u7559\u7A7A\u8868\u793A\u8BE5\u4EFB\u52A1\u4E0D\u4F9D\u8D56\u5176\u4ED6\u4EFB\u52A1\u3002" })] }), error && _jsx(WorkspaceNotice, { children: error }), _jsxs("footer", { children: [_jsx("button", { type: "button", disabled: busy, onClick: close, children: "\u53D6\u6D88" }), _jsxs("button", { type: "submit", className: "is-primary", disabled: busy, children: [_jsx(IconPlusOutline16, { size: 14 }), busy ? '创建中…' : '创建任务'] })] })] });
|
|
254
|
+
}
|
|
255
|
+
function dependsOn(candidateId, targetId, tasks, visited = new Set()) {
|
|
256
|
+
if (candidateId === targetId)
|
|
257
|
+
return true;
|
|
258
|
+
if (visited.has(candidateId))
|
|
259
|
+
return false;
|
|
260
|
+
visited.add(candidateId);
|
|
261
|
+
return (tasks.get(candidateId)?.dependencyTaskIds ?? []).some(id => dependsOn(id, targetId, tasks, visited));
|
|
262
|
+
}
|
|
263
|
+
function statusLabel(value) { return COLUMNS.find(item => item.id === value)?.label ?? value; }
|
|
264
|
+
function taskDialogSummary(task, directory) {
|
|
265
|
+
const assignee = directory.find(item => item.id === task.assigneeCompanionId);
|
|
266
|
+
return `${statusLabel(task.status)} · ${assignee ? `负责人 @${assignee.name}` : '尚未指派负责人'} · ${priorityLabel(task.priority)}`;
|
|
267
|
+
}
|
|
268
|
+
function priorityLabel(value) { return ({ low: '低优先级', normal: '普通优先级', high: '高优先级', urgent: '紧急' })[value]; }
|
|
269
|
+
function delegationState(value) {
|
|
270
|
+
const review = value.kind === 'review';
|
|
271
|
+
if (value.status === 'queued') {
|
|
272
|
+
const at = value.nextAttemptAt ? new Date(value.nextAttemptAt).toLocaleString() : '稍后';
|
|
273
|
+
return { label: '等待自动恢复', title: review ? '验收将在连接恢复后继续' : '任务将在连接恢复后继续', detail: `${at} 自动重试${value.error ? ` · ${value.error}` : ''}` };
|
|
274
|
+
}
|
|
275
|
+
const recovered = (value.attempts ?? 1) > 1;
|
|
276
|
+
return {
|
|
277
|
+
label: recovered ? `第 ${value.attempts} 次恢复中` : review ? '伙伴验收中' : '伙伴执行中',
|
|
278
|
+
title: recovered ? (review ? '正在恢复伙伴验收' : '正在恢复伙伴任务') : review ? '伙伴正在核验结果' : '伙伴正在执行任务',
|
|
279
|
+
detail: recovered ? '会先检查已有产出,避免重复写入或重复发布。' : '执行状态会自动同步,无需手动刷新。',
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=task-board-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-board-panel.js","sourceRoot":"","sources":["../../src/ui/task-board-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export declare function WorkspaceHero({ eyebrow, title, detail, actions }: {
|
|
3
|
+
eyebrow: string;
|
|
4
|
+
title: string;
|
|
5
|
+
detail: string;
|
|
6
|
+
actions?: ReactNode;
|
|
7
|
+
}): JSX.Element;
|
|
8
|
+
export declare function WorkspaceBlock({ title, detail, actions, children, className }: {
|
|
9
|
+
title: string;
|
|
10
|
+
detail?: string;
|
|
11
|
+
actions?: ReactNode;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
className?: string;
|
|
14
|
+
}): JSX.Element;
|
|
15
|
+
export declare function WorkspaceDialog({ eyebrow, title, detail, close, children, width }: {
|
|
16
|
+
eyebrow?: string;
|
|
17
|
+
title: string;
|
|
18
|
+
detail: string;
|
|
19
|
+
close(): void;
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
width?: 'regular' | 'wide';
|
|
22
|
+
}): JSX.Element;
|
|
23
|
+
export declare function WorkspaceNotice({ children, kind }: {
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
kind?: 'error' | 'warning' | 'success';
|
|
26
|
+
}): JSX.Element;
|
|
27
|
+
export declare function CollectionEmpty({ title, detail, action }: {
|
|
28
|
+
title: string;
|
|
29
|
+
detail?: string;
|
|
30
|
+
action?: ReactNode;
|
|
31
|
+
}): JSX.Element;
|
|
32
|
+
export declare function CollectionSkeleton({ rows }: {
|
|
33
|
+
rows?: number;
|
|
34
|
+
}): JSX.Element;
|
|
35
|
+
export declare function CountLabel({ value, label }: {
|
|
36
|
+
value: number;
|
|
37
|
+
label: string;
|
|
38
|
+
}): JSX.Element;
|
|
39
|
+
export declare function errorMessage(value: unknown): string;
|
|
40
|
+
//# sourceMappingURL=workspace-components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-components.d.ts","sourceRoot":"","sources":["../../src/ui/workspace-components.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGpF,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAKvJ;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAc,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAKlM;AAED,wBAAgB,eAAe,CAAC,EAAE,OAA8B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAiB,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,IAAI,IAAI,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA4BvP;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAc,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAE1I;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAE9H;AAED,wBAAgB,kBAAkB,CAAC,EAAE,IAAQ,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAE/E;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAE1F;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAkE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useRef } from 'react';
|
|
3
|
+
import { IconAgentPresetOutline16, IconCloseOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
|
+
export function WorkspaceHero({ eyebrow, title, detail, actions }) {
|
|
5
|
+
return _jsxs("header", { className: "dsh-partner-feature-hero", children: [_jsxs("span", { children: [_jsx("small", { children: eyebrow }), _jsx("h2", { children: title }), _jsx("p", { children: detail })] }), actions && _jsx("div", { className: "dsh-partner-feature-hero-actions", children: actions })] });
|
|
6
|
+
}
|
|
7
|
+
export function WorkspaceBlock({ title, detail, actions, children, className = '' }) {
|
|
8
|
+
return _jsxs("section", { className: `dsh-partner-feature-block${className ? ` ${className}` : ''}`, children: [_jsxs("header", { children: [_jsxs("span", { children: [_jsx("strong", { children: title }), detail && _jsx("small", { children: detail })] }), actions && _jsx("div", { children: actions })] }), children] });
|
|
9
|
+
}
|
|
10
|
+
export function WorkspaceDialog({ eyebrow = 'CREATE & CONFIGURE', title, detail, close, children, width = 'regular' }) {
|
|
11
|
+
const titleId = useId();
|
|
12
|
+
const detailId = useId();
|
|
13
|
+
const panelRef = useRef(null);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const previous = document.activeElement instanceof HTMLElement ? document.activeElement : undefined;
|
|
16
|
+
const frame = requestAnimationFrame(() => {
|
|
17
|
+
const panel = panelRef.current;
|
|
18
|
+
const target = panel?.querySelector('[autofocus]') ?? panel?.querySelector('input, textarea, select, button');
|
|
19
|
+
target?.focus();
|
|
20
|
+
});
|
|
21
|
+
return () => { cancelAnimationFrame(frame); previous?.focus(); };
|
|
22
|
+
}, []);
|
|
23
|
+
const keyDown = (event) => {
|
|
24
|
+
if (event.key === 'Escape') {
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
close();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (event.key !== 'Tab')
|
|
30
|
+
return;
|
|
31
|
+
const focusable = [...(panelRef.current?.querySelectorAll('button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])') ?? [])];
|
|
32
|
+
if (focusable.length === 0)
|
|
33
|
+
return;
|
|
34
|
+
const first = focusable[0];
|
|
35
|
+
const last = focusable.at(-1);
|
|
36
|
+
if (event.shiftKey && document.activeElement === first) {
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
last?.focus();
|
|
39
|
+
}
|
|
40
|
+
else if (!event.shiftKey && document.activeElement === last) {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
first?.focus();
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return _jsx("div", { className: "dsh-partner-workspace-dialog-layer", onPointerDown: event => { if (event.target === event.currentTarget)
|
|
46
|
+
close(); }, children: _jsxs("dialog", { ref: panelRef, className: `dsh-partner-workspace-dialog is-${width}`, open: true, "aria-modal": "true", "aria-labelledby": titleId, "aria-describedby": detailId, onKeyDown: keyDown, children: [_jsxs("header", { children: [_jsxs("span", { children: [_jsx("small", { children: eyebrow }), _jsx("strong", { id: titleId, children: title }), _jsx("p", { id: detailId, children: detail })] }), _jsx("button", { type: "button", onClick: close, "aria-label": "\u5173\u95ED", children: _jsx(IconCloseOutline16, { size: 16 }) })] }), _jsx("div", { className: "dsh-partner-workspace-dialog-body", children: children })] }) });
|
|
47
|
+
}
|
|
48
|
+
export function WorkspaceNotice({ children, kind = 'error' }) {
|
|
49
|
+
return _jsxs("p", { className: `dsh-partner-workspace-notice is-${kind}`, role: kind === 'error' ? 'alert' : 'status', children: [_jsx("i", {}), children] });
|
|
50
|
+
}
|
|
51
|
+
export function CollectionEmpty({ title, detail, action }) {
|
|
52
|
+
return _jsxs("div", { className: "dsh-partner-collection-empty", children: [_jsx("span", { children: _jsx(IconAgentPresetOutline16, { size: 18 }) }), _jsx("strong", { children: title }), detail && _jsx("p", { children: detail }), action] });
|
|
53
|
+
}
|
|
54
|
+
export function CollectionSkeleton({ rows = 3 }) {
|
|
55
|
+
return _jsx("div", { className: "dsh-partner-collection-skeleton", "aria-label": "\u6B63\u5728\u52A0\u8F7D", "aria-busy": "true", children: Array.from({ length: rows }, (_, index) => _jsx("i", {}, index)) });
|
|
56
|
+
}
|
|
57
|
+
export function CountLabel({ value, label }) {
|
|
58
|
+
return _jsxs("span", { className: "dsh-partner-count-label", children: [_jsx("b", { children: value }), label] });
|
|
59
|
+
}
|
|
60
|
+
export function errorMessage(value) { return value instanceof Error ? value.message : String(value); }
|
|
61
|
+
//# sourceMappingURL=workspace-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-components.js","sourceRoot":"","sources":["../../src/ui/workspace-components.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemoncat7/dsh-partner",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "Long-lived AI companions with WeChat channel routing for DeepSeek Harness",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"lib/**/*.d.ts",
|
|
31
31
|
"lib/**/*.map",
|
|
32
32
|
"cordis.patch.yml",
|
|
33
|
+
"docs/architecture.md",
|
|
33
34
|
"README.md",
|
|
34
35
|
"LICENSE"
|
|
35
36
|
],
|