@nanmicoder/dsh-agent-teams 0.1.16-rc.3 → 0.1.17-rc.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 +12 -9
- package/README_ZH.md +11 -9
- package/compatibility.json +17 -4
- package/lib/client/ActivityPanel.js +4 -4
- package/lib/client/index.js +9 -3
- package/lib/client/session-navigation.js +8 -2
- package/lib/client.js +24 -14
- package/lib/client.js.map +1 -1
- package/lib/harness-compat.js +24 -4
- package/lib/members.js +1 -4
- package/lib/types/client/ActivityPanel.d.ts +2 -1
- package/lib/types/client/session-navigation.d.ts +8 -2
- package/lib/types/harness-compat.d.ts +4 -3
- package/package.json +49 -47
- package/release-notes/v0.1.17-rc.1.md +20 -0
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ Ask in natural language. The plugin provides the team protocol, 13 coordination
|
|
|
30
30
|
|
|
31
31
|
## Releases
|
|
32
32
|
|
|
33
|
-
[v0.1.
|
|
33
|
+
[v0.1.17-rc.1](./release-notes/v0.1.17-rc.1.md) supports DeepSeek Harness `0.1.5-rc.1` on the npm `next` channel. It adapts subagent delivery, explicit member initialization, and Web panel navigation while retaining three older host targets.
|
|
34
34
|
|
|
35
35
|
## Why AgentTeams?
|
|
36
36
|
|
|
@@ -49,18 +49,19 @@ The conversation card and activity panel use Harness's official locale service.
|
|
|
49
49
|
|
|
50
50
|
## Install and choose versions
|
|
51
51
|
|
|
52
|
-
**Recommended pair: DeepSeek Harness `0.1.
|
|
52
|
+
**Recommended pair: DeepSeek Harness `0.1.5-rc.1` + AgentTeams `0.1.17-rc.1`. Both are prereleases.**
|
|
53
53
|
|
|
54
54
|
| Use case | DeepSeek Harness | AgentTeams plugin |
|
|
55
55
|
| --- | --- | --- |
|
|
56
|
-
| **Recommended installation** | **`0.1.
|
|
57
|
-
|
|
|
58
|
-
|
|
|
56
|
+
| **Recommended installation** | **`0.1.5-rc.1`** | **`0.1.17-rc.1`** |
|
|
57
|
+
| Retaining an older RC | `0.1.2-rc.1` | `0.1.17-rc.1` |
|
|
58
|
+
| Developer Alpha testing | `0.1.2-alpha.5` | `0.1.17-rc.1` |
|
|
59
|
+
| Retaining an older Alpha | `0.1.2-alpha.2` | `0.1.17-rc.1` |
|
|
59
60
|
|
|
60
61
|
### 1. Install DeepSeek Harness
|
|
61
62
|
|
|
62
63
|
```sh
|
|
63
|
-
npm install --global @deepseek-ai/dsh@0.1.
|
|
64
|
+
npm install --global @deepseek-ai/dsh@0.1.5-rc.1
|
|
64
65
|
dsh --version
|
|
65
66
|
```
|
|
66
67
|
|
|
@@ -68,15 +69,15 @@ Skip this if you already run this version. Alpha is opt-in: select an exact Alph
|
|
|
68
69
|
|
|
69
70
|
### 2. Install the AgentTeams plugin
|
|
70
71
|
|
|
71
|
-
|
|
72
|
+
Install into the `web` profile. Replace the profile name if needed:
|
|
72
73
|
|
|
73
74
|
```sh
|
|
74
|
-
dsh plugin --profile web add --save-exact @nanmicoder/dsh-agent-teams@0.1.
|
|
75
|
+
dsh plugin --profile web add --save-exact @nanmicoder/dsh-agent-teams@0.1.17-rc.1
|
|
75
76
|
```
|
|
76
77
|
|
|
77
78
|
**After installation, stop and restart Harness for that profile, then refresh the browser.**
|
|
78
79
|
|
|
79
|
-
Plugin
|
|
80
|
+
Plugin prereleases use npm `next`; use the exact-version command above. `latest` is not the recommended entry for this host pair. See the [source installation guide](./docs/maintenance-workflow.md) and [release verification](./docs/releases/v0.1.17-rc.1/README.md).
|
|
80
81
|
|
|
81
82
|
> Desktop users must check the app's embedded Harness core; upgrading the global CLI does not upgrade it. For older `0.1.0-*` / `0.1.1-*` or unlisted hosts, keep a working pair and follow the [older-version and diagnostic guide](./docs/maintenance-workflow.md).
|
|
82
83
|
|
|
@@ -123,6 +124,8 @@ same deterministic activation through a gesture boundary: any genuine user
|
|
|
123
124
|
message starting with `/agent-teams` activates the protocol for the rest of
|
|
124
125
|
the text. Mid-sentence mentions stay ordinary prose.
|
|
125
126
|
|
|
127
|
+
Historical panels require saved team state or archives. Sessions from early versions that deleted teams without retaining archives do not yet support reconstructing the full panel from logs.
|
|
128
|
+
|
|
126
129
|
## Configuration
|
|
127
130
|
|
|
128
131
|
Defaults work without extra setup. A trusted profile can override member behavior:
|
package/README_ZH.md
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
## 版本更新
|
|
32
32
|
|
|
33
|
-
[v0.1.
|
|
33
|
+
[v0.1.17-rc.1](./release-notes/v0.1.17-rc.1.md) 适配 DeepSeek Harness `0.1.5-rc.1`,发布到 npm `next` 渠道。新增子代理投递、成员初始化和 Web 面板导航适配,保留三个旧宿主目标。
|
|
34
34
|
|
|
35
35
|
## 为什么需要 AgentTeams?
|
|
36
36
|
|
|
@@ -48,18 +48,19 @@
|
|
|
48
48
|
|
|
49
49
|
## 安装与版本选择
|
|
50
50
|
|
|
51
|
-
**推荐组合:DeepSeek Harness `0.1.
|
|
51
|
+
**推荐组合:DeepSeek Harness `0.1.5-rc.1` + AgentTeams `0.1.17-rc.1`。两者均为预发布版本。**
|
|
52
52
|
|
|
53
53
|
| 使用场景 | DeepSeek Harness | AgentTeams 插件 |
|
|
54
54
|
| --- | --- | --- |
|
|
55
|
-
| **推荐安装** | **`0.1.
|
|
56
|
-
|
|
|
57
|
-
|
|
|
55
|
+
| **推荐安装** | **`0.1.5-rc.1`** | **`0.1.17-rc.1`** |
|
|
56
|
+
| 保留旧 RC | `0.1.2-rc.1` | `0.1.17-rc.1` |
|
|
57
|
+
| 开发者测试 Alpha | `0.1.2-alpha.5` | `0.1.17-rc.1` |
|
|
58
|
+
| 保留旧 Alpha | `0.1.2-alpha.2` | `0.1.17-rc.1` |
|
|
58
59
|
|
|
59
60
|
### 1. 安装 DeepSeek Harness
|
|
60
61
|
|
|
61
62
|
```sh
|
|
62
|
-
npm install --global @deepseek-ai/dsh@0.1.
|
|
63
|
+
npm install --global @deepseek-ai/dsh@0.1.5-rc.1
|
|
63
64
|
dsh --version
|
|
64
65
|
```
|
|
65
66
|
|
|
@@ -67,15 +68,15 @@ dsh --version
|
|
|
67
68
|
|
|
68
69
|
### 2. 安装 AgentTeams 插件
|
|
69
70
|
|
|
70
|
-
|
|
71
|
+
安装到 `web` profile;使用其他 profile 时替换名称:
|
|
71
72
|
|
|
72
73
|
```sh
|
|
73
|
-
dsh plugin --profile web add --save-exact @nanmicoder/dsh-agent-teams@0.1.
|
|
74
|
+
dsh plugin --profile web add --save-exact @nanmicoder/dsh-agent-teams@0.1.17-rc.1
|
|
74
75
|
```
|
|
75
76
|
|
|
76
77
|
**安装后,停止并重新启动该 profile 的 Harness 进程,再刷新浏览器。**
|
|
77
78
|
|
|
78
|
-
|
|
79
|
+
插件预发布使用 npm `next`,请使用上面的精确版本命令;`latest` 不是这组宿主的推荐安装入口。源码安装见[维护指南](./docs/maintenance-workflow.md),验证范围见[本版验收记录](./docs/releases/v0.1.17-rc.1/README.md)。
|
|
79
80
|
|
|
80
81
|
> Desktop 用户需核对应用内置的 Harness 核心;全局 CLI 升级不会升级桌面内核。旧 `0.1.0-*` / `0.1.1-*` 或其他未列出的宿主,请先保留已工作的组合,参考[旧版本与诊断指引](./docs/maintenance-workflow.md)。
|
|
81
82
|
|
|
@@ -135,6 +136,7 @@ dsh plugin --profile web add --save-exact @nanmicoder/dsh-agent-teams@0.1.16-rc.
|
|
|
135
136
|
- 一个队长同一时间只能带一个活动团队。
|
|
136
137
|
- 没有开放任务的空闲成员会自动续领就绪任务;仍持有开放 attempt 的空闲成员会停驻,队长可发消息让其沿用原 attempt 继续,或显式转派;冷重启遗留的开放任务才会生成新 attempt。暂时无法实时投递的消息会持久保存在邮箱中并在后续状态边界重投。
|
|
137
138
|
- 状态使用文件持久化,并在单个 DSH 进程内串行操作;多个进程同时修改同一团队不保证一致。
|
|
139
|
+
- 历史面板依赖保存的团队状态或归档;早期版本删除团队时未保留归档的会话,暂不支持从日志重建完整面板。
|
|
138
140
|
- 活动面板如实展示持久化状态;模型偶尔可能完成工作却没有按协议更新任务状态。
|
|
139
141
|
|
|
140
142
|
完整工具列表、状态模型、Web UI 行为、配置与已知限制见 [docs/usage.md](./docs/usage.md)。
|
package/compatibility.json
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"recommendedHost": "0.1.
|
|
3
|
+
"recommendedHost": "0.1.5-rc.1",
|
|
4
4
|
"previewTag": "next",
|
|
5
5
|
"supportedHosts": [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
{
|
|
7
|
+
"version": "0.1.5-rc.1",
|
|
8
|
+
"track": "recommended"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"version": "0.1.2-rc.1",
|
|
12
|
+
"track": "legacy"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"version": "0.1.2-alpha.5",
|
|
16
|
+
"track": "preview"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"version": "0.1.2-alpha.2",
|
|
20
|
+
"track": "legacy"
|
|
21
|
+
}
|
|
9
22
|
]
|
|
10
23
|
}
|
|
@@ -410,7 +410,7 @@ function historicCardTeam(data, owner) {
|
|
|
410
410
|
captainInbox: [],
|
|
411
411
|
};
|
|
412
412
|
}
|
|
413
|
-
export function ActivityPanel({ sessionsList, modelDirectories, openMember, t }) {
|
|
413
|
+
export function ActivityPanel({ sessionsList, modelDirectories, openMember, t, conversationVisible = true }) {
|
|
414
414
|
// Navigating to a member's subagent transcript is an explicit departure:
|
|
415
415
|
// hide the floater immediately instead of waiting out the autocollapse
|
|
416
416
|
// grace, so the panel never lingers over the member session.
|
|
@@ -439,7 +439,7 @@ export function ActivityPanel({ sessionsList, modelDirectories, openMember, t })
|
|
|
439
439
|
setOpen(false);
|
|
440
440
|
setOpenOwner(undefined);
|
|
441
441
|
window.requestAnimationFrame(() => {
|
|
442
|
-
document.querySelector('[data-composer-card] textarea')?.focus();
|
|
442
|
+
document.querySelector('[data-composer-card] [contenteditable="true"][role="textbox"], [data-composer-card] textarea')?.focus();
|
|
443
443
|
});
|
|
444
444
|
};
|
|
445
445
|
const { teams, archivedTeams } = useSyncExternalStore(subscribeActivitySnapshots, getActivitySnapshotsSnapshot);
|
|
@@ -447,7 +447,7 @@ export function ActivityPanel({ sessionsList, modelDirectories, openMember, t })
|
|
|
447
447
|
const currentRef = useRef(current);
|
|
448
448
|
useEffect(() => { currentRef.current = current; }, [current]);
|
|
449
449
|
const mountedAtRef = useRef(performance.now());
|
|
450
|
-
const expanded = activityPanelExpandedForSession(open, openOwner, current);
|
|
450
|
+
const expanded = conversationVisible && activityPanelExpandedForSession(open, openOwner, current);
|
|
451
451
|
const geometry = useMemo(() => resolvePanelGeometry(layout, bounds), [layout, bounds]);
|
|
452
452
|
const compact = compactPanelForBounds(bounds);
|
|
453
453
|
const commitLayout = useCallback((next) => {
|
|
@@ -754,7 +754,7 @@ export function ActivityPanel({ sessionsList, modelDirectories, openMember, t })
|
|
|
754
754
|
maxHeight: panelMaximumHeight(geometry, bounds),
|
|
755
755
|
transform: `translate3d(${geometry.x}px, ${geometry.y}px, 0)`,
|
|
756
756
|
};
|
|
757
|
-
if (!hasTeams && !expanded)
|
|
757
|
+
if (!conversationVisible || (!hasTeams && !expanded))
|
|
758
758
|
return null;
|
|
759
759
|
return (_jsxs(_Fragment, { children: [!expanded && (_jsx(CollapsedBadge, { count: visibleCount, busy: busy, t: t, onClick: () => {
|
|
760
760
|
if (current === undefined)
|
package/lib/client/index.js
CHANGED
|
@@ -5,7 +5,8 @@ import { agentTeamsCardDefinition } from "./agent-teams-card-definition.js";
|
|
|
5
5
|
import { AGENT_TEAMS_LOCALE_NAMESPACE, en, zh, } from "./locales.js";
|
|
6
6
|
import { openAgentTeamMember } from "./session-navigation.js";
|
|
7
7
|
/** Required services: conversation nodes, slots, sessions navigation, and locale. */
|
|
8
|
-
export const inject = ['uiConversation', 'slots', 'sessions', 'locale', 'modelDirectories'];
|
|
8
|
+
export const inject = ['uiConversation', 'slots', 'sessions', 'locale', 'modelDirectories', 'layout'];
|
|
9
|
+
const useLegacyPanelInfo = select => select({ activePanelId: null });
|
|
9
10
|
/** The replayed user message is the canonical transcript entry. */
|
|
10
11
|
function HiddenAgentTeamsCommand() {
|
|
11
12
|
return null;
|
|
@@ -18,11 +19,16 @@ function HiddenAgentTeamsCommand() {
|
|
|
18
19
|
export function apply(ctx) {
|
|
19
20
|
ctx.effect(() => ctx.locale.register(AGENT_TEAMS_LOCALE_NAMESPACE, { zh, en }), 'agent-teams: dictionaries');
|
|
20
21
|
const openMember = (parentId, childId) => {
|
|
21
|
-
void openAgentTeamMember(ctx.sessions, parentId, childId).catch((error) => {
|
|
22
|
+
void openAgentTeamMember(ctx.sessions, parentId, childId, ctx.layout).catch((error) => {
|
|
22
23
|
console.warn(`agent-teams: failed to open member transcript ${childId}: ${String(error)}`);
|
|
23
24
|
});
|
|
24
25
|
};
|
|
25
|
-
const Panel = ({ t }) =>
|
|
26
|
+
const Panel = ({ t, usePanelInfo }) => {
|
|
27
|
+
// A host's standard hook set is fixed for this mounted plugin instance.
|
|
28
|
+
const usePanel = usePanelInfo ?? useLegacyPanelInfo;
|
|
29
|
+
const conversationVisible = usePanel(panel => panel.activePanelId === null);
|
|
30
|
+
return (_jsx(ActivityPanel, { conversationVisible: conversationVisible, sessionsList: ctx.sessions.list, modelDirectories: ctx.modelDirectories, openMember: openMember, t: t }));
|
|
31
|
+
};
|
|
26
32
|
ctx.slots.inject('shell.overlay', () => ctx.slots.register({
|
|
27
33
|
name: 'shell.overlay',
|
|
28
34
|
id: 'agent-teams-activity',
|
|
@@ -5,17 +5,23 @@
|
|
|
5
5
|
* Harness rc.8 intentionally removed cold subagents from the ordinary session
|
|
6
6
|
* list. They must first be rediscovered in their parent's catalog, then opened
|
|
7
7
|
* with the exact parent/child/mode address. Older runtimes have only `open()`;
|
|
8
|
-
* the fallback preserves
|
|
8
|
+
* the fallback preserves ordinary-session navigation. New layouts also select
|
|
9
|
+
* the Conversation panel and cancel catalog refreshes superseded by navigation.
|
|
9
10
|
*/
|
|
10
|
-
export async function openAgentTeamMember(sessions, parentSessionId, childSessionId) {
|
|
11
|
+
export async function openAgentTeamMember(sessions, parentSessionId, childSessionId, layout) {
|
|
12
|
+
const navigation = layout?.beginNavigation?.();
|
|
11
13
|
if (sessions.openSubagent === undefined || sessions.refreshSubagents === undefined) {
|
|
12
14
|
sessions.open(childSessionId);
|
|
15
|
+
layout?.selectPanel?.(null);
|
|
13
16
|
return 'session';
|
|
14
17
|
}
|
|
15
18
|
await sessions.refreshSubagents(parentSessionId);
|
|
19
|
+
if (navigation?.aborted)
|
|
20
|
+
return 'cancelled';
|
|
16
21
|
const retained = sessions.subagentAddress?.(childSessionId);
|
|
17
22
|
sessions.openSubagent(retained?.parentSessionId === parentSessionId
|
|
18
23
|
? retained
|
|
19
24
|
: { parentSessionId, childSessionId, mode: 'continuable' });
|
|
25
|
+
layout?.selectPanel?.(null);
|
|
20
26
|
return 'subagent';
|
|
21
27
|
}
|
package/lib/client.js
CHANGED
|
@@ -2692,7 +2692,7 @@ window.__ModuleLoader__.load({
|
|
|
2692
2692
|
captainInbox: []
|
|
2693
2693
|
};
|
|
2694
2694
|
}
|
|
2695
|
-
function ActivityPanel({ sessionsList, modelDirectories, openMember, t }) {
|
|
2695
|
+
function ActivityPanel({ sessionsList, modelDirectories, openMember, t, conversationVisible = true }) {
|
|
2696
2696
|
const navigateToSession = (parentId, childId) => {
|
|
2697
2697
|
setOpen(false);
|
|
2698
2698
|
setWasActive(false);
|
|
@@ -2722,7 +2722,7 @@ window.__ModuleLoader__.load({
|
|
|
2722
2722
|
setOpen(false);
|
|
2723
2723
|
setOpenOwner(void 0);
|
|
2724
2724
|
window.requestAnimationFrame(() => {
|
|
2725
|
-
document.querySelector("[data-composer-card] textarea")?.focus();
|
|
2725
|
+
document.querySelector("[data-composer-card] [contenteditable=\"true\"][role=\"textbox\"], [data-composer-card] textarea")?.focus();
|
|
2726
2726
|
});
|
|
2727
2727
|
};
|
|
2728
2728
|
const { teams, archivedTeams } = (0, react.useSyncExternalStore)(subscribeActivitySnapshots, getActivitySnapshotsSnapshot);
|
|
@@ -2732,7 +2732,7 @@ window.__ModuleLoader__.load({
|
|
|
2732
2732
|
currentRef.current = current;
|
|
2733
2733
|
}, [current]);
|
|
2734
2734
|
const mountedAtRef = (0, react.useRef)(performance.now());
|
|
2735
|
-
const expanded = activityPanelExpandedForSession(open, openOwner, current);
|
|
2735
|
+
const expanded = conversationVisible && activityPanelExpandedForSession(open, openOwner, current);
|
|
2736
2736
|
const geometry = (0, react.useMemo)(() => resolvePanelGeometry(layout, bounds), [layout, bounds]);
|
|
2737
2737
|
const compact = compactPanelForBounds(bounds);
|
|
2738
2738
|
const commitLayout = (0, react.useCallback)((next) => {
|
|
@@ -3006,7 +3006,7 @@ window.__ModuleLoader__.load({
|
|
|
3006
3006
|
maxHeight: panelMaximumHeight(geometry, bounds),
|
|
3007
3007
|
transform: `translate3d(${geometry.x}px, ${geometry.y}px, 0)`
|
|
3008
3008
|
};
|
|
3009
|
-
if (!hasTeams && !expanded) return null;
|
|
3009
|
+
if (!conversationVisible || !hasTeams && !expanded) return null;
|
|
3010
3010
|
return (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [!expanded && (0, react_jsx_runtime.jsx)(CollapsedBadge, {
|
|
3011
3011
|
count: visibleCount,
|
|
3012
3012
|
busy,
|
|
@@ -3620,20 +3620,25 @@ window.__ModuleLoader__.load({
|
|
|
3620
3620
|
* Harness rc.8 intentionally removed cold subagents from the ordinary session
|
|
3621
3621
|
* list. They must first be rediscovered in their parent's catalog, then opened
|
|
3622
3622
|
* with the exact parent/child/mode address. Older runtimes have only `open()`;
|
|
3623
|
-
* the fallback preserves
|
|
3623
|
+
* the fallback preserves ordinary-session navigation. New layouts also select
|
|
3624
|
+
* the Conversation panel and cancel catalog refreshes superseded by navigation.
|
|
3624
3625
|
*/
|
|
3625
|
-
async function openAgentTeamMember(sessions, parentSessionId, childSessionId) {
|
|
3626
|
+
async function openAgentTeamMember(sessions, parentSessionId, childSessionId, layout) {
|
|
3627
|
+
const navigation = layout?.beginNavigation?.();
|
|
3626
3628
|
if (sessions.openSubagent === void 0 || sessions.refreshSubagents === void 0) {
|
|
3627
3629
|
sessions.open(childSessionId);
|
|
3630
|
+
layout?.selectPanel?.(null);
|
|
3628
3631
|
return "session";
|
|
3629
3632
|
}
|
|
3630
3633
|
await sessions.refreshSubagents(parentSessionId);
|
|
3634
|
+
if (navigation?.aborted) return "cancelled";
|
|
3631
3635
|
const retained = sessions.subagentAddress?.(childSessionId);
|
|
3632
3636
|
sessions.openSubagent(retained?.parentSessionId === parentSessionId ? retained : {
|
|
3633
3637
|
parentSessionId,
|
|
3634
3638
|
childSessionId,
|
|
3635
3639
|
mode: "continuable"
|
|
3636
3640
|
});
|
|
3641
|
+
layout?.selectPanel?.(null);
|
|
3637
3642
|
return "subagent";
|
|
3638
3643
|
}
|
|
3639
3644
|
//#endregion
|
|
@@ -3644,8 +3649,10 @@ window.__ModuleLoader__.load({
|
|
|
3644
3649
|
"slots",
|
|
3645
3650
|
"sessions",
|
|
3646
3651
|
"locale",
|
|
3647
|
-
"modelDirectories"
|
|
3652
|
+
"modelDirectories",
|
|
3653
|
+
"layout"
|
|
3648
3654
|
];
|
|
3655
|
+
const useLegacyPanelInfo = (select) => select({ activePanelId: null });
|
|
3649
3656
|
/** The replayed user message is the canonical transcript entry. */
|
|
3650
3657
|
function HiddenAgentTeamsCommand() {
|
|
3651
3658
|
return null;
|
|
@@ -3661,16 +3668,19 @@ window.__ModuleLoader__.load({
|
|
|
3661
3668
|
en
|
|
3662
3669
|
}), "agent-teams: dictionaries");
|
|
3663
3670
|
const openMember = (parentId, childId) => {
|
|
3664
|
-
openAgentTeamMember(ctx.sessions, parentId, childId).catch((error) => {
|
|
3671
|
+
openAgentTeamMember(ctx.sessions, parentId, childId, ctx.layout).catch((error) => {
|
|
3665
3672
|
console.warn(`agent-teams: failed to open member transcript ${childId}: ${String(error)}`);
|
|
3666
3673
|
});
|
|
3667
3674
|
};
|
|
3668
|
-
const Panel = ({ t }) =>
|
|
3669
|
-
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
3675
|
+
const Panel = ({ t, usePanelInfo }) => {
|
|
3676
|
+
return (0, react_jsx_runtime.jsx)(ActivityPanel, {
|
|
3677
|
+
conversationVisible: (usePanelInfo ?? useLegacyPanelInfo)((panel) => panel.activePanelId === null),
|
|
3678
|
+
sessionsList: ctx.sessions.list,
|
|
3679
|
+
modelDirectories: ctx.modelDirectories,
|
|
3680
|
+
openMember,
|
|
3681
|
+
t
|
|
3682
|
+
});
|
|
3683
|
+
};
|
|
3674
3684
|
ctx.slots.inject("shell.overlay", () => ctx.slots.register({
|
|
3675
3685
|
name: "shell.overlay",
|
|
3676
3686
|
id: "agent-teams-activity",
|