@wowyuarm/dsh-agent-team 0.1.11 → 0.1.13
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 +6 -4
- package/README.zh.md +6 -4
- package/cordis.patch.yml +7 -3
- package/package.json +16 -3
- package/packages/agent-team/README.md +4 -4
- package/packages/agent-team/README.zh.md +4 -4
- package/packages/agent-team/lib/context-projection.js +5 -1
- package/packages/agent-team/lib/index.js +162 -113
- package/packages/agent-team/lib/ledger.js +496 -169
- package/packages/agent-team/lib/member-context.js +18 -1
- package/packages/agent-team/lib/member-runtime.js +48 -9
- package/packages/agent-team/lib/mentions.js +80 -0
- package/packages/agent-team/lib/spec.js +20 -0
- package/packages/agent-team/lib/typert.host.js +241 -46
- package/packages/agent-team/lib/typert.remote-client.d.ts +7 -3
- package/packages/agent-team/lib/typert.remote-client.d.ts.map +1 -1
- package/packages/agent-team/lib/typert.remote-client.js +178 -28
- package/packages/agent-team/lib/types/context-projection.d.ts.map +1 -1
- package/packages/agent-team/lib/types/index.d.ts +33 -14
- package/packages/agent-team/lib/types/index.d.ts.map +1 -1
- package/packages/agent-team/lib/types/ledger.d.ts +120 -18
- package/packages/agent-team/lib/types/ledger.d.ts.map +1 -1
- package/packages/agent-team/lib/types/member-context.d.ts +6 -0
- package/packages/agent-team/lib/types/member-context.d.ts.map +1 -1
- package/packages/agent-team/lib/types/member-runtime.d.ts +2 -1
- package/packages/agent-team/lib/types/member-runtime.d.ts.map +1 -1
- package/packages/agent-team/lib/types/mentions.d.ts +47 -0
- package/packages/agent-team/lib/types/mentions.d.ts.map +1 -0
- package/packages/agent-team/lib/types/spec.d.ts.map +1 -1
- package/packages/agent-team/lib/types/types/entities.d.ts +3 -20
- package/packages/agent-team/lib/types/types/entities.d.ts.map +1 -1
- package/packages/agent-team/lib/types/types/operations.d.ts +37 -1
- package/packages/agent-team/lib/types/types/operations.d.ts.map +1 -1
- package/packages/agent-team/lib/types/types/requests-results.d.ts +107 -25
- package/packages/agent-team/lib/types/types/requests-results.d.ts.map +1 -1
- package/packages/agent-team/lib/types/vendor/storage-sqlite/index.d.ts +87 -0
- package/packages/agent-team/lib/types/vendor/storage-sqlite/index.d.ts.map +1 -0
- package/packages/agent-team/lib/types/vendor/storage-sqlite/schema.d.ts +59 -0
- package/packages/agent-team/lib/types/vendor/storage-sqlite/schema.d.ts.map +1 -0
- package/packages/agent-team/lib/types/vendor/storage-sqlite/unit.d.ts +57 -0
- package/packages/agent-team/lib/types/vendor/storage-sqlite/unit.d.ts.map +1 -0
- package/packages/agent-team/lib/vendor/storage-sqlite/index.js +139 -0
- package/packages/agent-team/lib/vendor/storage-sqlite/schema.js +120 -0
- package/packages/agent-team/lib/vendor/storage-sqlite/unit.js +132 -0
- package/packages/agent-team/preset/team-member/agent.cordis.yml +48 -8
- package/packages/client-agent-team/README.md +1 -1
- package/packages/client-agent-team/README.zh.md +1 -1
- package/packages/client-agent-team/lib/client.js +2123 -1406
- package/packages/client-agent-team/lib/client.js.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamAgentImport.d.ts +12 -0
- package/packages/client-agent-team/lib/types/client/TeamAgentImport.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/TeamAgentImport.js +69 -0
- package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.d.ts +3 -1
- package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.js +31 -19
- package/packages/client-agent-team/lib/types/client/TeamAvatarStack.d.ts +18 -0
- package/packages/client-agent-team/lib/types/client/TeamAvatarStack.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/TeamAvatarStack.js +22 -0
- package/packages/client-agent-team/lib/types/client/TeamChannelPage.d.ts +3 -1
- package/packages/client-agent-team/lib/types/client/TeamChannelPage.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamChannelPage.js +111 -24
- package/packages/client-agent-team/lib/types/client/TeamChannelsPanel.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamChannelsPanel.js +10 -3
- package/packages/client-agent-team/lib/types/client/TeamComposer.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamComposer.js +11 -17
- package/packages/client-agent-team/lib/types/client/TeamConversation.js +1 -1
- package/packages/client-agent-team/lib/types/client/TeamCountBadge.d.ts +20 -0
- package/packages/client-agent-team/lib/types/client/TeamCountBadge.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/TeamCountBadge.js +25 -0
- package/packages/client-agent-team/lib/types/client/TeamInboxPage.d.ts +9 -5
- package/packages/client-agent-team/lib/types/client/TeamInboxPage.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamInboxPage.js +92 -23
- package/packages/client-agent-team/lib/types/client/TeamMemberRow.d.ts +43 -0
- package/packages/client-agent-team/lib/types/client/TeamMemberRow.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/TeamMemberRow.js +27 -0
- package/packages/client-agent-team/lib/types/client/TeamMembersAction.d.ts +2 -2
- package/packages/client-agent-team/lib/types/client/TeamMembersAction.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamMembersAction.js +2 -2
- package/packages/client-agent-team/lib/types/client/TeamPresenceDot.d.ts +1 -1
- package/packages/client-agent-team/lib/types/client/TeamPresenceDot.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamThreadPage.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamThreadPage.js +21 -31
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.d.ts +1 -1
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.js +29 -11
- package/packages/client-agent-team/lib/types/client/index.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/index.js +11 -5
- package/packages/client-agent-team/lib/types/client/locales.d.ts +54 -16
- package/packages/client-agent-team/lib/types/client/locales.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/locales.js +54 -16
- package/packages/client-agent-team/lib/types/client/slots.d.ts +3 -2
- package/packages/client-agent-team/lib/types/client/slots.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/team-changes.d.ts +15 -25
- package/packages/client-agent-team/lib/types/client/team-changes.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/team-changes.js +82 -80
- package/packages/client-agent-team/lib/types/client/team-formatters.d.ts +45 -10
- package/packages/client-agent-team/lib/types/client/team-formatters.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/team-formatters.js +71 -30
- package/packages/tool-agent-team/README.md +3 -3
- package/packages/tool-agent-team/README.zh.md +3 -3
- package/packages/tool-agent-team/lib/host-access.js +19 -0
- package/packages/tool-agent-team/lib/index.js +71 -49
- package/packages/tool-agent-team/lib/types/host-access.d.ts +10 -0
- package/packages/tool-agent-team/lib/types/host-access.d.ts.map +1 -1
- package/packages/tool-agent-team/lib/types/index.d.ts.map +1 -1
- package/packages/agent-team/lib/progress-nudge.js +0 -328
- package/packages/agent-team/lib/types/progress-nudge.d.ts +0 -136
- package/packages/agent-team/lib/types/progress-nudge.d.ts.map +0 -1
- package/packages/client-agent-team/lib/types/client/TeamSettings.d.ts +0 -3
- package/packages/client-agent-team/lib/types/client/TeamSettings.d.ts.map +0 -1
- package/packages/client-agent-team/lib/types/client/TeamSettings.js +0 -5
- package/packages/client-agent-team/lib/types/client/scope-coverage.d.ts +0 -41
- package/packages/client-agent-team/lib/types/client/scope-coverage.d.ts.map +0 -1
- package/packages/client-agent-team/lib/types/client/scope-coverage.js +0 -64
|
@@ -5,10 +5,9 @@ import { TeamComposer } from "./TeamComposer.js";
|
|
|
5
5
|
import { diagnosticText, TeamPresenceDot } from "./TeamPresenceDot.js";
|
|
6
6
|
import { TeamMessage } from "./TeamMessage.js";
|
|
7
7
|
import { TeamRunDivider } from "./TeamRunDivider.js";
|
|
8
|
-
import { formatActivity, formatClaimState, formatTaskStatus, formatTaskTitle, mentionNamesOf, taskStatusDot } from "./team-formatters.js";
|
|
8
|
+
import { formatActivity, formatClaimState, formatTaskStatus, formatTaskTitle, mentionNamesOf, mentionedMemberIds, taskStatusDot } from "./team-formatters.js";
|
|
9
9
|
import { TeamStateDot } from "./TeamStateDot.js";
|
|
10
10
|
import { mintRequestId, uploadComposerFiles } from "./requests.js";
|
|
11
|
-
import { ScopeCoverage } from "./scope-coverage.js";
|
|
12
11
|
import { daySeparatorLabel, isRunGap, timelineDayKey } from "./team-separators.js";
|
|
13
12
|
import { useTimelineScroll } from "./timeline-scroll.js";
|
|
14
13
|
import { hostTaskRefLookup, jumpToTaskThread } from "./task-refs.js";
|
|
@@ -189,35 +188,21 @@ export function TeamThreadPage(props) {
|
|
|
189
188
|
return mountedRef.current;
|
|
190
189
|
}
|
|
191
190
|
};
|
|
192
|
-
// One Host change event wakes every scope it matches: here a workspace commit
|
|
193
|
-
// and a presence transition, whose separate polls both deliver that event's
|
|
194
|
-
// version. Both asks are the same roster and view read, so each round answers
|
|
195
|
-
// one version per scope, and a newer version arriving mid-round runs one
|
|
196
|
-
// trailing round instead of being dropped. The two scopes count different
|
|
197
|
-
// domains, so coverage and pending versions are tracked per scope.
|
|
198
191
|
const supplementalRef = useRef();
|
|
199
|
-
const
|
|
200
|
-
const refreshSupplemental = (
|
|
201
|
-
|
|
202
|
-
if (
|
|
203
|
-
|
|
204
|
-
return inFlight;
|
|
205
|
-
}
|
|
206
|
-
else if (!supplementalCoverageRef.current.wake(wake.scope, wake.version)) {
|
|
207
|
-
return inFlight ?? Promise.resolve();
|
|
208
|
-
}
|
|
209
|
-
const coverage = supplementalCoverageRef.current;
|
|
192
|
+
const supplementalPendingRef = useRef(false);
|
|
193
|
+
const refreshSupplemental = () => {
|
|
194
|
+
supplementalPendingRef.current = true;
|
|
195
|
+
if (supplementalRef.current !== undefined)
|
|
196
|
+
return supplementalRef.current;
|
|
210
197
|
const round = (async () => {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
if (!applied || !coverage.finishRound())
|
|
198
|
+
// Collect synchronous scope notifications before issuing the shared read.
|
|
199
|
+
await Promise.resolve();
|
|
200
|
+
while (mountedRef.current && supplementalPendingRef.current) {
|
|
201
|
+
supplementalPendingRef.current = false;
|
|
202
|
+
if (!await applySupplemental())
|
|
217
203
|
return;
|
|
218
204
|
}
|
|
219
205
|
})().finally(() => {
|
|
220
|
-
// A remount may already own a newer round; only this one clears itself.
|
|
221
206
|
if (supplementalRef.current === round)
|
|
222
207
|
supplementalRef.current = undefined;
|
|
223
208
|
});
|
|
@@ -283,7 +268,7 @@ export function TeamThreadPage(props) {
|
|
|
283
268
|
mountedRef.current = true;
|
|
284
269
|
// The previous mount's supplemental round must not answer for this one.
|
|
285
270
|
supplementalRef.current = undefined;
|
|
286
|
-
|
|
271
|
+
supplementalPendingRef.current = false;
|
|
287
272
|
projectionRef.current = undefined;
|
|
288
273
|
setProjection(undefined);
|
|
289
274
|
setChannelView(undefined);
|
|
@@ -304,7 +289,8 @@ export function TeamThreadPage(props) {
|
|
|
304
289
|
setLoading(true);
|
|
305
290
|
void (async () => {
|
|
306
291
|
// One parallel round covers the whole first paint. The durable read no
|
|
307
|
-
// longer wakes any change scope
|
|
292
|
+
// longer wakes any change scope; only the subscription baseline can
|
|
293
|
+
// request a catch-up while this first paint is loading.
|
|
308
294
|
const [read, history, observations] = await Promise.all([
|
|
309
295
|
readThread({ requestId: readRequestIdRef.current, workspaceId, ...threadRequest }),
|
|
310
296
|
loadThreadHistory({ workspaceId, ...threadRequest, limit: 20 }).catch(() => undefined),
|
|
@@ -356,7 +342,7 @@ export function TeamThreadPage(props) {
|
|
|
356
342
|
setError(update.message);
|
|
357
343
|
return;
|
|
358
344
|
}
|
|
359
|
-
void refreshSupplemental(
|
|
345
|
+
void refreshSupplemental();
|
|
360
346
|
}),
|
|
361
347
|
// Presence transitions commit nothing: only the member rows move, so
|
|
362
348
|
// the roster refresh rides the same supplemental fetch as workspace
|
|
@@ -368,7 +354,7 @@ export function TeamThreadPage(props) {
|
|
|
368
354
|
setError(update.message);
|
|
369
355
|
return;
|
|
370
356
|
}
|
|
371
|
-
void refreshSupplemental(
|
|
357
|
+
void refreshSupplemental();
|
|
372
358
|
}),
|
|
373
359
|
];
|
|
374
360
|
return () => {
|
|
@@ -659,8 +645,12 @@ export function TeamThreadPage(props) {
|
|
|
659
645
|
}
|
|
660
646
|
if (result.value.kind === 'committed') {
|
|
661
647
|
const committed = result.value;
|
|
648
|
+
// The optimistic row chips what the Host is about to report: a
|
|
649
|
+
// hand-typed `@Handle` delivers exactly like a picked recipient, and the
|
|
650
|
+
// committed facts replace this row as soon as they arrive.
|
|
651
|
+
const optimisticMentions = [...new Set([...recipients, ...mentionedMemberIds(draft, channelMembers)])].sort();
|
|
662
652
|
setCurrentFacts(current => {
|
|
663
|
-
const merged = mergeFacts(current, [{ kind: 'message', sequence: committed.message.sequence, message: committed.message, mentions:
|
|
653
|
+
const merged = mergeFacts(current, [{ kind: 'message', sequence: committed.message.sequence, message: committed.message, mentions: optimisticMentions, occurredAt: committed.receipt.occurredAt }]);
|
|
664
654
|
currentFactsRef.current = merged;
|
|
665
655
|
return merged;
|
|
666
656
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { TeamSidebarProps } from './slots.ts';
|
|
2
|
-
export declare function TeamWorkspaceBrowser({ wide, expandSidebar, navigation, selectWorkspace, selectChannel, selectInbox, t, useWorkspaces, loadMembers, loadInbox, subscribeChanges, subscribeReads, addMember, loadChannels, createChannel, updateChannel, archiveChannel, updateMember, recoverMember, archiveMember, joinChannel, removeChannelMember, loadModels, openMemberSession }: TeamSidebarProps): import("react").JSX.Element;
|
|
2
|
+
export declare function TeamWorkspaceBrowser({ wide, expandSidebar, navigation, selectWorkspace, selectChannel, selectInbox, t, useWorkspaces, loadMembers, loadInbox, subscribeChanges, subscribeReads, addMember, loadChannels, createChannel, updateChannel, archiveChannel, updateMember, recoverMember, archiveMember, joinWorkspace, leaveWorkspace, joinChannel, removeChannelMember, loadModels, openMemberSession }: TeamSidebarProps): import("react").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=TeamWorkspaceBrowser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamWorkspaceBrowser.d.ts","sourceRoot":"","sources":["../../../src/client/TeamWorkspaceBrowser.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"TeamWorkspaceBrowser.d.ts","sourceRoot":"","sources":["../../../src/client/TeamWorkspaceBrowser.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAyBlD,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,gBAAgB,+BAoHra"}
|
|
@@ -7,7 +7,18 @@ import { useSidebarSectionOpen, setSidebarSectionOpen } from "./sidebar-sections
|
|
|
7
7
|
import { TeamAgentsPanel } from "./TeamAgentsPanel.js";
|
|
8
8
|
import { TeamChannelsPanel } from "./TeamChannelsPanel.js";
|
|
9
9
|
import css from './sidebar.module.css';
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The Inbox entry's icon with its unread mark. The quantity left this surface
|
|
12
|
+
* and lives in the control's accessible name: the sidebar answers whether
|
|
13
|
+
* anything is waiting at a glance, and the number — which moves on every fact —
|
|
14
|
+
* is what a reader asks for on purpose. The mark hangs off the icon rather than
|
|
15
|
+
* off the control, so the wide card and the 36px rail button put the same dot
|
|
16
|
+
* on the same corner of the same glyph.
|
|
17
|
+
*/
|
|
18
|
+
function InboxMark({ unread }) {
|
|
19
|
+
return _jsxs("span", { className: css.inboxMark, children: [_jsx(IconQueueOutline14, { size: 16 }), unread > 0 && _jsx("span", { className: css.inboxDot, "data-team-inbox-dot": true, "aria-hidden": "true" })] });
|
|
20
|
+
}
|
|
21
|
+
export function TeamWorkspaceBrowser({ wide, expandSidebar, navigation, selectWorkspace, selectChannel, selectInbox, t, useWorkspaces, loadMembers, loadInbox, subscribeChanges, subscribeReads, addMember, loadChannels, createChannel, updateChannel, archiveChannel, updateMember, recoverMember, archiveMember, joinWorkspace, leaveWorkspace, joinChannel, removeChannelMember, loadModels, openMemberSession }) {
|
|
11
22
|
const navigationState = useSyncExternalStore(navigation.subscribe, navigation.getSnapshot, navigation.getSnapshot);
|
|
12
23
|
const workspaces = useWorkspaces(state => state.items);
|
|
13
24
|
const selected = navigationState.workspaceId;
|
|
@@ -17,26 +28,33 @@ export function TeamWorkspaceBrowser({ wide, expandSidebar, navigation, selectWo
|
|
|
17
28
|
// one is set, the selected Agent card while a Member Session view is open,
|
|
18
29
|
// otherwise the browsed Workspace's overview. The selected row keeps its
|
|
19
30
|
// quiet folder tint (data-selected) in every case. The mention-Inbox card
|
|
20
|
-
// takes the marker while the Inbox page stands
|
|
31
|
+
// takes the marker while the Inbox page stands, and stands down while the
|
|
32
|
+
// embedded Member Session covers that page: the Inbox stays the remembered
|
|
33
|
+
// face underneath — closing the overlay returns to it, marker included —
|
|
34
|
+
// but the card is not a second current page while an Agent holds the seat.
|
|
21
35
|
const overviewIsCurrent = navigationState.channelRef === undefined && navigationState.memberSessionId === undefined && navigationState.inbox !== true;
|
|
22
|
-
const inboxIsCurrent = navigationState.inbox === true;
|
|
36
|
+
const inboxIsCurrent = navigationState.inbox === true && navigationState.memberSessionId === undefined;
|
|
23
37
|
const [creatingAgents, setCreatingAgents] = useState([]);
|
|
24
38
|
// Rail icons request expansion and name the section to reveal once wide.
|
|
25
39
|
const [pendingSection, setPendingSection] = useState();
|
|
26
40
|
const channelsRef = useRef(null);
|
|
27
41
|
const agentsRef = useRef(null);
|
|
28
42
|
const workspacesOpen = useSidebarSectionOpen(undefined, 'workspaces');
|
|
29
|
-
// The cross-Workspace
|
|
30
|
-
// Team sidebar stands; every wake re-pulls each Workspace's
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
43
|
+
// The cross-Workspace Inbox badge: one scope-less subscription while the
|
|
44
|
+
// Team sidebar stands; every wake re-pulls each Workspace's unread total
|
|
45
|
+
// (limit 1 — totals cover every row, never the list). Same-burst wakes
|
|
46
|
+
// coalesce behind a short debounce; the number is whatever the Host's whole
|
|
47
|
+
// unread slice returns, mentions included rather than alone.
|
|
34
48
|
const [inboxTotal, setInboxTotal] = useState(0);
|
|
49
|
+
// One name for both entries: what the control is, and how much waits behind
|
|
50
|
+
// it. The rail repeats it as its hover hint, which is the only place a reader
|
|
51
|
+
// still meets the quantity without opening the page.
|
|
52
|
+
const inboxLabel = inboxTotal > 0 ? t('inboxTitleWithCount', { count: inboxTotal }) : t('inboxTitle');
|
|
35
53
|
useEffect(() => {
|
|
36
54
|
let disposed = false;
|
|
37
55
|
let scheduled;
|
|
38
56
|
const refresh = async () => {
|
|
39
|
-
const results = await Promise.all(workspaces.map(workspace => loadInbox({ workspaceId: workspace.workspaceId,
|
|
57
|
+
const results = await Promise.all(workspaces.map(workspace => loadInbox({ workspaceId: workspace.workspaceId, limit: 1 })));
|
|
40
58
|
if (disposed)
|
|
41
59
|
return;
|
|
42
60
|
setInboxTotal(results.reduce((sum, result) => result.ok ? sum + result.value.totalUnreadCount : sum, 0));
|
|
@@ -80,7 +98,7 @@ export function TeamWorkspaceBrowser({ wide, expandSidebar, navigation, selectWo
|
|
|
80
98
|
queueMicrotask(() => { node?.querySelector('button')?.focus(); });
|
|
81
99
|
}, [wide, pendingSection]);
|
|
82
100
|
if (!wide) {
|
|
83
|
-
return _jsxs("nav", { className: css.railWorkspace, "aria-label": t('workspaceSections'), children: [_jsx(Tooltip, { label:
|
|
101
|
+
return _jsxs("nav", { className: css.railWorkspace, "aria-label": t('workspaceSections'), children: [_jsx(Tooltip, { label: inboxLabel, side: "right", children: _jsx("button", { type: "button", className: css.railButton, "aria-label": inboxLabel, "aria-current": inboxIsCurrent ? 'page' : undefined, onClick: () => { selectInbox(); expandSidebar(); }, children: _jsx(InboxMark, { unread: inboxTotal }) }) }), _jsx(Tooltip, { label: t('channels'), side: "right", children: _jsx("button", { type: "button", className: css.railButton, "aria-label": t('channels'), onClick: () => { setPendingSection('channels'); expandSidebar(); }, children: _jsx(IconListPenOutline16, { size: 16 }) }) }), _jsx(Tooltip, { label: t('agents'), side: "right", children: _jsx("button", { type: "button", className: css.railButton, "aria-label": t('agents'), onClick: () => { setPendingSection('agents'); expandSidebar(); }, children: _jsx(IconAgentPresetOutline16, { size: 16 }) }) })] });
|
|
84
102
|
}
|
|
85
|
-
return _jsxs("section", { className: css.workspaceBrowser, "aria-label": t('workspaces'), children: [_jsxs("button", { type: "button", className: css.inboxCard, "aria-label":
|
|
103
|
+
return _jsxs("section", { className: css.workspaceBrowser, "aria-label": t('workspaces'), children: [_jsxs("button", { type: "button", className: css.inboxCard, "aria-label": inboxLabel, "aria-current": inboxIsCurrent ? 'page' : undefined, onClick: selectInbox, children: [_jsx(InboxMark, { unread: inboxTotal }), _jsx("span", { className: css.inboxCardLabel, children: t('inboxTitle') })] }), _jsx(TeamSidebarSection, { title: t('workspaces'), open: workspacesOpen, onToggle: open => { setSidebarSectionOpen(undefined, 'workspaces', open); }, children: _jsxs("div", { className: css.workspaceList, children: [workspaces.map(workspace => _jsx(TeamWorkspaceRow, { workspaceId: workspace.workspaceId, title: workspace.title, path: workspace.path, selected: workspace.workspaceId === selectedId, current: workspace.workspaceId === selectedId && overviewIsCurrent, onSelect: selectWorkspace }, workspace.workspaceId)), workspaces.length === 0 && _jsx("p", { className: css.emptyState, children: t('empty') })] }) }), selectedId !== undefined && _jsxs("div", { className: css.workspaceSection, children: [_jsx("div", { ref: channelsRef, children: _jsx(TeamChannelsPanel, { workspaceId: selectedId, loadMembers: loadMembers, loadChannels: loadChannels, subscribeChanges: subscribeChanges, createChannel: createChannel, updateChannel: updateChannel, archiveChannel: archiveChannel, joinChannel: joinChannel, removeChannelMember: removeChannelMember, creatingAgents: creatingAgents.filter(request => request.workspaceId === selectedId), ...(navigationState.memberSessionId !== undefined || navigationState.channelRef === undefined ? {} : { selectedChannelRef: navigationState.channelRef }), selectChannel: selectChannel, t: t }, selectedId) }), _jsx("div", { ref: agentsRef, children: _jsx(TeamAgentsPanel, { workspaceId: selectedId, loadMembers: loadMembers, subscribeChanges: subscribeChanges, addMember: addMember, updateMember: updateMember, recoverMember: recoverMember, archiveMember: archiveMember, joinWorkspace: joinWorkspace, leaveWorkspace: leaveWorkspace, loadModels: loadModels, ...(navigationState.memberSessionId === undefined ? {} : { memberSessionId: navigationState.memberSessionId }), openMemberSession: openMemberSession, onCreatingChange: (request, creating) => { setCreatingAgents(current => creating ? [...current.filter(item => item.requestId !== request.requestId), request] : current.filter(item => item.requestId !== request.requestId)); }, t: t }, selectedId) })] })] });
|
|
86
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAuCnE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAK5C,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,cAAc,CAAA;AAEnD,YAAY,EAAE,QAAQ,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAC9F,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAIhD,eAAO,MAAM,MAAM,UAElB,CAAA;AAED,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,IAAI,EAAE,OAAO,CAAA;KACd;CACF;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,cAAc,EAAE,cAAc,CAAA;QAC9B,UAAU,EAAE,cAAc,CAAA;KAC3B;CACF;AAoMD,wBAAsB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI7D"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import agentTeamRemote from '
|
|
1
|
+
import agentTeamRemote from '@wowyuarm/dsh-agent-team/remote';
|
|
2
2
|
import { TeamNavigation } from "./navigation.js";
|
|
3
3
|
import { TeamChangeStream, TeamReadStream } from "./team-changes.js";
|
|
4
4
|
import { TeamDraftStore } from "./drafts.js";
|
|
5
5
|
import { TeamFooterAction } from "./TeamFooterAction.js";
|
|
6
|
-
import {
|
|
6
|
+
import { TeamMembersAction } from "./TeamMembersAction.js";
|
|
7
7
|
import { TeamConversation } from "./TeamConversation.js";
|
|
8
8
|
import { TeamWorkspaceBrowser } from "./TeamWorkspaceBrowser.js";
|
|
9
9
|
import { en, zh } from "./locales.js";
|
|
@@ -46,6 +46,8 @@ entryKey) {
|
|
|
46
46
|
recoverMember: (request) => ctx.remote.agentTeam.recoverMember(request),
|
|
47
47
|
clearMemberContext: (request) => ctx.remote.agentTeam.clearMemberContext(request),
|
|
48
48
|
archiveMember: (request) => ctx.remote.agentTeam.archiveMember(request),
|
|
49
|
+
joinWorkspace: (request) => ctx.remote.agentTeam.joinWorkspace(request),
|
|
50
|
+
leaveWorkspace: (request) => ctx.remote.agentTeam.leaveWorkspace(request),
|
|
49
51
|
// The Host-scoped catalog needs no live Member, so suspended ones stay editable too.
|
|
50
52
|
loadModels: () => ctx.remote.session.modelCatalog(),
|
|
51
53
|
openMemberSession: openMemberSessionImpl,
|
|
@@ -152,7 +154,12 @@ function applyUi(ctx) {
|
|
|
152
154
|
restore();
|
|
153
155
|
};
|
|
154
156
|
}, 'agent-team: member session restore');
|
|
155
|
-
const changes = new TeamChangeStream(
|
|
157
|
+
const changes = new TeamChangeStream(ctx.remote);
|
|
158
|
+
ctx.effect(() => () => changes.dispose(), 'agent-team: change subscriptions');
|
|
159
|
+
// The Harness resumes a live generation across reconnects, but a stream that
|
|
160
|
+
// already ended for good is this layer's to rebuild — and a new Host generation
|
|
161
|
+
// is the one moment the scope it was waiting for can be there again.
|
|
162
|
+
ctx.on('connection/reset', () => { changes.recover(); });
|
|
156
163
|
const reads = new TeamReadStream();
|
|
157
164
|
const loadMemberGroups = async () => {
|
|
158
165
|
const workspaces = ctx.workspaces.list.getSnapshot().items;
|
|
@@ -183,12 +190,11 @@ function applyUi(ctx) {
|
|
|
183
190
|
navigation.actions().exitMemberSession();
|
|
184
191
|
navigation.actions().leaveTeam();
|
|
185
192
|
},
|
|
186
|
-
loadMemberGroups,
|
|
187
193
|
}),
|
|
188
194
|
}, TeamFooterAction));
|
|
189
195
|
registerModeShadow(ctx, navigation, changes, reads, drafts, 'sidebar.workspaces', TeamWorkspaceBrowser);
|
|
190
196
|
registerModeShadow(ctx, navigation, changes, reads, drafts, 'main', TeamConversation, undefined, 'conversation');
|
|
191
|
-
registerModeShadow(ctx, navigation, changes, reads, drafts, 'sidebar.settings',
|
|
197
|
+
registerModeShadow(ctx, navigation, changes, reads, drafts, 'sidebar.settings', TeamMembersAction, () => ({ loadMemberGroups }));
|
|
192
198
|
}
|
|
193
199
|
export async function apply(ctx) {
|
|
194
200
|
const disposeRemote = await ctx.remote.$mount(agentTeamRemote);
|
|
@@ -10,6 +10,15 @@ export declare const zh: {
|
|
|
10
10
|
readonly teamMode: "团队模式";
|
|
11
11
|
readonly workspaceSections: "工作区内容";
|
|
12
12
|
readonly addAgent: "添加 Agent";
|
|
13
|
+
readonly importAgentTitle: "从其他 Workspace 引入";
|
|
14
|
+
readonly importAgent: "引入";
|
|
15
|
+
readonly importingAgent: "引入中…";
|
|
16
|
+
readonly importAgentNotice: "选择已有 Agent 加入当前 Workspace。身份、记忆与会话保持不变;Channel 仍需另行加入。";
|
|
17
|
+
readonly emptyImportAgents: "没有可引入的 Agent。";
|
|
18
|
+
readonly withdrawAgent: "从此 Workspace 撤回";
|
|
19
|
+
readonly withdrawAgentTitle: "撤回 {name}?";
|
|
20
|
+
readonly withdrawAgentNotice: "仅撤出当前 Workspace:退出此处所有 Channel、释放活跃 Claim 并清除 Attention。其他 Workspace 的工作、会话和私有记忆不受影响。";
|
|
21
|
+
readonly archiveOtherWorkspaces: "同时从其他 {count} 个 Workspace 收起。";
|
|
13
22
|
readonly cancel: "取消";
|
|
14
23
|
readonly close: "关闭";
|
|
15
24
|
readonly copyCode: "复制";
|
|
@@ -27,14 +36,20 @@ export declare const zh: {
|
|
|
27
36
|
readonly statusError: "错误";
|
|
28
37
|
readonly statusUnavailable: "不可用";
|
|
29
38
|
readonly addChannel: "新建频道";
|
|
30
|
-
readonly
|
|
31
|
-
readonly
|
|
32
|
-
readonly loadingInbox: "
|
|
33
|
-
readonly inboxEmptyTitle: "
|
|
34
|
-
readonly inboxEmptyHint: "
|
|
35
|
-
readonly inboxTimeToday: "今天";
|
|
39
|
+
readonly inboxTitle: "收件箱";
|
|
40
|
+
readonly inboxTitleWithCount: "收件箱,{count} 条未读";
|
|
41
|
+
readonly loadingInbox: "正在加载收件箱…";
|
|
42
|
+
readonly inboxEmptyTitle: "收件箱是空的";
|
|
43
|
+
readonly inboxEmptyHint: "你参与的 Thread 有新活动、或有人提到你时,会出现在这里";
|
|
36
44
|
readonly inboxTimeYesterday: "昨天";
|
|
37
|
-
readonly
|
|
45
|
+
readonly inboxHeaderThreads: "{count} 个 Thread";
|
|
46
|
+
readonly inboxHeaderUnread: "{count} 条未读";
|
|
47
|
+
readonly inboxHeaderMentions: "{count} 条提及";
|
|
48
|
+
readonly inboxRowUnread: "{count} 条未读";
|
|
49
|
+
readonly inboxRowUnreadMentions: "{count} 条未读,其中 {mentions} 条提及";
|
|
50
|
+
readonly inboxRowActor: "最新来自 {name}";
|
|
51
|
+
readonly inboxSectionNeedsMe: "需要我";
|
|
52
|
+
readonly inboxSectionRecent: "最近活跃";
|
|
38
53
|
readonly channelName: "名称";
|
|
39
54
|
readonly channelDescription: "说明";
|
|
40
55
|
readonly initialMembers: "初始成员";
|
|
@@ -100,12 +115,16 @@ export declare const zh: {
|
|
|
100
115
|
readonly taskStatusInReview: "待验收";
|
|
101
116
|
readonly taskStatusDone: "已完成";
|
|
102
117
|
readonly taskStatusClosed: "已关闭";
|
|
103
|
-
readonly taskMessageCount: "{count} 条消息";
|
|
104
118
|
readonly taskLabel: "Task #{number}";
|
|
105
119
|
readonly taskPending: "Task …";
|
|
106
120
|
readonly openTask: "打开 Task #{number}";
|
|
107
121
|
readonly openThread: "打开讨论";
|
|
122
|
+
readonly openTaskUnread: "打开 Task #{number}({count} 条新动态)";
|
|
123
|
+
readonly openThreadUnread: "打开讨论({count} 条新动态)";
|
|
108
124
|
readonly threadLabel: "讨论";
|
|
125
|
+
readonly recentActivity: "最近活动 {time}";
|
|
126
|
+
readonly replyAction: "回复";
|
|
127
|
+
readonly claimers: "由 {names} 处理";
|
|
109
128
|
readonly asTask: "作为任务";
|
|
110
129
|
readonly promoteToTask: "转为 Task";
|
|
111
130
|
readonly promotingTask: "正在转为 Task…";
|
|
@@ -167,6 +186,15 @@ export declare const en: {
|
|
|
167
186
|
readonly teamMode: "Team mode";
|
|
168
187
|
readonly workspaceSections: "Workspace sections";
|
|
169
188
|
readonly addAgent: "Add Agent";
|
|
189
|
+
readonly importAgentTitle: "Bring in from another Workspace";
|
|
190
|
+
readonly importAgent: "Bring in";
|
|
191
|
+
readonly importingAgent: "Joining…";
|
|
192
|
+
readonly importAgentNotice: "Choose an existing Agent to join this Workspace. Identity, memory, and session stay unchanged; join Channels separately.";
|
|
193
|
+
readonly emptyImportAgents: "No Agents available to bring in.";
|
|
194
|
+
readonly withdrawAgent: "Withdraw from this Workspace";
|
|
195
|
+
readonly withdrawAgentTitle: "Withdraw {name}?";
|
|
196
|
+
readonly withdrawAgentNotice: "Leave only this Workspace: exit its Channels, release active Claims, and clear Attention. Work elsewhere, the session, and private memory stay unchanged.";
|
|
197
|
+
readonly archiveOtherWorkspaces: "Also hides this Agent in {count} other Workspace(s).";
|
|
170
198
|
readonly cancel: "Cancel";
|
|
171
199
|
readonly close: "Close";
|
|
172
200
|
readonly copyCode: "Copy";
|
|
@@ -184,14 +212,20 @@ export declare const en: {
|
|
|
184
212
|
readonly statusError: "Error";
|
|
185
213
|
readonly statusUnavailable: "Unavailable";
|
|
186
214
|
readonly addChannel: "New Channel";
|
|
187
|
-
readonly
|
|
188
|
-
readonly
|
|
189
|
-
readonly loadingInbox: "Loading
|
|
190
|
-
readonly inboxEmptyTitle: "
|
|
191
|
-
readonly inboxEmptyHint: "
|
|
192
|
-
readonly inboxTimeToday: "Today";
|
|
215
|
+
readonly inboxTitle: "Inbox";
|
|
216
|
+
readonly inboxTitleWithCount: "Inbox, {count} unread";
|
|
217
|
+
readonly loadingInbox: "Loading Inbox…";
|
|
218
|
+
readonly inboxEmptyTitle: "Your Inbox is empty";
|
|
219
|
+
readonly inboxEmptyHint: "Threads you take part in appear here when they have new activity or mention you";
|
|
193
220
|
readonly inboxTimeYesterday: "Yesterday";
|
|
194
|
-
readonly
|
|
221
|
+
readonly inboxHeaderThreads: "{count} Thread(s)";
|
|
222
|
+
readonly inboxHeaderUnread: "{count} unread";
|
|
223
|
+
readonly inboxHeaderMentions: "{count} mention(s)";
|
|
224
|
+
readonly inboxRowUnread: "{count} unread";
|
|
225
|
+
readonly inboxRowUnreadMentions: "{count} unread, {mentions} mention(s)";
|
|
226
|
+
readonly inboxRowActor: "Latest from {name}";
|
|
227
|
+
readonly inboxSectionNeedsMe: "Needs me";
|
|
228
|
+
readonly inboxSectionRecent: "Recently active";
|
|
195
229
|
readonly channelName: "Name";
|
|
196
230
|
readonly channelDescription: "Description";
|
|
197
231
|
readonly initialMembers: "Initial members";
|
|
@@ -257,12 +291,16 @@ export declare const en: {
|
|
|
257
291
|
readonly taskStatusInReview: "In review";
|
|
258
292
|
readonly taskStatusDone: "Done";
|
|
259
293
|
readonly taskStatusClosed: "Closed";
|
|
260
|
-
readonly taskMessageCount: "{count} messages";
|
|
261
294
|
readonly taskLabel: "Task #{number}";
|
|
262
295
|
readonly taskPending: "Task …";
|
|
263
296
|
readonly openTask: "Open Task #{number}";
|
|
264
297
|
readonly openThread: "Open thread";
|
|
298
|
+
readonly openTaskUnread: "Open Task #{number} ({count} new updates)";
|
|
299
|
+
readonly openThreadUnread: "Open thread ({count} new updates)";
|
|
265
300
|
readonly threadLabel: "Thread";
|
|
301
|
+
readonly recentActivity: "Last activity {time}";
|
|
302
|
+
readonly replyAction: "Reply";
|
|
303
|
+
readonly claimers: "Handled by {names}";
|
|
266
304
|
readonly asTask: "As task";
|
|
267
305
|
readonly promoteToTask: "Convert to Task";
|
|
268
306
|
readonly promotingTask: "Converting to Task…";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/client/locales.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+KL,CAAA;AAEV,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+KL,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,EAAE,CAAA"}
|
|
@@ -10,6 +10,15 @@ export const zh = {
|
|
|
10
10
|
teamMode: '团队模式',
|
|
11
11
|
workspaceSections: '工作区内容',
|
|
12
12
|
addAgent: '添加 Agent',
|
|
13
|
+
importAgentTitle: '从其他 Workspace 引入',
|
|
14
|
+
importAgent: '引入',
|
|
15
|
+
importingAgent: '引入中…',
|
|
16
|
+
importAgentNotice: '选择已有 Agent 加入当前 Workspace。身份、记忆与会话保持不变;Channel 仍需另行加入。',
|
|
17
|
+
emptyImportAgents: '没有可引入的 Agent。',
|
|
18
|
+
withdrawAgent: '从此 Workspace 撤回',
|
|
19
|
+
withdrawAgentTitle: '撤回 {name}?',
|
|
20
|
+
withdrawAgentNotice: '仅撤出当前 Workspace:退出此处所有 Channel、释放活跃 Claim 并清除 Attention。其他 Workspace 的工作、会话和私有记忆不受影响。',
|
|
21
|
+
archiveOtherWorkspaces: '同时从其他 {count} 个 Workspace 收起。',
|
|
13
22
|
cancel: '取消',
|
|
14
23
|
close: '关闭',
|
|
15
24
|
copyCode: '复制',
|
|
@@ -27,14 +36,20 @@ export const zh = {
|
|
|
27
36
|
statusError: '错误',
|
|
28
37
|
statusUnavailable: '不可用',
|
|
29
38
|
addChannel: '新建频道',
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
loadingInbox: '
|
|
33
|
-
inboxEmptyTitle: '
|
|
34
|
-
inboxEmptyHint: '
|
|
35
|
-
inboxTimeToday: '今天',
|
|
39
|
+
inboxTitle: '收件箱',
|
|
40
|
+
inboxTitleWithCount: '收件箱,{count} 条未读',
|
|
41
|
+
loadingInbox: '正在加载收件箱…',
|
|
42
|
+
inboxEmptyTitle: '收件箱是空的',
|
|
43
|
+
inboxEmptyHint: '你参与的 Thread 有新活动、或有人提到你时,会出现在这里',
|
|
36
44
|
inboxTimeYesterday: '昨天',
|
|
37
|
-
|
|
45
|
+
inboxHeaderThreads: '{count} 个 Thread',
|
|
46
|
+
inboxHeaderUnread: '{count} 条未读',
|
|
47
|
+
inboxHeaderMentions: '{count} 条提及',
|
|
48
|
+
inboxRowUnread: '{count} 条未读',
|
|
49
|
+
inboxRowUnreadMentions: '{count} 条未读,其中 {mentions} 条提及',
|
|
50
|
+
inboxRowActor: '最新来自 {name}',
|
|
51
|
+
inboxSectionNeedsMe: '需要我',
|
|
52
|
+
inboxSectionRecent: '最近活跃',
|
|
38
53
|
channelName: '名称',
|
|
39
54
|
channelDescription: '说明',
|
|
40
55
|
initialMembers: '初始成员',
|
|
@@ -100,12 +115,16 @@ export const zh = {
|
|
|
100
115
|
taskStatusInReview: '待验收',
|
|
101
116
|
taskStatusDone: '已完成',
|
|
102
117
|
taskStatusClosed: '已关闭',
|
|
103
|
-
taskMessageCount: '{count} 条消息',
|
|
104
118
|
taskLabel: 'Task #{number}',
|
|
105
119
|
taskPending: 'Task …',
|
|
106
120
|
openTask: '打开 Task #{number}',
|
|
107
121
|
openThread: '打开讨论',
|
|
122
|
+
openTaskUnread: '打开 Task #{number}({count} 条新动态)',
|
|
123
|
+
openThreadUnread: '打开讨论({count} 条新动态)',
|
|
108
124
|
threadLabel: '讨论',
|
|
125
|
+
recentActivity: '最近活动 {time}',
|
|
126
|
+
replyAction: '回复',
|
|
127
|
+
claimers: '由 {names} 处理',
|
|
109
128
|
asTask: '作为任务',
|
|
110
129
|
promoteToTask: '转为 Task',
|
|
111
130
|
promotingTask: '正在转为 Task…',
|
|
@@ -167,6 +186,15 @@ export const en = {
|
|
|
167
186
|
teamMode: 'Team mode',
|
|
168
187
|
workspaceSections: 'Workspace sections',
|
|
169
188
|
addAgent: 'Add Agent',
|
|
189
|
+
importAgentTitle: 'Bring in from another Workspace',
|
|
190
|
+
importAgent: 'Bring in',
|
|
191
|
+
importingAgent: 'Joining…',
|
|
192
|
+
importAgentNotice: 'Choose an existing Agent to join this Workspace. Identity, memory, and session stay unchanged; join Channels separately.',
|
|
193
|
+
emptyImportAgents: 'No Agents available to bring in.',
|
|
194
|
+
withdrawAgent: 'Withdraw from this Workspace',
|
|
195
|
+
withdrawAgentTitle: 'Withdraw {name}?',
|
|
196
|
+
withdrawAgentNotice: 'Leave only this Workspace: exit its Channels, release active Claims, and clear Attention. Work elsewhere, the session, and private memory stay unchanged.',
|
|
197
|
+
archiveOtherWorkspaces: 'Also hides this Agent in {count} other Workspace(s).',
|
|
170
198
|
cancel: 'Cancel',
|
|
171
199
|
close: 'Close',
|
|
172
200
|
copyCode: 'Copy',
|
|
@@ -184,14 +212,20 @@ export const en = {
|
|
|
184
212
|
statusError: 'Error',
|
|
185
213
|
statusUnavailable: 'Unavailable',
|
|
186
214
|
addChannel: 'New Channel',
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
loadingInbox: 'Loading
|
|
190
|
-
inboxEmptyTitle: '
|
|
191
|
-
inboxEmptyHint: '
|
|
192
|
-
inboxTimeToday: 'Today',
|
|
215
|
+
inboxTitle: 'Inbox',
|
|
216
|
+
inboxTitleWithCount: 'Inbox, {count} unread',
|
|
217
|
+
loadingInbox: 'Loading Inbox…',
|
|
218
|
+
inboxEmptyTitle: 'Your Inbox is empty',
|
|
219
|
+
inboxEmptyHint: 'Threads you take part in appear here when they have new activity or mention you',
|
|
193
220
|
inboxTimeYesterday: 'Yesterday',
|
|
194
|
-
|
|
221
|
+
inboxHeaderThreads: '{count} Thread(s)',
|
|
222
|
+
inboxHeaderUnread: '{count} unread',
|
|
223
|
+
inboxHeaderMentions: '{count} mention(s)',
|
|
224
|
+
inboxRowUnread: '{count} unread',
|
|
225
|
+
inboxRowUnreadMentions: '{count} unread, {mentions} mention(s)',
|
|
226
|
+
inboxRowActor: 'Latest from {name}',
|
|
227
|
+
inboxSectionNeedsMe: 'Needs me',
|
|
228
|
+
inboxSectionRecent: 'Recently active',
|
|
195
229
|
channelName: 'Name',
|
|
196
230
|
channelDescription: 'Description',
|
|
197
231
|
initialMembers: 'Initial members',
|
|
@@ -257,12 +291,16 @@ export const en = {
|
|
|
257
291
|
taskStatusInReview: 'In review',
|
|
258
292
|
taskStatusDone: 'Done',
|
|
259
293
|
taskStatusClosed: 'Closed',
|
|
260
|
-
taskMessageCount: '{count} messages',
|
|
261
294
|
taskLabel: 'Task #{number}',
|
|
262
295
|
taskPending: 'Task …',
|
|
263
296
|
openTask: 'Open Task #{number}',
|
|
264
297
|
openThread: 'Open thread',
|
|
298
|
+
openTaskUnread: 'Open Task #{number} ({count} new updates)',
|
|
299
|
+
openThreadUnread: 'Open thread ({count} new updates)',
|
|
265
300
|
threadLabel: 'Thread',
|
|
301
|
+
recentActivity: 'Last activity {time}',
|
|
302
|
+
replyAction: 'Reply',
|
|
303
|
+
claimers: 'Handled by {names}',
|
|
266
304
|
asTask: 'As task',
|
|
267
305
|
promoteToTask: 'Convert to Task',
|
|
268
306
|
promotingTask: 'Converting to Task…',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
2
|
-
import type { AgentTeamAddMemberRequest, AgentTeamArchiveChannelRequest, AgentTeamArchiveChannelResult, AgentTeamArchiveMemberRequest, AgentTeamArchiveMemberResult, AgentTeamChannelRef, AgentTeamClientMemberStatus, AgentTeamClearMemberContextRequest, AgentTeamClearMemberContextResult, AgentTeamCreateChannelRequest, AgentTeamCreateChannelResult, AgentTeamInbox, AgentTeamInboxRequest, AgentTeamJoinChannelRequest, AgentTeamJoinChannelResult, AgentTeamGetAttachmentRequest, AgentTeamGetAttachmentResult, AgentTeamPutAttachmentRequest, AgentTeamPutAttachmentResult, AgentTeamMemberResult, AgentTeamRecoverMemberRequest, AgentTeamRecoverMemberResult, AgentTeamMembersRequest, AgentTeamRemoveChannelMemberRequest, AgentTeamRemoveChannelMemberResult, AgentTeamReplyRequest, AgentTeamResolveTaskRefsRequest, AgentTeamResolveTaskRefsResult, AgentTeamReplyResult, AgentTeamConfirmationRequired, AgentTeamThreadHistory, AgentTeamThreadHistoryRequest, AgentTeamThreadObservations, AgentTeamThreadObservationsRequest, AgentTeamThreadReadRequest, AgentTeamThreadReadResult, AgentTeamPromoteThreadRequest, AgentTeamPromoteThreadResult, AgentTeamTaskRequest, AgentTeamTaskResult, AgentTeamSendMessageRequest, AgentTeamSendMessageResult, AgentTeamUpdateChannelRequest, AgentTeamUpdateChannelResult, AgentTeamUpdateMemberRequest, AgentTeamView, AgentTeamViewRequest } from '@wowyuarm/dsh-agent-team/types';
|
|
2
|
+
import type { AgentTeamAddMemberRequest, AgentTeamArchiveChannelRequest, AgentTeamArchiveChannelResult, AgentTeamArchiveMemberRequest, AgentTeamArchiveMemberResult, AgentTeamChannelRef, AgentTeamClientMemberStatus, AgentTeamClearMemberContextRequest, AgentTeamClearMemberContextResult, AgentTeamCreateChannelRequest, AgentTeamCreateChannelResult, AgentTeamInbox, AgentTeamInboxRequest, AgentTeamJoinWorkspaceRequest, AgentTeamJoinWorkspaceResult, AgentTeamLeaveWorkspaceRequest, AgentTeamLeaveWorkspaceResult, AgentTeamJoinChannelRequest, AgentTeamJoinChannelResult, AgentTeamGetAttachmentRequest, AgentTeamGetAttachmentResult, AgentTeamPutAttachmentRequest, AgentTeamPutAttachmentResult, AgentTeamMemberResult, AgentTeamRecoverMemberRequest, AgentTeamRecoverMemberResult, AgentTeamMembersRequest, AgentTeamRemoveChannelMemberRequest, AgentTeamRemoveChannelMemberResult, AgentTeamReplyRequest, AgentTeamResolveTaskRefsRequest, AgentTeamResolveTaskRefsResult, AgentTeamReplyResult, AgentTeamConfirmationRequired, AgentTeamThreadHistory, AgentTeamThreadHistoryRequest, AgentTeamThreadObservations, AgentTeamThreadObservationsRequest, AgentTeamThreadReadRequest, AgentTeamThreadReadResult, AgentTeamPromoteThreadRequest, AgentTeamPromoteThreadResult, AgentTeamTaskRequest, AgentTeamTaskResult, AgentTeamSendMessageRequest, AgentTeamSendMessageResult, AgentTeamUpdateChannelRequest, AgentTeamUpdateChannelResult, AgentTeamUpdateMemberRequest, AgentTeamView, AgentTeamViewRequest } from '@wowyuarm/dsh-agent-team/types';
|
|
3
3
|
import type { RemoteResult } from '@deepseek-ai/dsh-typert-protocol';
|
|
4
4
|
import type { TeamNavigationActions, TeamNavigationSnapshot } from './navigation.ts';
|
|
5
5
|
import type { TeamChangeListener, TeamChangeScope } from './team-changes.ts';
|
|
@@ -61,6 +61,8 @@ export type TeamSidebarProps = PropsRuntime<'sidebar.workspaces'> & PropsLocale<
|
|
|
61
61
|
*/
|
|
62
62
|
clearMemberContext: (request: AgentTeamClearMemberContextRequest) => Promise<RemoteResult<AgentTeamClearMemberContextResult>>;
|
|
63
63
|
archiveMember: (request: AgentTeamArchiveMemberRequest) => Promise<RemoteResult<AgentTeamArchiveMemberResult>>;
|
|
64
|
+
joinWorkspace: (request: AgentTeamJoinWorkspaceRequest) => Promise<RemoteResult<AgentTeamJoinWorkspaceResult>>;
|
|
65
|
+
leaveWorkspace: (request: AgentTeamLeaveWorkspaceRequest) => Promise<RemoteResult<AgentTeamLeaveWorkspaceResult>>;
|
|
64
66
|
joinChannel: (request: AgentTeamJoinChannelRequest) => Promise<RemoteResult<AgentTeamJoinChannelResult>>;
|
|
65
67
|
removeChannelMember: (request: AgentTeamRemoveChannelMemberRequest) => Promise<RemoteResult<AgentTeamRemoveChannelMemberResult>>;
|
|
66
68
|
/** Session-independent Host model catalog (`llm.models`); needs no live Member. */
|
|
@@ -102,6 +104,5 @@ export interface TeamMemberGroup {
|
|
|
102
104
|
}
|
|
103
105
|
export type TeamFooterProps = PropsRuntime<'sidebar.footer.action'> & PropsLocale<'team'> & TeamNavigationActions & {
|
|
104
106
|
navigation: TeamNavigationSource;
|
|
105
|
-
loadMemberGroups: () => Promise<readonly TeamMemberGroup[]>;
|
|
106
107
|
};
|
|
107
108
|
//# sourceMappingURL=slots.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../src/client/slots.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../src/client/slots.ts"],"names":[],"mappings":"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"}
|