@nanmicoder/dsh-agent-teams 0.1.13 → 0.1.14

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/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["css","css","IconBranchOutline16","_Fragment","IconPanelLeftOutline16","IconChevronDownOutline14"],"sources":["client/activity-model.js","client/activity-monitor.js","client/artwork.js","client/AgentTeamsCard.js","client/panel-geometry.js","client/ActivityPanel.js","client/agent-teams-card-definition.js","client/locales.js","client/session-navigation.js","client/index.js"],"sourcesContent":["/** Pure relationship projections used by the AgentTeams activity panel. */\n/** Reference-panel geometry: narrow nodes with enough room for curved edges. */\nexport const COMPACT_DAG_NODE_WIDTH = 92;\nexport const COMPACT_DAG_NODE_HEIGHT = 30;\nexport const COMPACT_DAG_COLUMN_GAP = 26;\nexport const COMPACT_DAG_ROW_GAP = 8;\n/** Use a fill-width grid when the task graph has no real dependency edges. */\nexport function usesParallelTaskGrid(tasks) {\n if (tasks.length === 0)\n return false;\n const taskIds = new Set(tasks.map((task) => task.id));\n return tasks.every((task) => task.dependencies.every((dependency) => !taskIds.has(dependency)));\n}\n/**\n * Whether an expanded activity panel still belongs to the current session.\n *\n * The panel is mounted in the root-scoped shell overlay, so React does not\n * remount it when the conversation route changes. Ownership keeps an expanded\n * panel from leaking onto the new-session screen (or another conversation)\n * while its local open state is being reset.\n */\nexport function activityPanelExpandedForSession(open, owner, current) {\n return open && owner !== undefined && owner === current;\n}\n/**\n * Resolve the task whose dependency chain should be highlighted.\n *\n * A pinned task is an explicit user choice. Keyboard focus takes precedence\n * over delayed pointer intent so an older hover timer cannot steal the active\n * chain from someone navigating the task map with the keyboard.\n */\nexport function dependencyFocusTaskId(pinnedTaskId, keyboardTaskId, hoverTaskId) {\n return pinnedTaskId ?? keyboardTaskId ?? hoverTaskId;\n}\n/** Group tasks by their precomputed dependency depth. */\nexport function taskStages(tasks) {\n const byDepth = new Map();\n for (const task of tasks) {\n const depth = Number.isFinite(task.depth) ? Math.max(0, Math.floor(task.depth)) : 0;\n const stage = byDepth.get(depth) ?? [];\n stage.push(task);\n byDepth.set(depth, stage);\n }\n return [...byDepth.entries()]\n .sort(([left], [right]) => left - right)\n .map(([depth, stageTasks]) => ({\n depth,\n tasks: stageTasks.slice().sort((left, right) => left.id.localeCompare(right.id, 'en', { numeric: true })),\n }));\n}\n/**\n * Lay tasks out as the reference panel's compact left-to-right DAG.\n *\n * Columns are dependency-depth stages. Rows are stable task-id order within\n * each stage. Edges use cubic curves so fan-in remains readable without\n * turning every task into a large card.\n */\nexport function compactDagLayout(tasks) {\n const stages = taskStages(tasks);\n const positions = new Map();\n const nodes = [];\n for (const [column, stage] of stages.entries()) {\n for (const [row, task] of stage.tasks.entries()) {\n const x = column * (COMPACT_DAG_NODE_WIDTH + COMPACT_DAG_COLUMN_GAP);\n const y = row * (COMPACT_DAG_NODE_HEIGHT + COMPACT_DAG_ROW_GAP);\n positions.set(task.id, { x, y });\n nodes.push({ task, x, y });\n }\n }\n const edges = [];\n for (const task of tasks) {\n const target = positions.get(task.id);\n if (target === undefined)\n continue;\n for (const dependency of task.dependencies) {\n const source = positions.get(dependency);\n if (source === undefined)\n continue;\n const x1 = source.x + COMPACT_DAG_NODE_WIDTH;\n const y1 = source.y + COMPACT_DAG_NODE_HEIGHT / 2;\n const x2 = target.x;\n const y2 = target.y + COMPACT_DAG_NODE_HEIGHT / 2;\n edges.push({\n from: dependency,\n to: task.id,\n path: `M${x1} ${y1}C${x1 + 14} ${y1},${x2 - 14} ${y2},${x2} ${y2}`,\n });\n }\n }\n const rows = Math.max(1, ...stages.map((stage) => stage.tasks.length));\n return {\n width: stages.length === 0\n ? 0\n : stages.length * COMPACT_DAG_NODE_WIDTH + (stages.length - 1) * COMPACT_DAG_COLUMN_GAP,\n height: stages.length === 0\n ? 0\n : rows * COMPACT_DAG_NODE_HEIGHT + (rows - 1) * COMPACT_DAG_ROW_GAP,\n nodes,\n edges,\n };\n}\n/**\n * Return the complete upstream/downstream chain around one task.\n *\n * Traversal uses both dependency directions and remains cycle-safe, so the UI\n * can highlight every handoff related to the focused task even if malformed\n * durable data contains a cycle.\n */\nexport function relatedTaskIds(taskId, tasks) {\n const byId = new Map(tasks.map((task) => [task.id, task]));\n if (!byId.has(taskId))\n return new Set();\n const dependents = new Map();\n for (const task of tasks) {\n for (const dependency of task.dependencies) {\n const targets = dependents.get(dependency) ?? [];\n targets.push(task.id);\n dependents.set(dependency, targets);\n }\n }\n const related = new Set();\n const upstreamSeen = new Set();\n const downstreamSeen = new Set();\n const visitUpstream = (id) => {\n if (upstreamSeen.has(id))\n return;\n upstreamSeen.add(id);\n related.add(id);\n for (const dependency of byId.get(id)?.dependencies ?? [])\n visitUpstream(dependency);\n };\n const visitDownstream = (id) => {\n if (downstreamSeen.has(id))\n return;\n downstreamSeen.add(id);\n related.add(id);\n for (const dependent of dependents.get(id) ?? [])\n visitDownstream(dependent);\n };\n visitUpstream(taskId);\n visitDownstream(taskId);\n return related;\n}\n","/** Shared, demand-driven state for the AgentTeams browser monitor. */\nconst targets = new Map();\nconst targetListeners = new Set();\nconst snapshotListeners = new Set();\nlet targetSnapshot = [];\nlet activitySnapshots = { teams: [], archivedTeams: [] };\nfunction targetKey(sessionId, teamId) {\n return `${sessionId}\\u0000${teamId}`;\n}\nfunction publishTargets() {\n targetSnapshot = [...targets.values()]\n .filter((target) => target.active)\n .map(({ key, sessionId, teamId }) => ({ key, sessionId, teamId }));\n for (const listener of targetListeners)\n listener();\n}\n/** Subscribe to the active monitor-target list (React external-store shape). */\nexport function subscribeActivityMonitorTargets(listener) {\n targetListeners.add(listener);\n return () => { targetListeners.delete(listener); };\n}\n/** Read the stable active-target snapshot. */\nexport function getActivityMonitorTargetsSnapshot() {\n return targetSnapshot;\n}\n/**\n * Register one successful AgentTeams card as a monitoring demand.\n *\n * The returned cleanup is reference-counted so multiple cards and React\n * StrictMode remounts cannot stop another card's monitor.\n */\nexport function monitorAgentTeam(sessionId, teamId) {\n const owner = sessionId.trim();\n const id = teamId.trim();\n if (owner === '' || id === '')\n return () => { };\n const key = targetKey(owner, id);\n const existing = targets.get(key);\n if (existing === undefined) {\n targets.set(key, { key, sessionId: owner, teamId: id, refs: 1, active: true });\n publishTargets();\n }\n else {\n existing.refs += 1;\n if (!existing.active) {\n existing.active = true;\n publishTargets();\n }\n }\n let released = false;\n return () => {\n if (released)\n return;\n released = true;\n const current = targets.get(key);\n if (current === undefined)\n return;\n current.refs -= 1;\n if (current.refs <= 0) {\n targets.delete(key);\n if (current.active)\n publishTargets();\n }\n };\n}\n/** Stop polling targets whose final archived snapshot has been captured. */\nexport function settleActivityMonitorTargets(keys) {\n let changed = false;\n for (const key of keys) {\n const target = targets.get(key);\n if (target?.active !== true)\n continue;\n target.active = false;\n changed = true;\n }\n if (changed)\n publishTargets();\n}\n/** Subscribe to the shared live/archive snapshot. */\nexport function subscribeActivitySnapshots(listener) {\n snapshotListeners.add(listener);\n return () => { snapshotListeners.delete(listener); };\n}\n/** Read the stable shared live/archive snapshot. */\nexport function getActivitySnapshotsSnapshot() {\n return activitySnapshots;\n}\n/** Publish one or both successful state-route responses. */\nexport function updateActivitySnapshots(update) {\n const next = {\n teams: update.teams ?? activitySnapshots.teams,\n archivedTeams: update.archivedTeams ?? activitySnapshots.archivedTeams,\n };\n if (next.teams === activitySnapshots.teams && next.archivedTeams === activitySnapshots.archivedTeams)\n return;\n activitySnapshots = next;\n for (const listener of snapshotListeners)\n listener();\n}\n/** Poll cadence for the live host snapshot route. */\nexport const ACTIVITY_POLL_MS = 1000;\n/**\n * Low-frequency probe cadence while a cardless discovery session still owns\n * no team. The probe keeps the panel able to pick up a team created later in\n * that session (e.g. a run_code-wrapped agent_teams_create) without turning\n * every ordinary session into a one-second filesystem scan.\n */\nexport const ACTIVITY_PROBE_MS = 5000;\n/** Host route serving live and archived team snapshots. */\nexport const ACTIVITY_STATE_URL = '/plugins/dsh-agent-teams/state';\n/**\n * Start the single polling loop for the current session's requested targets.\n *\n * With neither targets nor a discovery session this is deliberately inert.\n * Explicit card targets poll at the live cadence from the start. A discovery\n * session performs an immediate live+archive restore pass, then — while it\n * still owns no team — probes on a low-frequency cadence, so a team created\n * later in that session (e.g. a run_code-wrapped agent_teams_create) is\n * discovered without a manual reload, without turning every ordinary session\n * into a one-second filesystem scan. The moment a team for the discovery\n * session appears, the controller upgrades to the live one-second cadence for\n * the rest of its lifetime. The caller — the session view, which stops the\n * controller when the session is no longer current — bounds the lifetime, and\n * archive state is refreshed when a target or a previously discovered live\n * team disappears.\n */\nexport function startActivityPolling(monitorTargets, runtime = {}) {\n const discoverySessionId = runtime.discoverySessionId?.trim();\n if (monitorTargets.length === 0 && (discoverySessionId === undefined || discoverySessionId === '')) {\n return { firstTick: Promise.resolve(), stop: () => { } };\n }\n const fetchState = runtime.fetchState ?? ((url, init) => fetch(url, init));\n const schedule = runtime.schedule ?? ((callback, intervalMs) => setInterval(callback, intervalMs));\n const cancel = runtime.cancel ?? ((timer) => { clearInterval(timer); });\n const publishSnapshots = runtime.publishSnapshots ?? updateActivitySnapshots;\n const settleTargets = runtime.settleTargets ?? settleActivityMonitorTargets;\n let cancelled = false;\n let inFlight = false;\n // Explicit card targets are demanded work: start at the live cadence. A\n // discovery session starts probing low-frequency and upgrades on detection.\n let hot = monitorTargets.length > 0;\n let discoveryComplete = false;\n let discoveredLiveKeys = new Set();\n let controller;\n let timer;\n const intervalMs = () => (hot ? ACTIVITY_POLL_MS : ACTIVITY_PROBE_MS);\n const reschedule = () => {\n cancel(timer);\n timer = schedule(() => { void tick(); }, intervalMs());\n };\n const tick = async () => {\n if (inFlight || cancelled)\n return;\n inFlight = true;\n controller = new AbortController();\n try {\n const liveResponse = await fetchState(ACTIVITY_STATE_URL, {\n cache: 'no-store',\n signal: controller.signal,\n });\n if (!liveResponse.ok)\n return;\n const body = (await liveResponse.json());\n if (cancelled || !Array.isArray(body.teams))\n return;\n const liveTeams = body.teams;\n publishSnapshots({ teams: liveTeams });\n const previousDiscoveredKeys = discoveredLiveKeys;\n discoveredLiveKeys = new Set(discoverySessionId === undefined || discoverySessionId === ''\n ? []\n : liveTeams\n .filter((team) => team.captainSessionId === discoverySessionId)\n .map((team) => team.teamId));\n // A discovery session found its first team: upgrade from the low-frequency\n // probe to the live cadence for the rest of the controller lifetime.\n if (!hot && discoveredLiveKeys.size > 0) {\n hot = true;\n reschedule();\n }\n const discoveredTeamArchived = [...previousDiscoveredKeys]\n .some((teamId) => !discoveredLiveKeys.has(teamId));\n const missing = monitorTargets.filter((target) => !liveTeams.some((team) => team.captainSessionId === target.sessionId && team.teamId === target.teamId));\n const needsDiscoveryArchive = discoverySessionId !== undefined\n && discoverySessionId !== ''\n && !discoveryComplete;\n if (missing.length === 0 && !needsDiscoveryArchive && !discoveredTeamArchived)\n return;\n // Archives are immutable per team generation. A successful fallback\n // retires every missing explicit target, including legacy cards whose\n // host archive no longer exists; a discovery session that already\n // upgraded keeps polling, and a still-probing one keeps probing, so a\n // team created later in the same session stays discoverable.\n const archivedResponse = await fetchState(`${ACTIVITY_STATE_URL}?archived=1`, {\n cache: 'no-store',\n signal: controller.signal,\n });\n if (!archivedResponse.ok)\n return;\n const archivedBody = (await archivedResponse.json());\n if (cancelled || !Array.isArray(archivedBody.teams))\n return;\n publishSnapshots({ archivedTeams: archivedBody.teams });\n discoveryComplete = true;\n settleTargets(new Set(missing.map((target) => target.key)));\n }\n catch (error) {\n if (error?.name === 'AbortError')\n return;\n // Host restarting; keep the last snapshot and retry on the next tick.\n }\n finally {\n inFlight = false;\n }\n };\n const firstTick = tick();\n if (timer === undefined)\n timer = schedule(() => { void tick(); }, intervalMs());\n return {\n firstTick,\n stop: () => {\n if (cancelled)\n return;\n cancelled = true;\n controller?.abort();\n cancel(timer);\n },\n };\n}\n","/**\n * Shared whale artwork lookup for the activity panel and the conversation\n * card: role keywords map to the packaged role images; the captain always\n * uses the lead whale.\n * @module dsh-agent-teams/client/artwork\n */\n/** Artwork route prefix served by the plugin host half. */\nexport const ART_BASE = '/plugins/dsh-agent-teams/assets/';\n/** V2 whale role artwork per role keyword. */\nconst ROLE_ART = [\n [/data|analys|metric|performance|数据|分析|指标|性能/, 'member-data-v2.png'],\n [/resear|investig|explor|study|研究|调查|探索|调研/, 'member-researcher-v2.png'],\n // Match compound QA titles (for example \"QA Engineer\") before the broad\n // engineer bucket, otherwise an eight-role roster repeats the engineer art.\n [/\\bqa\\b|test|verif|quality|测试|质量|验证/, 'member-qa-v2.png'],\n [/engineer|dev\\b|server|backend|\\bapi\\b|runtime|watcher|contract|工程|后端|服务|接口|开发|代码|编程/, 'member-engineer-v2.png'],\n [/design|\\bui\\b|\\bux\\b|front|theme|accessib|设计|前端|主题|无障碍/, 'member-designer-v2.png'],\n [/secur|audit|risk|threat|review|安全|审计|审查|风险/, 'member-security-v2.png'],\n [/docs|writer|product|spec|撰写|文案|写作|文档|规范/, 'member-docs-v2.png'],\n [/release|\\bbuild\\b|deploy|\\bops\\b|\\bci\\b|ship|coordin|发布|构建|部署|运维|协调/, 'member-operator-v2.png'],\n];\n/** Captain artwork (always the lead whale). */\nexport const LEAD_ART = `${ART_BASE}team-lead-v2.png`;\n/** Status action artwork per member activity. */\nexport const ACTION_ART = {\n working: `${ART_BASE}action-working-v2.png`,\n idle: `${ART_BASE}action-sleeping-v2.png`,\n unknown: `${ART_BASE}action-thinking-v2.png`,\n};\n/**\n * Member artwork URL, or null when no role matches (initial-letter fallback).\n * @param name - the member's display name.\n * @param role - the member's role text.\n * @returns the artwork URL, or null when unmatched.\n */\nexport function memberArtUrl(name, role) {\n const identity = `${name} ${role}`.toLowerCase();\n for (const [pattern, art] of ROLE_ART) {\n if (pattern.test(identity))\n return `${ART_BASE}${art}`;\n }\n return null;\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * AgentTeams conversation card: the lightweight in-conversation summary for\n * one team — the captain's whale avatar and name, the member roster as\n * clickable whale avatars (opening the member's subagent transcript), and\n * an \"activity panel\" button that re-activates the top-right floater.\n *\n * The floater and this card share the `agent-teams:open-panel` window event\n * so the card can summon the panel even after it was closed (or when an old\n * session is re-opened for review).\n * @module dsh-agent-teams/client/card\n */\nimport { useEffect, useMemo, useSyncExternalStore } from 'react';\nimport { getActivitySnapshotsSnapshot, monitorAgentTeam, subscribeActivitySnapshots, } from \"./activity-monitor.js\";\nimport { LEAD_ART, memberArtUrl } from \"./artwork.js\";\nimport css from './AgentTeamsCard.module.css';\n/** Window event name the floater listens for to open itself. */\nexport const OPEN_PANEL_EVENT = 'agent-teams:open-panel';\n/** Re-activate the top-right activity panel, carrying this team's summary\n * so the panel can show it even when the team no longer exists on disk\n * (historical session review). */\nfunction openActivityPanel(data) {\n window.dispatchEvent(new CustomEvent(OPEN_PANEL_EVENT, {\n detail: {\n teamId: data.teamId,\n captainSessionId: data.captainSessionId,\n teamName: data.teamName,\n members: data.members,\n },\n }));\n}\n/** Render one durable team as a compact conversation card. */\nexport function AgentTeamsCard({ node, openMember, sessionId, t }) {\n const data = node.data;\n // `conversation.chat.node` is session-scoped, so its framework-owned id is\n // a stable owner even while another conversation becomes current.\n const owner = data.captainSessionId || sessionId;\n const { teams, archivedTeams } = useSyncExternalStore(subscribeActivitySnapshots, getActivitySnapshotsSnapshot);\n useEffect(() => {\n return monitorAgentTeam(owner, data.teamId);\n }, [data.teamId, owner]);\n const snapshot = teams.find((team) => team.teamId === data.teamId && (owner === '' || team.captainSessionId === owner))\n ?? archivedTeams.find((team) => team.teamId === data.teamId && (owner === '' || team.captainSessionId === owner));\n const resolved = useMemo(() => ({\n ...data,\n captainSessionId: snapshot?.captainSessionId ?? owner,\n teamName: snapshot?.name ?? data.teamName,\n members: snapshot?.members.map((member) => ({ id: member.id, name: member.name, role: member.role })) ?? data.members,\n }), [data, owner, snapshot]);\n return (_jsxs(\"section\", { className: css.root, \"data-agent-teams-card\": true, \"data-team-id\": resolved.teamId, children: [_jsxs(\"header\", { className: css.head, children: [_jsx(\"img\", { className: css.leadAvatar, src: LEAD_ART, alt: \"\", \"aria-hidden\": true }), _jsx(\"span\", { className: css.teamName, title: resolved.teamName, children: resolved.teamName }), _jsx(\"span\", { className: css.memberCount, children: t('card.memberCount', { count: resolved.members.length }) }), _jsx(\"button\", { type: \"button\", className: css.panelButton, onClick: () => { openActivityPanel(resolved); }, \"aria-label\": t('action.openActivityPanel'), title: t('action.openActivityPanel'), children: t('activity.panelButton') })] }), resolved.members.length > 0 && (_jsx(\"div\", { className: css.members, children: resolved.members.map((member) => (_jsxs(\"button\", { type: \"button\", className: css.member, onClick: () => {\n if (member.id !== '')\n openMember(owner, member.id);\n }, title: member.role === '' ? member.name : `${member.name} · ${member.role}`, children: [memberArtUrl(member.name, member.role) !== null ? (_jsx(\"img\", { className: css.memberArt, src: memberArtUrl(member.name, member.role) ?? '', alt: \"\", \"aria-hidden\": true })) : (_jsx(\"span\", { className: css.memberInitial, children: member.name.trim().slice(0, 1).toUpperCase() || '?' })), _jsx(\"span\", { className: css.memberName, children: member.name })] }, member.id))) }))] }));\n}\n","/** Pure persisted geometry rules for the AgentTeams shell-overlay panel. */\nexport const PANEL_LAYOUT_STORAGE_KEY = 'dsh-agent-teams:activity-panel:v1';\nexport const PANEL_COMPACT_BREAKPOINT = 960;\nexport const PANEL_DEFAULT_WIDTH = 388;\nexport const PANEL_DEFAULT_HEIGHT = 640;\nexport const PANEL_MIN_WIDTH = 320;\nexport const PANEL_MAX_WIDTH = 640;\nexport const PANEL_MIN_HEIGHT = 360;\nexport const PANEL_DOCK_TOP = 64;\nexport const PANEL_DOCK_RIGHT = 18;\nexport const PANEL_DOCK_BOTTOM = 48;\nexport const PANEL_FLOAT_MARGIN = 12;\nexport const DEFAULT_PANEL_LAYOUT = Object.freeze({\n mode: 'docked',\n x: 0,\n y: PANEL_DOCK_TOP,\n width: PANEL_DEFAULT_WIDTH,\n height: PANEL_DEFAULT_HEIGHT,\n heightMode: 'auto',\n});\nfunction clamp(value, minimum, maximum) {\n return Math.min(Math.max(value, minimum), maximum);\n}\nfunction finite(value) {\n return typeof value === 'number' && Number.isFinite(value);\n}\n/** Decode one versioned localStorage value, rejecting partial/corrupt state. */\nexport function parsePanelLayout(value) {\n if (value === null)\n return DEFAULT_PANEL_LAYOUT;\n try {\n const parsed = JSON.parse(value);\n if (typeof parsed !== 'object' || parsed === null)\n return DEFAULT_PANEL_LAYOUT;\n const record = parsed;\n if ((record.mode !== 'docked' && record.mode !== 'floating')\n || !finite(record.x) || !finite(record.y)\n || !finite(record.width) || !finite(record.height)) {\n return DEFAULT_PANEL_LAYOUT;\n }\n return {\n mode: record.mode,\n x: record.x,\n y: record.y,\n width: record.width,\n height: record.height,\n // v1 values written before content-fit height existed have no mode.\n // Treat them as automatic so the upgrade removes legacy blank space.\n heightMode: record.mode === 'floating' && record.heightMode === 'manual' ? 'manual' : 'auto',\n };\n }\n catch {\n return DEFAULT_PANEL_LAYOUT;\n }\n}\n/** Whether the panel should become a simple inset overlay with no gestures. */\nexport function compactPanelForBounds(bounds) {\n return bounds.width <= PANEL_COMPACT_BREAKPOINT;\n}\n/** Docked and compact panels always fit content; floating panels may be user-sized. */\nexport function panelUsesAutoHeight(layout, bounds) {\n return compactPanelForBounds(bounds) || layout.mode === 'docked' || layout.heightMode === 'auto';\n}\n/** CSS max-height ceiling that keeps an auto-height panel inside its shell. */\nexport function panelMaximumHeight(layout, bounds) {\n const bottomInset = compactPanelForBounds(bounds) || layout.mode === 'floating'\n ? PANEL_FLOAT_MARGIN\n : PANEL_DOCK_BOTTOM;\n return Math.max(1, bounds.height - layout.y - bottomInset);\n}\n/** Resolve persisted state into a visible rectangle inside the current shell. */\nexport function resolvePanelGeometry(layout, bounds) {\n const boundsWidth = Math.max(1, bounds.width);\n const boundsHeight = Math.max(1, bounds.height);\n if (compactPanelForBounds(bounds)) {\n return {\n ...layout,\n x: PANEL_FLOAT_MARGIN,\n y: PANEL_FLOAT_MARGIN,\n width: Math.max(1, boundsWidth - PANEL_FLOAT_MARGIN * 2),\n height: Math.max(1, boundsHeight - PANEL_FLOAT_MARGIN * 2),\n };\n }\n const maximumWidth = Math.max(1, Math.min(PANEL_MAX_WIDTH, boundsWidth - PANEL_FLOAT_MARGIN * 2));\n const minimumWidth = Math.min(PANEL_MIN_WIDTH, maximumWidth);\n const width = clamp(layout.width, minimumWidth, maximumWidth);\n const maximumHeight = Math.max(1, boundsHeight - PANEL_FLOAT_MARGIN * 2);\n const minimumHeight = Math.min(PANEL_MIN_HEIGHT, maximumHeight);\n if (layout.mode === 'docked') {\n const y = clamp(PANEL_DOCK_TOP, PANEL_FLOAT_MARGIN, Math.max(PANEL_FLOAT_MARGIN, boundsHeight - minimumHeight - PANEL_FLOAT_MARGIN));\n const availableHeight = Math.max(1, boundsHeight - y - PANEL_DOCK_BOTTOM);\n const height = clamp(availableHeight, Math.min(minimumHeight, availableHeight), maximumHeight);\n const anchorRight = clamp(bounds.anchorRight, 0, boundsWidth);\n const maximumX = Math.max(PANEL_FLOAT_MARGIN, boundsWidth - width - PANEL_FLOAT_MARGIN);\n const x = clamp(anchorRight - PANEL_DOCK_RIGHT - width, PANEL_FLOAT_MARGIN, maximumX);\n return { mode: 'docked', x, y, width, height, heightMode: layout.heightMode };\n }\n const height = clamp(layout.height, minimumHeight, maximumHeight);\n return {\n mode: 'floating',\n x: clamp(layout.x, PANEL_FLOAT_MARGIN, Math.max(PANEL_FLOAT_MARGIN, boundsWidth - width - PANEL_FLOAT_MARGIN)),\n y: clamp(layout.y, PANEL_FLOAT_MARGIN, Math.max(PANEL_FLOAT_MARGIN, boundsHeight - height - PANEL_FLOAT_MARGIN)),\n width,\n height,\n heightMode: layout.heightMode,\n };\n}\n/** Undock without a visual jump by adopting the panel's resolved rectangle. */\nexport function floatPanelLayout(geometry, bounds) {\n return resolvePanelGeometry({ ...geometry, mode: 'floating' }, bounds);\n}\n/** Return to the right dock, preserving width and restoring content-fit height. */\nexport function dockPanelLayout(layout, bounds) {\n return resolvePanelGeometry({ ...layout, mode: 'docked', heightMode: 'auto' }, bounds);\n}\n/** Translate a floating panel and clamp it back into the visible shell. */\nexport function movePanelLayout(start, dx, dy, bounds) {\n return resolvePanelGeometry({ ...start, mode: 'floating', x: start.x + dx, y: start.y + dy }, bounds);\n}\n/** Resize while keeping the edge opposite the active handle stationary. */\nexport function resizePanelLayout(start, edge, dx, dy, bounds) {\n if (start.mode === 'docked') {\n if (edge !== 'left')\n return resolvePanelGeometry(start, bounds);\n return resolvePanelGeometry({ ...start, width: start.width - dx }, bounds);\n }\n const resolved = resolvePanelGeometry(start, bounds);\n const minimumWidth = Math.min(PANEL_MIN_WIDTH, resolved.x + resolved.width - PANEL_FLOAT_MARGIN);\n const minimumHeight = Math.min(PANEL_MIN_HEIGHT, bounds.height - resolved.y - PANEL_FLOAT_MARGIN);\n if (edge === 'left') {\n const right = resolved.x + resolved.width;\n const maximumWidth = Math.max(1, Math.min(PANEL_MAX_WIDTH, right - PANEL_FLOAT_MARGIN));\n const width = clamp(resolved.width - dx, Math.min(minimumWidth, maximumWidth), maximumWidth);\n return { ...resolved, x: right - width, width };\n }\n const maximumHeight = Math.max(1, bounds.height - resolved.y - PANEL_FLOAT_MARGIN);\n const height = clamp(resolved.height + dy, Math.min(minimumHeight, maximumHeight), maximumHeight);\n if (edge === 'bottom')\n return { ...resolved, height, heightMode: 'manual' };\n const maximumWidth = Math.max(1, Math.min(PANEL_MAX_WIDTH, bounds.width - resolved.x - PANEL_FLOAT_MARGIN));\n const width = clamp(resolved.width + dx, Math.min(minimumWidth, maximumWidth), maximumWidth);\n return { ...resolved, width, height, heightMode: 'manual' };\n}\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * AgentTeams activity panel: the top-right floater monitoring every team.\n *\n * Modeled on the Claude Code desktop SessionActivityPanel: a shell-overlay\n * panel that docks at the conversation's top-right edge by default, can be\n * dragged into a floating window, resized, and folded into an activity badge.\n * On wide viewports the docked panel makes the conversation column yield\n * space; narrow viewports keep a simple inset overlay. It\n * polls the host `/plugins/dsh-agent-teams/state` route for\n * server-side snapshots (durable files + live subagent activity), with a\n * collapsed badge that auto-expands once when activity appears. Archived\n * teams stay available for the owning conversation after live work ends.\n *\n * The floater mounts in ui-layout's additive `shell.overlay`; it is not a\n * conversation node — the in-conversation panel was removed in favor of this\n * always-available monitor.\n * @module dsh-agent-teams/client/activity\n */\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, } from 'react';\nimport { IconBranchOutline16, IconChevronDownOutline14, IconPanelLeftOutline16, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { activityPanelExpandedForSession, compactDagLayout, COMPACT_DAG_NODE_HEIGHT, COMPACT_DAG_NODE_WIDTH, dependencyFocusTaskId, relatedTaskIds, usesParallelTaskGrid, } from \"./activity-model.js\";\nimport { getActivityMonitorTargetsSnapshot, getActivitySnapshotsSnapshot, startActivityPolling, subscribeActivityMonitorTargets, subscribeActivitySnapshots, } from \"./activity-monitor.js\";\nimport { ACTION_ART, LEAD_ART, memberArtUrl } from \"./artwork.js\";\nimport { OPEN_PANEL_EVENT } from \"./AgentTeamsCard.js\";\nimport { DEFAULT_PANEL_LAYOUT, PANEL_LAYOUT_STORAGE_KEY, compactPanelForBounds, dockPanelLayout, floatPanelLayout, movePanelLayout, panelMaximumHeight, panelUsesAutoHeight, parsePanelLayout, resizePanelLayout, resolvePanelGeometry, } from \"./panel-geometry.js\";\nimport css from './ActivityPanel.module.css';\n/** Grace before the panel collapses once no team remains. */\nconst AUTOCLOSE_GRACE_MS = 2000;\n/**\n * Page-settle window after mount: activity restored on page load only shows\n * the collapsed badge, so the panel never yanks the conversation column\n * right after load. New activity after this window auto-expands as usual.\n */\nconst AUTO_OPEN_SETTLE_MS = 4000;\n/** Root marker shared with the panel CSS while the shell overlay is expanded. */\nconst PANEL_OPEN_ATTRIBUTE = 'data-agent-teams-panel-open';\n/** Shared width concession consumed by the conversation root CSS. */\nconst PANEL_SHIFT_PROPERTY = '--agent-teams-panel-shift';\nconst PANEL_CONVERSATION_GAP = 14;\nconst MOVE_THRESHOLD = 4;\nfunction initialPanelLayout() {\n if (typeof window === 'undefined')\n return DEFAULT_PANEL_LAYOUT;\n return parsePanelLayout(window.localStorage.getItem(PANEL_LAYOUT_STORAGE_KEY));\n}\nfunction initialPanelBounds() {\n if (typeof window === 'undefined')\n return { width: 1440, height: 900, anchorRight: 1440 };\n return { width: window.innerWidth, height: window.innerHeight, anchorRight: window.innerWidth };\n}\n/** Initial-letter fallback for unmatched roles. */\nfunction memberInitial(name) {\n return name.trim().slice(0, 1).toUpperCase() || '?';\n}\nfunction stableHash(value) {\n let hash = 0;\n for (let index = 0; index < value.length; index += 1) {\n hash = ((hash << 5) - hash + value.charCodeAt(index)) | 0;\n }\n return Math.abs(hash);\n}\nconst ACCENTS = [\n 'var(--dsw-alias-state-business-primary)',\n 'var(--dsw-alias-state-success)',\n 'var(--dsw-alias-state-danger)',\n 'var(--dsw-alias-state-warning)',\n 'var(--dsw-alias-label-tertiary)',\n];\nfunction accentOf(id) {\n return ACCENTS[stableHash(id) % ACCENTS.length] ?? ACCENTS[0];\n}\n/** Badge text follows the raw task status (finer than the 4 visual states):\n * claimed/pending/failed/cancelled keep their own labels and colors. */\nconst TASK_STATUS_LABEL = {\n pending: 'task.status.pending',\n claimed: 'task.status.claimed',\n in_progress: 'task.status.inProgress',\n completed: 'task.status.completed',\n failed: 'task.status.failed',\n cancelled: 'task.status.cancelled',\n};\nfunction taskStatusLabel(status, t) {\n const key = TASK_STATUS_LABEL[status];\n return key === undefined ? status : t(key);\n}\nfunction formatTaskIds(ids, t) {\n return ids.join(t('format.listSeparator'));\n}\n/** Badge/bar coloring key: visual state, widened for terminal statuses. */\nfunction taskTone(state, status) {\n if (status === 'failed')\n return 'failed';\n if (status === 'cancelled')\n return 'cancelled';\n return state;\n}\nfunction Chevron({ open }) {\n return (_jsx(\"svg\", { className: css.chevron, \"data-open\": open, width: \"9\", height: \"9\", viewBox: \"0 0 10 10\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", \"aria-hidden\": true, children: _jsx(\"path\", { d: \"M3.5 2l3 3-3 3\" }) }));\n}\nfunction WorkGlyph({ active }) {\n return (_jsx(\"svg\", { className: css.workGlyph, \"data-active\": active, width: \"11\", height: \"11\", viewBox: \"0 0 11 11\", fill: \"currentColor\", \"aria-hidden\": true, children: [[0, 0], [4.2, 0], [8.4, 0], [0, 4.2], [4.2, 4.2], [8.4, 4.2]].map(([x, y], index) => (_jsx(\"rect\", { x: x, y: y, width: \"2.6\", height: \"2.6\", rx: \".6\", style: { animationDelay: `${index * 0.15}s` } }, `${x}:${y}`))) }));\n}\n/** Collapsed badge: an always-visible corner pill while any team exists. */\nfunction CollapsedBadge({ count, busy, onClick, t }) {\n return (_jsxs(\"button\", { type: \"button\", className: css.badge, \"data-agent-teams-collapsed\": true, \"data-busy\": busy, onClick: onClick, \"aria-label\": t('activity.badgeAria', { count }), children: [_jsx(\"span\", { className: css.badgeDot, \"data-busy\": busy, \"aria-hidden\": true }), _jsx(\"span\", { className: css.badgeCount, children: count })] }));\n}\nfunction memberStateLabel(member, tasks, historic, t) {\n const owned = tasks.filter((task) => task.assignee === member.name);\n if (member.activity === 'working')\n return t('member.state.working');\n if (owned.some((task) => task.status === 'failed'))\n return t('member.state.failed');\n if (owned.some((task) => task.state === 'blocked'))\n return t('member.state.waiting');\n if (owned.length > 0 && owned.every((task) => task.status === 'completed'))\n return t('member.state.delivered');\n if (member.status === 'removed')\n return t(historic ? 'member.state.left' : 'member.state.removed');\n if (owned.length > 0)\n return t('member.state.pending');\n return t('member.state.unassigned');\n}\nfunction memberStatusText(member, tasks, t) {\n const owned = tasks.filter((task) => task.assignee === member.name);\n const current = owned.find((task) => task.id === member.currentTask);\n const blocked = owned.find((task) => task.state === 'blocked');\n if (member.activity === 'working' && current !== undefined)\n return t('member.status.executing', { taskId: current.id });\n if (member.activity === 'working')\n return t('member.status.working');\n if (blocked !== undefined) {\n const dependency = tasks.find((task) => blocked.dependencies.includes(task.id) && task.state !== 'completed');\n if (dependency !== undefined) {\n return t('member.status.waitingOn', {\n taskId: dependency.id,\n assignee: dependency.assignee || t('task.assignee.unclaimed'),\n });\n }\n return t('member.status.waitingPrerequisite');\n }\n if (member.total === 0)\n return t('member.status.waitingAssignment');\n if (member.done === member.total)\n return t('member.status.delivered');\n return t(member.activity === 'idle' ? 'member.status.idle' : 'member.status.unknown');\n}\nfunction compactTaskLabel(subject) {\n const withoutVerb = subject.replace(/^开发\\s*/u, '').replace(/^\\d+[-_.、\\s]*/u, '');\n const head = withoutVerb.split(/[((·::]/u)[0]?.trim() ?? withoutVerb;\n return head.length > 18 ? `${head.slice(0, 17)}…` : head;\n}\nfunction taskSummary(team, t) {\n const completed = team.tasks.filter((task) => task.status === 'completed');\n const running = team.tasks.filter((task) => task.state === 'running');\n const blocked = team.tasks.filter((task) => task.state === 'blocked');\n const ready = team.tasks.filter((task) => task.state === 'open' && task.status !== 'completed');\n if (team.tasks.length === 0)\n return t('task.summary.waitingBreakdown');\n if (completed.length === team.tasks.length)\n return t('task.summary.allDelivered', { count: completed.length });\n if (blocked.length > 0 && running.length > 0) {\n return t('task.summary.blockedAndRunning', {\n tasks: formatTaskIds(blocked.slice(0, 3).map((task) => task.id), t),\n more: blocked.length > 3 ? t('task.summary.more', { count: blocked.length - 3 }) : '',\n });\n }\n if (running.length > 0)\n return t('task.summary.running', { tasks: formatTaskIds(running.map((task) => task.id), t) });\n if (ready.length > 0)\n return t('task.summary.ready', { tasks: formatTaskIds(ready.map((task) => task.id), t) });\n if (blocked.length > 0)\n return t('task.summary.blocked', { tasks: formatTaskIds(blocked.map((task) => task.id), t) });\n return t('task.summary.waitingSchedule');\n}\nfunction ProgressOverview({ team, t }) {\n const running = team.tasks.filter((task) => task.state === 'running').length;\n const blocked = team.tasks.filter((task) => task.state === 'blocked').length;\n const completed = team.tasks.filter((task) => task.status === 'completed').length;\n const summaryTone = blocked > 0 ? 'warning' : completed === team.tasks.length && team.tasks.length > 0 ? 'completed' : 'running';\n return (_jsxs(\"section\", { className: css.progressOverview, \"aria-label\": t('progress.aria'), \"data-progress-summary\": true, children: [_jsx(\"span\", { className: css.progressTitle, children: t('progress.title') }), team.tasks.length > 0 ? (_jsx(\"span\", { className: css.progressSegments, \"aria-hidden\": true, children: team.tasks.map((task) => _jsx(\"span\", { \"data-state\": taskTone(task.state, task.status) }, task.id)) })) : _jsx(\"span\", { className: css.progressEmpty }), _jsxs(\"span\", { className: css.progressLegend, children: [_jsx(\"span\", { \"data-state\": \"running\", children: t('progress.running', { count: running }) }), _jsx(\"span\", { \"data-state\": \"blocked\", children: t('progress.blocked', { count: blocked }) }), _jsx(\"span\", { \"data-state\": \"completed\", children: t('progress.delivered', { count: completed }) })] }), _jsxs(\"span\", { className: css.progressSummary, \"data-state\": summaryTone, children: [_jsx(\"span\", { className: css.progressSummaryDot }), _jsx(\"span\", { children: taskSummary(team, t) })] })] }));\n}\nfunction DependencyMap({ tasks, t }) {\n const [open, setOpen] = useState(true);\n const [hoverTaskId, setHoverTaskId] = useState(null);\n const [keyboardTaskId, setKeyboardTaskId] = useState(null);\n const [pinnedTaskId, setPinnedTaskId] = useState(null);\n const hoverTimer = useRef(null);\n const focusedTaskId = dependencyFocusTaskId(pinnedTaskId, keyboardTaskId, hoverTaskId);\n const layout = useMemo(() => compactDagLayout(tasks), [tasks]);\n const parallel = useMemo(() => usesParallelTaskGrid(tasks), [tasks]);\n const related = useMemo(() => focusedTaskId === null ? null : relatedTaskIds(focusedTaskId, tasks), [focusedTaskId, tasks]);\n const scheduleHover = (id) => {\n if (hoverTimer.current !== null) {\n clearTimeout(hoverTimer.current);\n hoverTimer.current = null;\n }\n if (id === null) {\n setHoverTaskId(null);\n return;\n }\n hoverTimer.current = setTimeout(() => {\n hoverTimer.current = null;\n setHoverTaskId(id);\n }, 180);\n };\n useEffect(() => () => {\n if (hoverTimer.current !== null)\n clearTimeout(hoverTimer.current);\n }, []);\n useEffect(() => {\n const onKeyDown = (event) => {\n if (event.key === 'Escape')\n setPinnedTaskId(null);\n };\n window.addEventListener('keydown', onKeyDown);\n return () => { window.removeEventListener('keydown', onKeyDown); };\n }, []);\n if (tasks.length === 0)\n return null;\n const fallbackTask = tasks.find((task) => task.state === 'blocked')\n ?? tasks.find((task) => task.state === 'running')\n ?? tasks[0];\n const detailTask = tasks.find((task) => task.id === focusedTaskId) ?? fallbackTask;\n const waitingOn = detailTask.dependencies.filter((dependency) => (tasks.find((task) => task.id === dependency)?.status !== 'completed'));\n const dependents = tasks.filter((task) => task.dependencies.includes(detailTask.id));\n return (_jsxs(\"section\", { className: css.dependencySection, \"aria-label\": t('dependency.aria'), \"data-dependency-map\": true, children: [_jsxs(\"header\", { className: css.sectionHead, children: [_jsxs(\"button\", { type: \"button\", className: css.sectionToggleTitle, onClick: () => { setOpen((current) => !current); }, \"aria-expanded\": open, children: [_jsx(Chevron, { open: open }), _jsx(IconBranchOutline16, {}), \" \", t(parallel ? 'dependency.parallel' : 'dependency.title')] }), _jsx(\"span\", { className: css.sectionHint, children: pinnedTaskId === null\n ? t(parallel ? 'dependency.hint.parallel' : 'dependency.hint.chain')\n : t('dependency.hint.pinned', { taskId: pinnedTaskId }) })] }), open && (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: css.dagViewport, children: _jsxs(\"div\", { className: css.dagCanvas, \"data-layout\": parallel ? 'parallel' : 'dependency', style: parallel ? undefined : { width: layout.width, height: layout.height }, children: [!parallel && _jsx(\"svg\", { className: css.dagEdges, width: layout.width, height: layout.height, \"aria-hidden\": true, children: layout.edges.map((edge) => {\n const active = related !== null && related.has(edge.from) && related.has(edge.to);\n return _jsx(\"path\", { d: edge.path, \"data-active\": active, \"data-dimmed\": related !== null && !active }, `${edge.from}:${edge.to}`);\n }) }), layout.nodes.map(({ task, x, y }) => (_jsxs(\"button\", { type: \"button\", className: css.dagNode, style: parallel\n ? { height: COMPACT_DAG_NODE_HEIGHT }\n : { left: x, top: y, width: COMPACT_DAG_NODE_WIDTH, height: COMPACT_DAG_NODE_HEIGHT }, \"data-task-id\": task.id, \"data-state\": taskTone(task.state, task.status), \"data-focused\": related?.has(task.id) ?? false, \"data-dimmed\": related !== null && !related.has(task.id), \"aria-pressed\": pinnedTaskId === task.id, title: `${task.id} · ${task.subject}`, onClick: () => { setPinnedTaskId((current) => current === task.id ? null : task.id); }, onMouseEnter: () => { scheduleHover(task.id); }, onMouseLeave: () => { scheduleHover(null); }, onFocus: () => { setKeyboardTaskId(task.id); }, onBlur: () => { setKeyboardTaskId(null); }, children: [_jsxs(\"span\", { className: css.dagNodeHead, children: [_jsx(\"span\", { className: css.dagNodeDot }), task.id] }), _jsx(\"span\", { className: css.dagNodeLabel, children: compactTaskLabel(task.subject) }), task.state === 'running' && (_jsx(\"span\", { className: css.dagRunningState, \"aria-label\": t('task.runningAria'), children: _jsx(WorkGlyph, { active: true }) }))] }, task.id)))] }) }), _jsxs(\"section\", { className: css.taskDetail, \"data-task-detail\": detailTask.id, children: [_jsxs(\"span\", { className: css.taskDetailHead, children: [_jsx(\"span\", { className: css.taskDetailId, children: detailTask.id }), _jsx(\"span\", { className: css.taskDetailSubject, title: detailTask.subject, children: detailTask.subject.replace(/^开发\\s*/u, '') }), _jsx(\"span\", { className: css.taskDetailBadge, \"data-state\": taskTone(detailTask.state, detailTask.status), children: taskStatusLabel(detailTask.status, t) })] }), _jsxs(\"span\", { className: css.taskDetailLine, children: [detailTask.assignee || t('task.assignee.unclaimed'), \" \\u00B7 \", detailTask.status === 'completed'\n ? t('task.detail.completed')\n : detailTask.dependencies.length === 0\n ? t('task.detail.noPrerequisite')\n : waitingOn.length === 0\n ? t('task.detail.ready')\n : t('task.detail.waitingOn', { tasks: formatTaskIds(waitingOn, t) })] }), _jsx(\"span\", { className: css.taskDetailMeta, children: dependents.length === 0\n ? t('task.detail.noDownstream')\n : t('task.detail.unlocks', { tasks: formatTaskIds(dependents.map((task) => task.id), t) }) })] })] }))] }));\n}\nfunction TeamSection({ team, onNavigate, t, historic = false }) {\n const [membersOpen, setMembersOpen] = useState(true);\n const busyCount = team.members.filter((member) => member.activity === 'working').length;\n const assignedCount = team.tasks.filter((task) => task.assignee !== '').length;\n const completedCount = team.tasks.filter((task) => task.status === 'completed').length;\n const allCompleted = team.tasks.length > 0 && completedCount === team.tasks.length;\n return (_jsxs(\"section\", { className: css.team, \"data-team-id\": team.teamId, children: [_jsxs(\"header\", { className: css.teamHead, children: [_jsx(\"span\", { className: css.teamName, title: team.name, children: team.name }), historic && _jsx(\"span\", { className: css.historicPill, children: t('team.ended') }), _jsxs(\"span\", { className: css.teamStats, children: [_jsx(\"span\", { \"data-stat\": \"members\", children: t('team.stats.members', { count: team.members.length }) }), _jsx(\"span\", { \"data-stat\": \"tasks\", children: t('team.stats.completed', { completed: completedCount, total: team.tasks.length }) }), _jsx(\"span\", { \"data-stat\": \"messages\", children: t('team.stats.messages', { count: team.messageCount }) })] })] }), _jsxs(\"section\", { className: css.delegationSection, \"aria-label\": t('delegation.aria'), \"data-delegation-map\": true, children: [_jsxs(\"div\", { className: css.captainNode, children: [_jsx(\"span\", { className: css.captainAvatar, children: _jsx(\"img\", { className: css.leadAvatar, src: LEAD_ART, alt: \"\", \"aria-hidden\": true }) }), _jsxs(\"span\", { className: css.captainInfo, children: [_jsxs(\"span\", { className: css.captainLine, children: [_jsx(\"span\", { className: css.captainName, children: t('captain.name') }), _jsx(\"span\", { className: css.captainRole, children: t('captain.role') })] }), _jsx(\"span\", { className: css.captainSummary, children: t('captain.summary', {\n tasks: assignedCount,\n members: team.members.length,\n }) })] }), _jsxs(\"span\", { className: css.captainState, \"data-busy\": busyCount > 0, children: [_jsx(WorkGlyph, { active: busyCount > 0 }), busyCount > 0\n ? t('captain.state.working', { count: busyCount })\n : t(allCompleted ? 'captain.state.collected' : 'captain.state.waiting')] })] }), _jsx(ProgressOverview, { team: team, t: t }), _jsxs(\"button\", { type: \"button\", className: css.membersToggle, onClick: () => { setMembersOpen((current) => !current); }, \"aria-expanded\": membersOpen, \"data-members-toggle\": true, children: [_jsxs(\"span\", { children: [_jsx(Chevron, { open: membersOpen }), t('members.toggle', { count: team.members.length })] }), _jsx(\"span\", { children: t(membersOpen ? 'members.collapse' : 'members.expand') })] }), membersOpen && _jsxs(\"div\", { className: css.delegationTree, children: [team.members.length === 0 && _jsx(\"span\", { className: css.emptyHint, children: t('members.empty') }), team.members.map((member) => {\n const owned = team.tasks.filter((task) => task.assignee === member.name);\n return (_jsxs(\"div\", { className: css.memberBlock, \"data-activity\": member.activity, children: [_jsx(\"span\", { className: css.memberBranch, \"aria-hidden\": true, children: _jsx(\"span\", {}) }), _jsxs(\"button\", { type: \"button\", className: css.memberRow, \"data-activity\": member.activity, onClick: () => {\n if (member.id !== '') {\n onNavigate(team.captainSessionId, member.id);\n }\n }, children: [_jsxs(\"span\", { className: css.memberAvatar, \"data-unread\": member.unread > 0, children: [memberArtUrl(member.name, member.role) !== null ? (_jsx(\"img\", { className: css.memberArt, src: memberArtUrl(member.name, member.role) ?? '', alt: \"\", \"aria-hidden\": true })) : (_jsx(\"span\", { className: css.memberInitial, style: { background: accentOf(member.id) }, children: memberInitial(member.name) })), _jsx(\"img\", { className: css.stateArt, \"data-activity\": member.activity, src: ACTION_ART[member.activity], alt: \"\", \"aria-hidden\": true })] }), _jsxs(\"span\", { className: css.memberInfo, children: [_jsxs(\"span\", { className: css.memberLine, children: [_jsx(\"span\", { className: css.memberName, children: member.name }), member.role !== '' && _jsx(\"span\", { className: css.memberRole, children: member.role }), _jsxs(\"span\", { className: css.memberState, \"data-activity\": member.activity, children: [_jsx(WorkGlyph, { active: member.activity === 'working' }), memberStateLabel(member, team.tasks, historic, t)] })] }), _jsx(\"span\", { className: css.memberStatusLine, children: memberStatusText(member, team.tasks, t) })] }), _jsxs(\"span\", { className: css.memberCount, children: [member.done, \"/\", member.total] })] }), _jsxs(\"div\", { className: css.assignmentLine, children: [_jsx(\"span\", { className: css.assignmentLabel, children: t('assignment.label') }), _jsx(\"span\", { className: css.assignmentTasks, children: owned.length === 0\n ? _jsx(\"span\", { className: css.taskEmpty, children: t('assignment.empty') })\n : owned.map((task) => (_jsx(\"span\", { className: css.assignmentChip, \"data-state\": taskTone(task.state, task.status), title: task.subject, children: task.id }, task.id))) })] })] }, member.id));\n })] })] }), _jsx(DependencyMap, { tasks: team.tasks, t: t })] }));\n}\n/** Legacy conversation cards may outlive their host archive. Project their\n * durable roster through the same rebuilt panel instead of a second UI. */\nfunction historicCardTeam(data, owner) {\n return {\n workspace: '',\n teamId: data.teamId,\n name: data.teamName,\n captainSessionId: data.captainSessionId || owner,\n members: data.members.map((member) => ({\n ...member,\n status: 'removed',\n activity: 'idle',\n progress: 0,\n done: 0,\n total: 0,\n currentTask: '',\n unread: 0,\n })),\n tasks: [],\n messageCount: 0,\n captainInbox: [],\n };\n}\nexport function ActivityPanel({ sessionsList, openMember, t }) {\n // Navigating to a member's subagent transcript is an explicit departure:\n // hide the floater immediately instead of waiting out the autocollapse\n // grace, so the panel never lingers over the member session.\n const navigateToSession = (parentId, childId) => {\n setOpen(false);\n setWasActive(false);\n openMember(parentId, childId);\n };\n const [open, setOpen] = useState(false);\n const [openOwner, setOpenOwner] = useState();\n const [autoOpened, setAutoOpened] = useState(false);\n const [wasActive, setWasActive] = useState(false);\n const [historic, setHistoric] = useState(new Map());\n const [layout, setLayout] = useState(initialPanelLayout);\n const [bounds, setBounds] = useState(initialPanelBounds);\n const [interaction, setInteraction] = useState(null);\n const panelRef = useRef(null);\n const boundsRef = useRef(bounds);\n const gestureRef = useRef(null);\n const frameRef = useRef(null);\n const pendingLayoutRef = useRef(null);\n const current = useSyncExternalStore(sessionsList.subscribe, sessionsList.getSnapshot).current;\n const monitorTargets = useSyncExternalStore(subscribeActivityMonitorTargets, getActivityMonitorTargetsSnapshot);\n const { teams, archivedTeams } = useSyncExternalStore(subscribeActivitySnapshots, getActivitySnapshotsSnapshot);\n const currentTargets = useMemo(() => current === undefined ? [] : monitorTargets.filter((target) => target.sessionId === current), [current, monitorTargets]);\n const currentRef = useRef(current);\n useEffect(() => { currentRef.current = current; }, [current]);\n const mountedAtRef = useRef(performance.now());\n const expanded = activityPanelExpandedForSession(open, openOwner, current);\n const geometry = useMemo(() => resolvePanelGeometry(layout, bounds), [layout, bounds]);\n const compact = compactPanelForBounds(bounds);\n const commitLayout = useCallback((next) => {\n setLayout(next);\n }, []);\n useEffect(() => {\n window.localStorage.setItem(PANEL_LAYOUT_STORAGE_KEY, JSON.stringify(layout));\n }, [layout]);\n // The slot sits inside AppFrame, so all geometry is measured against the\n // shell overlay rather than the browser viewport. The conversation's real\n // right edge is the dock anchor and naturally follows sidebar/details\n // concessions without importing their hashed implementation classes.\n useLayoutEffect(() => {\n const overlay = document.querySelector('[data-shell-overlay]');\n if (overlay === null)\n return;\n const conversation = document.querySelector(\"[data-phase='active']\");\n let frame = null;\n const measure = () => {\n frame = null;\n const overlayRect = overlay.getBoundingClientRect();\n const conversationRect = conversation?.getBoundingClientRect();\n const next = {\n width: overlayRect.width,\n height: overlayRect.height,\n anchorRight: conversationRect === undefined\n ? overlayRect.width\n : Math.min(Math.max(conversationRect.right - overlayRect.left, 0), overlayRect.width),\n };\n const previous = boundsRef.current;\n if (previous.width === next.width\n && previous.height === next.height\n && previous.anchorRight === next.anchorRight)\n return;\n boundsRef.current = next;\n setBounds(next);\n };\n const scheduleMeasure = () => {\n frame ??= requestAnimationFrame(measure);\n };\n measure();\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(scheduleMeasure);\n observer?.observe(overlay);\n if (conversation !== null)\n observer?.observe(conversation);\n window.addEventListener('resize', scheduleMeasure);\n return () => {\n if (frame !== null)\n cancelAnimationFrame(frame);\n observer?.disconnect();\n window.removeEventListener('resize', scheduleMeasure);\n };\n }, [current]);\n // This shell overlay survives conversation route changes. Gate expansion by its\n // owning session during render, then clear stale state before paint. This\n // removes the old panel immediately instead of waiting for the no-team\n // autoclose grace period on the destination page.\n useLayoutEffect(() => {\n if (openOwner === undefined || openOwner === current)\n return;\n setOpen(false);\n setOpenOwner(undefined);\n setWasActive(false);\n setAutoOpened(false);\n }, [current, openOwner]);\n // Only the wide docked mode asks the conversation column to yield. Floating\n // and compact modes are intentionally true overlays. The width is written as\n // one shared variable so the panel and the concession cannot drift apart.\n useLayoutEffect(() => {\n const root = document.documentElement;\n const shouldYield = expanded && geometry.mode === 'docked' && !compact;\n if (shouldYield) {\n root.setAttribute(PANEL_OPEN_ATTRIBUTE, '');\n root.style.setProperty(PANEL_SHIFT_PROPERTY, `${geometry.width + PANEL_CONVERSATION_GAP + 18}px`);\n }\n else {\n root.removeAttribute(PANEL_OPEN_ATTRIBUTE);\n root.style.removeProperty(PANEL_SHIFT_PROPERTY);\n }\n return () => {\n root.removeAttribute(PANEL_OPEN_ATTRIBUTE);\n root.style.removeProperty(PANEL_SHIFT_PROPERTY);\n };\n }, [compact, expanded, geometry.mode, geometry.width]);\n useEffect(() => {\n if (current === undefined)\n return;\n // Cards keep live teams on the normal cadence. The current-session scope\n // also performs one cold-start discovery pass so archived/cardless teams\n // survive a browser or `dsh web` restart.\n const controller = startActivityPolling(currentTargets, { discoverySessionId: current });\n return () => { controller.stop(); };\n }, [current, currentTargets]);\n useEffect(() => {\n const onOpenPanel = (event) => {\n const activeSession = currentRef.current;\n if (activeSession === undefined)\n return;\n setOpenOwner(activeSession);\n setOpen(true);\n const detail = event.detail;\n if (detail?.teamId !== undefined) {\n // A card from a log that predates captainSessionId belongs to the\n // session that activated it (the current one at injection time).\n const owner = detail.captainSessionId !== '' ? detail.captainSessionId : currentRef.current ?? '';\n const teamKey = `${owner}:${detail.teamId}`;\n setHistoric((previous) => {\n const next = new Map(previous);\n next.set(teamKey, { data: detail, owner });\n return next;\n });\n }\n };\n window.addEventListener(OPEN_PANEL_EVENT, onOpenPanel);\n return () => {\n window.removeEventListener(OPEN_PANEL_EVENT, onOpenPanel);\n };\n }, []);\n // Teams follow the current session: live snapshots and historic card\n // summaries are visible only while their captain session is current.\n const visibleTeams = useMemo(\n // No current session (initial load): show nothing until one is picked,\n // so cross-session teams never leak into the floater.\n () => (current === undefined ? [] : teams.filter((team) => team.captainSessionId === current)), [teams, current]);\n const visibleHistoric = useMemo(() => (current === undefined ? [] : [...historic.values()].filter(({ data, owner }) => owner === current && !teams.some((live) => live.captainSessionId === current && live.teamId === data.teamId) && !archivedTeams.some((archived) => archived.captainSessionId === current && archived.teamId === data.teamId))), [historic, current, teams, archivedTeams]);\n const visibleArchived = useMemo(() => (current === undefined ? [] : archivedTeams.filter((team) => team.captainSessionId === current && !teams.some((live) => live.captainSessionId === current && live.teamId === team.teamId))), [archivedTeams, current, teams]);\n const visibleCount = visibleTeams.length + visibleArchived.length + visibleHistoric.length;\n useEffect(() => {\n if (visibleCount > 0) {\n setWasActive(true);\n // Auto-expand only after the page-settle window: opening (and its\n // main-column yield) right after load reads as a whole-page flicker.\n const settled = performance.now() - mountedAtRef.current >= AUTO_OPEN_SETTLE_MS;\n if (!autoOpened && settled) {\n setOpenOwner(current);\n setOpen(true);\n setAutoOpened(true);\n }\n return;\n }\n if (!wasActive)\n return;\n const timer = setTimeout(() => {\n setOpen(false);\n setOpenOwner(undefined);\n setWasActive(false);\n // Re-arm auto-expand: a later activity (new team, new session) may\n // open the panel on its own again.\n setAutoOpened(false);\n }, AUTOCLOSE_GRACE_MS);\n return () => { clearTimeout(timer); };\n }, [visibleCount, autoOpened, wasActive]);\n const busy = useMemo(() => visibleTeams.some((team) => team.members.some((member) => member.activity === 'working')), [visibleTeams]);\n const hasTeams = visibleCount > 0;\n // Auto-height panels do not store their live content height. Capture the\n // rendered box when a pointer gesture starts so movement and a first manual\n // resize clamp against what the user actually sees.\n const panelGeometryForGesture = useCallback(() => {\n const measuredHeight = panelRef.current?.getBoundingClientRect().height;\n if (measuredHeight === undefined || measuredHeight <= 0)\n return geometry;\n return { ...geometry, height: measuredHeight };\n }, [geometry]);\n const flushScheduledLayout = useCallback(() => {\n if (frameRef.current !== null) {\n cancelAnimationFrame(frameRef.current);\n frameRef.current = null;\n }\n const pending = pendingLayoutRef.current;\n pendingLayoutRef.current = null;\n if (pending !== null)\n commitLayout(pending);\n }, [commitLayout]);\n const scheduleLayout = useCallback((next) => {\n pendingLayoutRef.current = next;\n frameRef.current ??= requestAnimationFrame(() => {\n frameRef.current = null;\n const pending = pendingLayoutRef.current;\n pendingLayoutRef.current = null;\n if (pending !== null)\n commitLayout(pending);\n });\n }, [commitLayout]);\n useEffect(() => () => {\n if (frameRef.current !== null)\n cancelAnimationFrame(frameRef.current);\n }, []);\n const beginMove = useCallback((event) => {\n if (compact || event.button !== 0 || event.target.closest('button') !== null)\n return;\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n gestureRef.current = {\n kind: 'move',\n pointerId: event.pointerId,\n originX: event.clientX,\n originY: event.clientY,\n start: panelGeometryForGesture(),\n activated: false,\n };\n }, [compact, panelGeometryForGesture]);\n const beginResize = useCallback((edge, event) => {\n if (compact || event.button !== 0 || (geometry.mode === 'docked' && edge !== 'left'))\n return;\n event.preventDefault();\n event.stopPropagation();\n event.currentTarget.setPointerCapture(event.pointerId);\n gestureRef.current = {\n kind: 'resize',\n edge,\n pointerId: event.pointerId,\n originX: event.clientX,\n originY: event.clientY,\n start: panelGeometryForGesture(),\n activated: true,\n };\n setInteraction('resizing');\n }, [compact, geometry.mode, panelGeometryForGesture]);\n const updateGesture = useCallback((event) => {\n const gesture = gestureRef.current;\n if (gesture === null || gesture.pointerId !== event.pointerId\n || !event.currentTarget.hasPointerCapture(event.pointerId))\n return;\n const dx = event.clientX - gesture.originX;\n const dy = event.clientY - gesture.originY;\n const activeBounds = boundsRef.current;\n if (gesture.kind === 'move') {\n if (!gesture.activated && Math.hypot(dx, dy) < MOVE_THRESHOLD)\n return;\n if (!gesture.activated) {\n gesture.activated = true;\n setInteraction('dragging');\n }\n scheduleLayout(movePanelLayout(floatPanelLayout(gesture.start, activeBounds), dx, dy, activeBounds));\n return;\n }\n scheduleLayout(resizePanelLayout(gesture.start, gesture.edge ?? 'left', dx, dy, activeBounds));\n }, [scheduleLayout]);\n const endGesture = useCallback((event) => {\n const gesture = gestureRef.current;\n if (gesture === null || gesture.pointerId !== event.pointerId)\n return;\n updateGesture(event);\n flushScheduledLayout();\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n gestureRef.current = null;\n setInteraction(null);\n }, [flushScheduledLayout, updateGesture]);\n const cancelGesture = useCallback((event) => {\n const gesture = gestureRef.current;\n if (gesture === null || gesture.pointerId !== event.pointerId)\n return;\n flushScheduledLayout();\n gestureRef.current = null;\n setInteraction(null);\n }, [flushScheduledLayout]);\n const toggleDock = useCallback(() => {\n const liveGeometry = panelGeometryForGesture();\n commitLayout(liveGeometry.mode === 'docked'\n ? floatPanelLayout(liveGeometry, boundsRef.current)\n : dockPanelLayout(liveGeometry, boundsRef.current));\n }, [commitLayout, panelGeometryForGesture]);\n const autoHeight = panelUsesAutoHeight(geometry, bounds);\n const panelStyle = {\n width: geometry.width,\n height: autoHeight ? 'auto' : geometry.height,\n maxHeight: panelMaximumHeight(geometry, bounds),\n transform: `translate3d(${geometry.x}px, ${geometry.y}px, 0)`,\n };\n if (!hasTeams && !expanded)\n return null;\n return (_jsxs(_Fragment, { children: [!expanded && (_jsx(CollapsedBadge, { count: visibleCount, busy: busy, t: t, onClick: () => {\n if (current === undefined)\n return;\n setOpenOwner(current);\n setOpen(true);\n } })), expanded && (_jsxs(\"aside\", { ref: panelRef, className: css.panel, style: panelStyle, \"data-agent-teams-activity\": true, \"data-panel-mode\": geometry.mode, \"data-height-mode\": autoHeight ? 'auto' : 'manual', \"data-compact\": compact || undefined, \"data-dragging\": interaction === 'dragging' || undefined, \"data-resizing\": interaction === 'resizing' || undefined, \"aria-label\": t('activity.panelAria'), children: [_jsxs(\"header\", { className: css.panelHead, onPointerDown: beginMove, onPointerMove: updateGesture, onPointerUp: endGesture, onPointerCancel: cancelGesture, \"data-drag-handle\": !compact || undefined, children: [_jsxs(\"span\", { className: css.panelTitle, children: [t('activity.title'), _jsx(\"span\", { className: css.panelDot, \"data-busy\": busy, \"aria-hidden\": true })] }), _jsxs(\"span\", { className: css.panelControls, children: [!compact && (_jsx(\"button\", { type: \"button\", className: css.iconButton, \"data-control\": \"dock\", \"data-mode\": geometry.mode, onClick: toggleDock, \"aria-label\": t(geometry.mode === 'docked' ? 'activity.float' : 'activity.dockRight'), title: t(geometry.mode === 'docked' ? 'activity.float' : 'activity.dockRight'), children: _jsx(IconPanelLeftOutline16, {}) })), _jsx(\"button\", { type: \"button\", className: css.iconButton, \"data-control\": \"collapse\", onClick: () => {\n setOpen(false);\n setOpenOwner(undefined);\n }, \"aria-label\": t('activity.collapse'), title: t('activity.collapse'), children: _jsx(IconChevronDownOutline14, {}) })] })] }), _jsx(\"div\", { className: css.teams, children: visibleCount === 0\n ? _jsx(\"span\", { className: css.emptyHint, children: t('activity.empty') })\n : (_jsxs(_Fragment, { children: [visibleTeams.map((team) => (_jsx(TeamSection, { team: team, onNavigate: navigateToSession, t: t }, team.teamId))), visibleArchived.map((team) => (_jsxs(\"div\", { \"data-team-id\": team.teamId, \"data-historic\": true, className: css.archivedWrap, children: [_jsx(\"span\", { className: css.archiveLabel, children: t('archive.label') }), _jsx(TeamSection, { team: team, onNavigate: navigateToSession, t: t, historic: true })] }, `${team.captainSessionId}:${team.teamId}`))), visibleHistoric.map(({ data: team, owner }) => {\n const teamKey = `${owner}:${team.teamId}`;\n return (_jsx(TeamSection, { team: historicCardTeam(team, owner), onNavigate: navigateToSession, t: t, historic: true }, teamKey));\n })] })) }), !compact && (_jsx(\"div\", { className: css.resizeHandle, \"data-resize-edge\": \"left\", onPointerDown: (event) => { beginResize('left', event); }, onPointerMove: updateGesture, onPointerUp: endGesture, onPointerCancel: cancelGesture, \"aria-hidden\": true })), !compact && geometry.mode === 'floating' && (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: css.resizeHandle, \"data-resize-edge\": \"bottom\", onPointerDown: (event) => { beginResize('bottom', event); }, onPointerMove: updateGesture, onPointerUp: endGesture, onPointerCancel: cancelGesture, \"aria-hidden\": true }), _jsx(\"div\", { className: css.resizeHandle, \"data-resize-edge\": \"corner\", onPointerDown: (event) => { beginResize('corner', event); }, onPointerMove: updateGesture, onPointerUp: endGesture, onPointerCancel: cancelGesture, \"aria-hidden\": true })] }))] }))] }));\n}\n","/**\n * AgentTeams conversation card: a lightweight in-conversation summary shown\n * when a team is created — the captain's name, the member roster with whale\n * avatars, and an entry point that re-activates the top-right activity\n * panel (useful after the floater was closed, or when re-opening an old\n * session for review).\n *\n * The fold anchors to the Harness's durable `tool/call` + `tool/result`\n * records for `agent_teams_create`. Those are first-party session events, so\n * the card survives restarts without writing an out-of-repo event type.\n * @module dsh-agent-teams/client/card\n */\n/** Parse the only create-call fields the historic card owns. */\nexport function parseAgentTeamsCreateArgs(value) {\n try {\n const parsed = JSON.parse(value);\n if (typeof parsed !== 'object' || parsed === null || !('name' in parsed) || typeof parsed.name !== 'string') {\n return undefined;\n }\n const name = parsed.name.trim();\n if (name === '')\n return undefined;\n const cleaned = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');\n return { teamId: cleaned === '' ? 'team' : cleaned, name };\n }\n catch {\n return undefined;\n }\n}\n/** Durable first-party tool events folded into one keyed Chat node. */\nexport const agentTeamsCardDefinition = {\n kind: 'agent-teams',\n target: 'chat',\n match: (event) => {\n if (event.type === 'tool/call' && event.data.name === 'agent_teams_create') {\n return parseAgentTeamsCreateArgs(event.data.arguments) === undefined\n ? null\n : { id: String(event.data.callId), role: 'start' };\n }\n if (event.type === 'tool/result' && event.data.message.source.kind === 'tool') {\n return { id: String(event.data.message.source.callId), role: 'update' };\n }\n return null;\n },\n start: (_context, match) => {\n if (match.event.type !== 'tool/call') {\n throw new Error('agent-teams card start requires agent_teams_create tool/call');\n }\n const parsed = parseAgentTeamsCreateArgs(match.event.data.arguments);\n if (parsed === undefined)\n throw new Error('agent-teams card start requires valid create arguments');\n return { ...parsed, accepted: false };\n },\n update: (context, match) => {\n if (match.event.type !== 'tool/result')\n return context.state;\n const failed = match.event.data.error !== undefined\n || match.event.data.message.content.some((block) => block.type === 'tool-result' && block.isError === true);\n if (failed)\n return context.state;\n return { ...context.state, accepted: true };\n },\n buildViewNode: (context) => {\n if (context.start === undefined)\n return null;\n const state = context.state;\n if (!state.accepted)\n return null;\n return {\n key: context.key,\n kind: 'agent-teams',\n id: context.id,\n target: 'chat',\n anchorSeq: context.start.event.seq,\n location: context.start.location,\n visibility: 'visible',\n data: {\n teamId: state.teamId,\n captainSessionId: '',\n teamName: state.name,\n members: [],\n },\n };\n },\n};\n","/** `agentTeams` namespace dictionaries for every plugin-owned Web surface. */\n/** Dictionary namespace owned by the AgentTeams client plugin. */\nexport const AGENT_TEAMS_LOCALE_NAMESPACE = 'agentTeams';\n/** Simplified Chinese dictionary (the key-set source of truth). */\nexport const zh = {\n 'card.memberCount': '{count} 名成员',\n 'action.openActivityPanel': '打开活动面板',\n 'activity.panelButton': '活动面板',\n 'activity.badgeAria': 'AgentTeams 活动,{count} 个团队',\n 'activity.panelAria': 'AgentTeams 活动面板',\n 'activity.title': 'AgentTeams 活动',\n 'activity.float': '切换为浮动面板',\n 'activity.dockRight': '停靠到右侧',\n 'activity.collapse': '收起活动面板',\n 'activity.empty': '暂无团队活动',\n 'format.listSeparator': '、',\n 'task.status.pending': '待领取',\n 'task.status.claimed': '已认领',\n 'task.status.inProgress': '进行中',\n 'task.status.completed': '已完成',\n 'task.status.failed': '失败',\n 'task.status.cancelled': '已取消',\n 'member.state.working': '工作中',\n 'member.state.failed': '有失败',\n 'member.state.waiting': '等待',\n 'member.state.delivered': '已交付',\n 'member.state.left': '已离队',\n 'member.state.removed': '已移除',\n 'member.state.pending': '待执行',\n 'member.state.unassigned': '待派工',\n 'member.status.executing': '正在执行 {taskId}',\n 'member.status.working': '正在处理已派任务',\n 'member.status.waitingOn': '等待 {taskId} · {assignee}',\n 'member.status.waitingPrerequisite': '等待前置任务',\n 'member.status.waitingAssignment': '等待队长派工',\n 'member.status.delivered': '任务已交付',\n 'member.status.idle': '待继续执行',\n 'member.status.unknown': '状态未知',\n 'task.assignee.unclaimed': '待认领',\n 'task.summary.waitingBreakdown': '等待队长拆解任务',\n 'task.summary.allDelivered': '全部 {count} 项任务已交付',\n 'task.summary.blockedAndRunning': '{tasks}{more} 等待前置,其余已开工',\n 'task.summary.more': ' 等 {count} 项',\n 'task.summary.running': '{tasks} 正在执行',\n 'task.summary.ready': '{tasks} 已就绪待开工',\n 'task.summary.blocked': '{tasks} 等待前置',\n 'task.summary.waitingSchedule': '等待下一轮调度',\n 'progress.aria': '团队总进度',\n 'progress.title': '总进度',\n 'progress.running': '■ 进行中 {count}',\n 'progress.blocked': '■ 等待依赖 {count}',\n 'progress.delivered': '■ 已交付 {count}',\n 'dependency.aria': '任务依赖链',\n 'dependency.parallel': '并行任务',\n 'dependency.title': '任务依赖',\n 'dependency.hint.parallel': '无前后依赖 · 点击查看详情',\n 'dependency.hint.chain': '悬停高亮依赖链 · 点击固定',\n 'dependency.hint.pinned': '{taskId} 已固定 · Esc 取消',\n 'task.runningAria': '运行中',\n 'task.detail.completed': '已完成并交付',\n 'task.detail.noPrerequisite': '无前置,可立即开工',\n 'task.detail.ready': '前置已就绪,可开工',\n 'task.detail.waitingOn': '等待 {tasks}',\n 'task.detail.noDownstream': '无下游任务',\n 'task.detail.unlocks': '完成后解锁 {tasks}',\n 'team.ended': '已结束',\n 'team.stats.members': '{count} 名成员',\n 'team.stats.completed': '{completed}/{total} 完成',\n 'team.stats.messages': '{count} 条消息',\n 'delegation.aria': '队长派工关系',\n 'captain.name': '队长',\n 'captain.role': '拆解 · 派发 · 汇总',\n 'captain.summary': '已派发 {tasks} 项任务给 {members} 名成员',\n 'captain.state.working': '{count} 人执行中',\n 'captain.state.collected': '已收齐',\n 'captain.state.waiting': '等待回报',\n 'members.toggle': '{count} 名成员',\n 'members.collapse': '收起',\n 'members.expand': '展开',\n 'members.empty': '暂无成员,等待队长组建团队',\n 'assignment.label': '队长派发',\n 'assignment.empty': '暂无任务',\n 'archive.label': '已结束 · 历史归档',\n};\n/** English dictionary, checked complete against the Chinese source key set. */\nexport const en = {\n 'card.memberCount': '{count} members',\n 'action.openActivityPanel': 'Open activity panel',\n 'activity.panelButton': 'Activity panel',\n 'activity.badgeAria': 'AgentTeams activity, {count} teams',\n 'activity.panelAria': 'AgentTeams activity panel',\n 'activity.title': 'AgentTeams activity',\n 'activity.float': 'Switch to floating panel',\n 'activity.dockRight': 'Dock to the right',\n 'activity.collapse': 'Collapse activity panel',\n 'activity.empty': 'No team activity',\n 'format.listSeparator': ', ',\n 'task.status.pending': 'Unclaimed',\n 'task.status.claimed': 'Claimed',\n 'task.status.inProgress': 'In progress',\n 'task.status.completed': 'Completed',\n 'task.status.failed': 'Failed',\n 'task.status.cancelled': 'Cancelled',\n 'member.state.working': 'Working',\n 'member.state.failed': 'Has failures',\n 'member.state.waiting': 'Waiting',\n 'member.state.delivered': 'Delivered',\n 'member.state.left': 'Left team',\n 'member.state.removed': 'Removed',\n 'member.state.pending': 'Pending',\n 'member.state.unassigned': 'Awaiting assignment',\n 'member.status.executing': 'Working on {taskId}',\n 'member.status.working': 'Working on assigned tasks',\n 'member.status.waitingOn': 'Waiting for {taskId} · {assignee}',\n 'member.status.waitingPrerequisite': 'Waiting for prerequisites',\n 'member.status.waitingAssignment': 'Waiting for the captain to assign work',\n 'member.status.delivered': 'Tasks delivered',\n 'member.status.idle': 'Ready to continue',\n 'member.status.unknown': 'Status unknown',\n 'task.assignee.unclaimed': 'Unclaimed',\n 'task.summary.waitingBreakdown': 'Waiting for the captain to break down the work',\n 'task.summary.allDelivered': 'All {count} tasks delivered',\n 'task.summary.blockedAndRunning': '{tasks}{more} waiting on prerequisites; other work has started',\n 'task.summary.more': ' and {count} more',\n 'task.summary.running': '{tasks} in progress',\n 'task.summary.ready': '{tasks} ready to start',\n 'task.summary.blocked': '{tasks} waiting on prerequisites',\n 'task.summary.waitingSchedule': 'Waiting for the next scheduling round',\n 'progress.aria': 'Overall team progress',\n 'progress.title': 'Overall progress',\n 'progress.running': '■ In progress {count}',\n 'progress.blocked': '■ Waiting {count}',\n 'progress.delivered': '■ Delivered {count}',\n 'dependency.aria': 'Task dependency chain',\n 'dependency.parallel': 'Parallel tasks',\n 'dependency.title': 'Task dependencies',\n 'dependency.hint.parallel': 'No dependencies · Click for details',\n 'dependency.hint.chain': 'Hover to highlight dependencies · Click to pin',\n 'dependency.hint.pinned': '{taskId} pinned · Esc to clear',\n 'task.runningAria': 'Running',\n 'task.detail.completed': 'Completed and delivered',\n 'task.detail.noPrerequisite': 'No prerequisites; ready to start',\n 'task.detail.ready': 'Prerequisites ready; can start',\n 'task.detail.waitingOn': 'Waiting for {tasks}',\n 'task.detail.noDownstream': 'No downstream tasks',\n 'task.detail.unlocks': 'Unlocks {tasks} when complete',\n 'team.ended': 'Ended',\n 'team.stats.members': '{count} members',\n 'team.stats.completed': '{completed}/{total} completed',\n 'team.stats.messages': '{count} messages',\n 'delegation.aria': 'Captain delegation map',\n 'captain.name': 'Captain',\n 'captain.role': 'Break down · Delegate · Synthesize',\n 'captain.summary': 'Assigned {tasks} tasks to {members} members',\n 'captain.state.working': '{count} active',\n 'captain.state.collected': 'All reports received',\n 'captain.state.waiting': 'Waiting for reports',\n 'members.toggle': 'Members {count}',\n 'members.collapse': 'Collapse',\n 'members.expand': 'Expand',\n 'members.empty': 'No members yet; waiting for the captain to assemble the team',\n 'assignment.label': 'Captain assigned',\n 'assignment.empty': 'No tasks',\n 'archive.label': 'Ended · Archived history',\n};\n","/** Version-tolerant navigation into durable AgentTeams member transcripts. */\n/**\n * Open one member's persisted transcript.\n *\n * Harness rc.8 intentionally removed cold subagents from the ordinary session\n * list. They must first be rediscovered in their parent's catalog, then opened\n * with the exact parent/child/mode address. Older runtimes have only `open()`;\n * the fallback preserves the plugin's rc.6 peer range.\n */\nexport async function openAgentTeamMember(sessions, parentSessionId, childSessionId) {\n if (sessions.openSubagent === undefined || sessions.refreshSubagents === undefined) {\n sessions.open(childSessionId);\n return 'session';\n }\n await sessions.refreshSubagents(parentSessionId);\n const retained = sessions.subagentAddress?.(childSessionId);\n sessions.openSubagent(retained?.parentSessionId === parentSessionId\n ? retained\n : { parentSessionId, childSessionId, mode: 'continuable' });\n return 'subagent';\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ActivityPanel } from \"./ActivityPanel.js\";\nimport { AgentTeamsCard } from \"./AgentTeamsCard.js\";\nimport { agentTeamsCardDefinition } from \"./agent-teams-card-definition.js\";\nimport { AGENT_TEAMS_LOCALE_NAMESPACE, en, zh, } from \"./locales.js\";\nimport { openAgentTeamMember } from \"./session-navigation.js\";\n/** Required services: conversation nodes, slots, sessions navigation, and locale. */\nexport const inject = ['conversationEvents', 'slots', 'sessions', 'locale'];\n/** The replayed user message is the canonical transcript entry. */\nfunction HiddenAgentTeamsCommand() {\n return null;\n}\n/**\n * Register the activity monitor in the shell's additive overlay and the\n * in-conversation team card. The card's activity button re-opens a folded\n * monitor via a window event — the recovery path for an old session.\n */\nexport function apply(ctx) {\n ctx.effect(() => ctx.locale.register(AGENT_TEAMS_LOCALE_NAMESPACE, { zh, en }), 'agent-teams: dictionaries');\n const openMember = (parentId, childId) => {\n void openAgentTeamMember(ctx.sessions, parentId, childId).catch((error) => {\n console.warn(`agent-teams: failed to open member transcript ${childId}: ${String(error)}`);\n });\n };\n const Panel = ({ t }) => (_jsx(ActivityPanel, { sessionsList: ctx.sessions.list, openMember: openMember, t: t }));\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'agent-teams-activity',\n order: 80,\n label: 'AgentTeams activity',\n locale: AGENT_TEAMS_LOCALE_NAMESPACE,\n }, Panel));\n // The host command is only the slash-menu/admission surface. Its input is\n // replayed as the visible user message, so the generic result row would be\n // a duplicate placed before that message by command lifecycle ordering.\n ctx.slots.inject('conversation.chat.commandview', () => ctx.slots.register({\n name: 'conversation.chat.commandview',\n key: 'agent-teams',\n }, HiddenAgentTeamsCommand));\n ctx.conversationEvents.register(agentTeamsCardDefinition);\n ctx.slots.inject('conversation.chat.node', () => ctx.slots.register({\n name: 'conversation.chat.node',\n key: 'agent-teams',\n locale: AGENT_TEAMS_LOCALE_NAMESPACE,\n inject: () => ({\n openMember,\n }),\n }, AgentTeamsCard));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["css","css","Menu","css","IconBranchOutline16","_Fragment","IconStopFill16","Modal","IconWarningOutline16","IconPanelLeftOutline16","IconChevronDownOutline14"],"sources":["client/activity-model.js","client/activity-monitor.js","client/artwork.js","client/AgentTeamsCard.js","client/StagingPlanEditor.js","client/panel-geometry.js","client/ActivityPanel.js","client/agent-teams-card-definition.js","client/locales.js","client/session-navigation.js","client/index.js"],"sourcesContent":["/** Pure relationship projections used by the AgentTeams activity panel. */\n/** Reference-panel geometry: narrow nodes with enough room for curved edges. */\nexport const COMPACT_DAG_NODE_WIDTH = 92;\nexport const COMPACT_DAG_NODE_HEIGHT = 30;\nexport const COMPACT_DAG_COLUMN_GAP = 26;\nexport const COMPACT_DAG_ROW_GAP = 8;\n/** Compact `provider/model` route, or just the model when the provider is absent. */\nexport function memberRouteLabel(member) {\n if (member === undefined)\n return '';\n const provider = member.provider?.trim() ?? '';\n const model = member.model?.trim() ?? '';\n if (provider !== '' && model !== '')\n return `${provider}/${model}`;\n return model;\n}\n/**\n * Compact route shown on a running task. Prefer the task's own snapshot\n * field; fall back to the assignee member when older hosts omit it.\n */\nexport function taskModelLabel(task, members) {\n const direct = task.model?.trim() ?? '';\n if (direct !== '')\n return direct;\n return memberRouteLabel(members.find((candidate) => candidate.name === task.assignee));\n}\n/** Short model id for tight DAG/chip surfaces (`openai/gpt-5.6-sol` → `gpt-5.6-sol`). */\nexport function compactModelLabel(route) {\n const trimmed = route.trim();\n if (trimmed === '')\n return '';\n const slash = trimmed.lastIndexOf('/');\n return slash === -1 ? trimmed : trimmed.slice(slash + 1);\n}\n/** A live team the current captain still owns and has not halted. */\nexport function liveCaptainTeam(teams, sessionId) {\n const owner = sessionId?.trim() ?? '';\n if (owner === '')\n return undefined;\n return teams.find((team) => team.captainSessionId === owner && team.halted !== true);\n}\n/** Whether the captain chat should keep showing the in-progress banner. */\nexport function teamIsActive(team) {\n if (team.halted === true || team.phase === 'staged')\n return false;\n if (team.members.some((member) => member.activity === 'working' || member.status === 'working'))\n return true;\n if (team.tasks.some((task) => task.status === 'pending' || task.status === 'claimed' || task.status === 'in_progress'))\n return true;\n return team.members.length > 0 && team.tasks.length === 0;\n}\n/** Compact banner copy: running members, otherwise the current planning state. */\nexport function teamProgressSummary(team, separator) {\n const workingMembers = team.members.filter((member) => member.activity === 'working' || member.status === 'working');\n const runningTasks = team.tasks.filter((task) => task.status === 'claimed' || task.status === 'in_progress');\n const labels = runningTasks.map((task) => task.subject.trim() || task.id).filter((label) => label !== '');\n if (workingMembers.length > 0 || labels.length > 0) {\n return {\n working: Math.max(workingMembers.length, labels.length),\n detail: labels.slice(0, 2).join(separator),\n };\n }\n if (team.tasks.length === 0)\n return { working: 0, detail: '' };\n return { working: 0, detail: '' };\n}\n/** Use a fill-width grid when the task graph has no real dependency edges. */\nexport function usesParallelTaskGrid(tasks) {\n if (tasks.length === 0)\n return false;\n const taskIds = new Set(tasks.map((task) => task.id));\n return tasks.every((task) => task.dependencies.every((dependency) => !taskIds.has(dependency)));\n}\n/**\n * Whether an expanded activity panel still belongs to the current session.\n *\n * The panel is mounted in the root-scoped shell overlay, so React does not\n * remount it when the conversation route changes. Ownership keeps an expanded\n * panel from leaking onto the new-session screen (or another conversation)\n * while its local open state is being reset.\n */\nexport function activityPanelExpandedForSession(open, owner, current) {\n return open && owner !== undefined && owner === current;\n}\n/**\n * Auto-expand only for live teams that appear after the current session's\n * initial restore pass. Replayed cards, archived teams, and live teams restored\n * while reopening a conversation must remain behind the collapsed badge.\n */\nexport function activityPanelShouldAutoExpand({ alreadyAutoOpened, pageSettled, restoreComplete, previousLiveTeamIds, currentLiveTeamIds, }) {\n return !alreadyAutoOpened\n && pageSettled\n && restoreComplete\n && currentLiveTeamIds.some((teamId) => !previousLiveTeamIds.has(teamId));\n}\n/**\n * Resolve the task whose dependency chain should be highlighted.\n *\n * A pinned task is an explicit user choice. Keyboard focus takes precedence\n * over delayed pointer intent so an older hover timer cannot steal the active\n * chain from someone navigating the task map with the keyboard.\n */\nexport function dependencyFocusTaskId(pinnedTaskId, keyboardTaskId, hoverTaskId) {\n return pinnedTaskId ?? keyboardTaskId ?? hoverTaskId;\n}\n/** Group tasks by their precomputed dependency depth. */\nexport function taskStages(tasks) {\n const byDepth = new Map();\n for (const task of tasks) {\n const depth = Number.isFinite(task.depth) ? Math.max(0, Math.floor(task.depth)) : 0;\n const stage = byDepth.get(depth) ?? [];\n stage.push(task);\n byDepth.set(depth, stage);\n }\n return [...byDepth.entries()]\n .sort(([left], [right]) => left - right)\n .map(([depth, stageTasks]) => ({\n depth,\n tasks: stageTasks.slice().sort((left, right) => left.id.localeCompare(right.id, 'en', { numeric: true })),\n }));\n}\n/**\n * Lay tasks out as the reference panel's compact left-to-right DAG.\n *\n * Columns are dependency-depth stages. Rows are stable task-id order within\n * each stage. Edges use cubic curves so fan-in remains readable without\n * turning every task into a large card.\n */\nexport function compactDagLayout(tasks) {\n const stages = taskStages(tasks);\n const positions = new Map();\n const nodes = [];\n for (const [column, stage] of stages.entries()) {\n for (const [row, task] of stage.tasks.entries()) {\n const x = column * (COMPACT_DAG_NODE_WIDTH + COMPACT_DAG_COLUMN_GAP);\n const y = row * (COMPACT_DAG_NODE_HEIGHT + COMPACT_DAG_ROW_GAP);\n positions.set(task.id, { x, y });\n nodes.push({ task, x, y });\n }\n }\n const edges = [];\n for (const task of tasks) {\n const target = positions.get(task.id);\n if (target === undefined)\n continue;\n for (const dependency of task.dependencies) {\n const source = positions.get(dependency);\n if (source === undefined)\n continue;\n const x1 = source.x + COMPACT_DAG_NODE_WIDTH;\n const y1 = source.y + COMPACT_DAG_NODE_HEIGHT / 2;\n const x2 = target.x;\n const y2 = target.y + COMPACT_DAG_NODE_HEIGHT / 2;\n edges.push({\n from: dependency,\n to: task.id,\n path: `M${x1} ${y1}C${x1 + 14} ${y1},${x2 - 14} ${y2},${x2} ${y2}`,\n });\n }\n }\n const rows = Math.max(1, ...stages.map((stage) => stage.tasks.length));\n return {\n width: stages.length === 0\n ? 0\n : stages.length * COMPACT_DAG_NODE_WIDTH + (stages.length - 1) * COMPACT_DAG_COLUMN_GAP,\n height: stages.length === 0\n ? 0\n : rows * COMPACT_DAG_NODE_HEIGHT + (rows - 1) * COMPACT_DAG_ROW_GAP,\n nodes,\n edges,\n };\n}\n/**\n * Return the complete upstream/downstream chain around one task.\n *\n * Traversal uses both dependency directions and remains cycle-safe, so the UI\n * can highlight every handoff related to the focused task even if malformed\n * durable data contains a cycle.\n */\nexport function relatedTaskIds(taskId, tasks) {\n const byId = new Map(tasks.map((task) => [task.id, task]));\n if (!byId.has(taskId))\n return new Set();\n const dependents = new Map();\n for (const task of tasks) {\n for (const dependency of task.dependencies) {\n const targets = dependents.get(dependency) ?? [];\n targets.push(task.id);\n dependents.set(dependency, targets);\n }\n }\n const related = new Set();\n const upstreamSeen = new Set();\n const downstreamSeen = new Set();\n const visitUpstream = (id) => {\n if (upstreamSeen.has(id))\n return;\n upstreamSeen.add(id);\n related.add(id);\n for (const dependency of byId.get(id)?.dependencies ?? [])\n visitUpstream(dependency);\n };\n const visitDownstream = (id) => {\n if (downstreamSeen.has(id))\n return;\n downstreamSeen.add(id);\n related.add(id);\n for (const dependent of dependents.get(id) ?? [])\n visitDownstream(dependent);\n };\n visitUpstream(taskId);\n visitDownstream(taskId);\n return related;\n}\n","/** Shared, demand-driven state for the AgentTeams browser monitor. */\nconst targets = new Map();\nconst targetListeners = new Set();\nconst snapshotListeners = new Set();\nlet targetSnapshot = [];\nlet activitySnapshots = { teams: [], archivedTeams: [] };\nfunction targetKey(sessionId, teamId) {\n return `${sessionId}\\u0000${teamId}`;\n}\nfunction publishTargets() {\n targetSnapshot = [...targets.values()]\n .filter((target) => target.active)\n .map(({ key, sessionId, teamId }) => ({ key, sessionId, teamId }));\n for (const listener of targetListeners)\n listener();\n}\n/** Subscribe to the active monitor-target list (React external-store shape). */\nexport function subscribeActivityMonitorTargets(listener) {\n targetListeners.add(listener);\n return () => { targetListeners.delete(listener); };\n}\n/** Read the stable active-target snapshot. */\nexport function getActivityMonitorTargetsSnapshot() {\n return targetSnapshot;\n}\n/**\n * Register one successful AgentTeams card as a monitoring demand.\n *\n * The returned cleanup is reference-counted so multiple cards and React\n * StrictMode remounts cannot stop another card's monitor.\n */\nexport function monitorAgentTeam(sessionId, teamId) {\n const owner = sessionId.trim();\n const id = teamId.trim();\n if (owner === '' || id === '')\n return () => { };\n const key = targetKey(owner, id);\n const existing = targets.get(key);\n if (existing === undefined) {\n targets.set(key, { key, sessionId: owner, teamId: id, refs: 1, active: true });\n publishTargets();\n }\n else {\n existing.refs += 1;\n if (!existing.active) {\n existing.active = true;\n publishTargets();\n }\n }\n let released = false;\n return () => {\n if (released)\n return;\n released = true;\n const current = targets.get(key);\n if (current === undefined)\n return;\n current.refs -= 1;\n if (current.refs <= 0) {\n targets.delete(key);\n if (current.active)\n publishTargets();\n }\n };\n}\n/** Stop polling targets whose final archived snapshot has been captured. */\nexport function settleActivityMonitorTargets(keys) {\n let changed = false;\n for (const key of keys) {\n const target = targets.get(key);\n if (target?.active !== true)\n continue;\n target.active = false;\n changed = true;\n }\n if (changed)\n publishTargets();\n}\n/** Subscribe to the shared live/archive snapshot. */\nexport function subscribeActivitySnapshots(listener) {\n snapshotListeners.add(listener);\n return () => { snapshotListeners.delete(listener); };\n}\n/** Read the stable shared live/archive snapshot. */\nexport function getActivitySnapshotsSnapshot() {\n return activitySnapshots;\n}\n/** Publish one or both successful state-route responses. */\nexport function updateActivitySnapshots(update) {\n const next = {\n teams: update.teams ?? activitySnapshots.teams,\n archivedTeams: update.archivedTeams ?? activitySnapshots.archivedTeams,\n };\n if (next.teams === activitySnapshots.teams && next.archivedTeams === activitySnapshots.archivedTeams)\n return;\n activitySnapshots = next;\n for (const listener of snapshotListeners)\n listener();\n}\n/** Poll cadence for the live host snapshot route. */\nexport const ACTIVITY_POLL_MS = 1000;\n/**\n * Low-frequency probe cadence while a cardless discovery session still owns\n * no team. The probe keeps the panel able to pick up a team created later in\n * that session (e.g. a run_code-wrapped agent_teams_create) without turning\n * every ordinary session into a one-second filesystem scan.\n */\nexport const ACTIVITY_PROBE_MS = 5000;\n/** Host route serving live and archived team snapshots. */\nexport const ACTIVITY_STATE_URL = '/plugins/dsh-agent-teams/state';\nexport const ACTIVITY_HALT_URL = '/plugins/dsh-agent-teams/halt';\n/**\n * Start the single polling loop for the current session's requested targets.\n *\n * With neither targets nor a discovery session this is deliberately inert.\n * Explicit card targets poll at the live cadence from the start. A discovery\n * session performs an immediate live+archive restore pass, then — while it\n * still owns no team — probes on a low-frequency cadence, so a team created\n * later in that session (e.g. a run_code-wrapped agent_teams_create) is\n * discovered without a manual reload, without turning every ordinary session\n * into a one-second filesystem scan. The moment a team for the discovery\n * session appears, the controller upgrades to the live one-second cadence for\n * the rest of its lifetime. The caller — the session view, which stops the\n * controller when the session is no longer current — bounds the lifetime, and\n * archive state is refreshed when a target or a previously discovered live\n * team disappears.\n */\nexport function startActivityPolling(monitorTargets, runtime = {}) {\n const discoverySessionId = runtime.discoverySessionId?.trim();\n if (monitorTargets.length === 0 && (discoverySessionId === undefined || discoverySessionId === '')) {\n return { firstTick: Promise.resolve(), stop: () => { } };\n }\n const fetchState = runtime.fetchState ?? ((url, init) => fetch(url, init));\n const schedule = runtime.schedule ?? ((callback, intervalMs) => setInterval(callback, intervalMs));\n const cancel = runtime.cancel ?? ((timer) => { clearInterval(timer); });\n const publishSnapshots = runtime.publishSnapshots ?? updateActivitySnapshots;\n const settleTargets = runtime.settleTargets ?? settleActivityMonitorTargets;\n let cancelled = false;\n let inFlight = false;\n // Explicit card targets are demanded work: start at the live cadence. A\n // discovery session starts probing low-frequency and upgrades on detection.\n let hot = monitorTargets.length > 0;\n let discoveryComplete = false;\n let discoveredLiveKeys = new Set();\n let controller;\n let timer;\n const intervalMs = () => (hot ? ACTIVITY_POLL_MS : ACTIVITY_PROBE_MS);\n const reschedule = () => {\n cancel(timer);\n timer = schedule(() => { void tick(); }, intervalMs());\n };\n const tick = async () => {\n if (inFlight || cancelled)\n return;\n inFlight = true;\n controller = new AbortController();\n try {\n const liveResponse = await fetchState(ACTIVITY_STATE_URL, {\n cache: 'no-store',\n signal: controller.signal,\n });\n if (!liveResponse.ok)\n return;\n const body = (await liveResponse.json());\n if (cancelled || !Array.isArray(body.teams))\n return;\n const liveTeams = body.teams;\n publishSnapshots({ teams: liveTeams });\n const previousDiscoveredKeys = discoveredLiveKeys;\n discoveredLiveKeys = new Set(discoverySessionId === undefined || discoverySessionId === ''\n ? []\n : liveTeams\n .filter((team) => team.captainSessionId === discoverySessionId)\n .map((team) => team.teamId));\n // A discovery session found its first team: upgrade from the low-frequency\n // probe to the live cadence for the rest of the controller lifetime.\n if (!hot && discoveredLiveKeys.size > 0) {\n hot = true;\n reschedule();\n }\n const discoveredTeamArchived = [...previousDiscoveredKeys]\n .some((teamId) => !discoveredLiveKeys.has(teamId));\n const missing = monitorTargets.filter((target) => !liveTeams.some((team) => team.captainSessionId === target.sessionId && team.teamId === target.teamId));\n const needsDiscoveryArchive = discoverySessionId !== undefined\n && discoverySessionId !== ''\n && !discoveryComplete;\n if (missing.length === 0 && !needsDiscoveryArchive && !discoveredTeamArchived)\n return;\n // Archives are immutable per team generation. A successful fallback\n // retires every missing explicit target, including legacy cards whose\n // host archive no longer exists; a discovery session that already\n // upgraded keeps polling, and a still-probing one keeps probing, so a\n // team created later in the same session stays discoverable.\n const archivedResponse = await fetchState(`${ACTIVITY_STATE_URL}?archived=1`, {\n cache: 'no-store',\n signal: controller.signal,\n });\n if (!archivedResponse.ok)\n return;\n const archivedBody = (await archivedResponse.json());\n if (cancelled || !Array.isArray(archivedBody.teams))\n return;\n publishSnapshots({ archivedTeams: archivedBody.teams });\n discoveryComplete = true;\n settleTargets(new Set(missing.map((target) => target.key)));\n }\n catch (error) {\n if (error?.name === 'AbortError')\n return;\n // Host restarting; keep the last snapshot and retry on the next tick.\n }\n finally {\n inFlight = false;\n }\n };\n const firstTick = tick();\n if (timer === undefined)\n timer = schedule(() => { void tick(); }, intervalMs());\n return {\n firstTick,\n stop: () => {\n if (cancelled)\n return;\n cancelled = true;\n controller?.abort();\n cancel(timer);\n },\n };\n}\n","/**\n * Shared whale artwork lookup for the activity panel and the conversation\n * card: role keywords map to the packaged role images; the captain always\n * uses the lead whale.\n * @module dsh-agent-teams/client/artwork\n */\n/** Artwork route prefix served by the plugin host half. */\nexport const ART_BASE = '/plugins/dsh-agent-teams/assets/';\n/** V2 whale role artwork per role keyword. */\nconst ROLE_ART = [\n [/data|analys|metric|performance|数据|分析|指标|性能/, 'member-data-v2.png'],\n [/resear|investig|explor|study|研究|调查|探索|调研/, 'member-researcher-v2.png'],\n // Match compound QA titles (for example \"QA Engineer\") before the broad\n // engineer bucket, otherwise an eight-role roster repeats the engineer art.\n [/\\bqa\\b|test|verif|quality|测试|质量|验证/, 'member-qa-v2.png'],\n [/engineer|dev\\b|server|backend|\\bapi\\b|runtime|watcher|contract|工程|后端|服务|接口|开发|代码|编程/, 'member-engineer-v2.png'],\n [/design|\\bui\\b|\\bux\\b|front|theme|accessib|设计|前端|主题|无障碍/, 'member-designer-v2.png'],\n [/secur|audit|risk|threat|review|安全|审计|审查|风险/, 'member-security-v2.png'],\n [/docs|writer|product|spec|撰写|文案|写作|文档|规范/, 'member-docs-v2.png'],\n [/release|\\bbuild\\b|deploy|\\bops\\b|\\bci\\b|ship|coordin|发布|构建|部署|运维|协调/, 'member-operator-v2.png'],\n];\n/** Captain artwork (always the lead whale). */\nexport const LEAD_ART = `${ART_BASE}team-lead-v2.png`;\n/** Status action artwork per member activity. */\nexport const ACTION_ART = {\n working: `${ART_BASE}action-working-v2.png`,\n idle: `${ART_BASE}action-sleeping-v2.png`,\n unknown: `${ART_BASE}action-thinking-v2.png`,\n};\n/**\n * Member artwork URL, or null when no role matches (initial-letter fallback).\n * @param name - the member's display name.\n * @param role - the member's role text.\n * @returns the artwork URL, or null when unmatched.\n */\nexport function memberArtUrl(name, role) {\n const identity = `${name} ${role}`.toLowerCase();\n for (const [pattern, art] of ROLE_ART) {\n if (pattern.test(identity))\n return `${ART_BASE}${art}`;\n }\n return null;\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * AgentTeams conversation card: the lightweight in-conversation summary for\n * one team — the captain's whale avatar and name, the member roster as\n * clickable whale avatars (opening the member's subagent transcript), and\n * an \"activity panel\" button that re-activates the top-right floater.\n *\n * The floater and this card share the `agent-teams:open-panel` window event\n * so the card can summon the panel even after it was closed (or when an old\n * session is re-opened for review).\n * @module dsh-agent-teams/client/card\n */\nimport { useEffect, useMemo, useSyncExternalStore } from 'react';\nimport { getActivitySnapshotsSnapshot, monitorAgentTeam, subscribeActivitySnapshots, } from \"./activity-monitor.js\";\nimport { LEAD_ART, memberArtUrl } from \"./artwork.js\";\nimport css from './AgentTeamsCard.module.css';\n/** Window event name the floater listens for to open itself. */\nexport const OPEN_PANEL_EVENT = 'agent-teams:open-panel';\n/** Re-activate the top-right activity panel, carrying this team's summary\n * so the panel can show it even when the team no longer exists on disk\n * (historical session review). */\nfunction openActivityPanel(data) {\n window.dispatchEvent(new CustomEvent(OPEN_PANEL_EVENT, {\n detail: {\n teamId: data.teamId,\n captainSessionId: data.captainSessionId,\n teamName: data.teamName,\n members: data.members,\n },\n }));\n}\n/** Render one durable team as a compact conversation card. */\nexport function AgentTeamsCard({ node, openMember, sessionId, t }) {\n const data = node.data;\n // `conversation.chat.node` is session-scoped, so its framework-owned id is\n // a stable owner even while another conversation becomes current.\n const owner = data.captainSessionId || sessionId;\n const { teams, archivedTeams } = useSyncExternalStore(subscribeActivitySnapshots, getActivitySnapshotsSnapshot);\n useEffect(() => {\n return monitorAgentTeam(owner, data.teamId);\n }, [data.teamId, owner]);\n const snapshot = teams.find((team) => team.teamId === data.teamId && (owner === '' || team.captainSessionId === owner))\n ?? archivedTeams.find((team) => team.teamId === data.teamId && (owner === '' || team.captainSessionId === owner));\n const resolved = useMemo(() => ({\n ...data,\n captainSessionId: snapshot?.captainSessionId ?? owner,\n teamName: snapshot?.name ?? data.teamName,\n members: snapshot?.members.map((member) => ({ id: member.id, name: member.name, role: member.role })) ?? data.members,\n }), [data, owner, snapshot]);\n return (_jsxs(\"section\", { className: css.root, \"data-agent-teams-card\": true, \"data-team-id\": resolved.teamId, children: [_jsxs(\"header\", { className: css.head, children: [_jsx(\"img\", { className: css.leadAvatar, src: LEAD_ART, alt: \"\", \"aria-hidden\": true }), _jsx(\"span\", { className: css.teamName, title: resolved.teamName, children: resolved.teamName }), _jsx(\"span\", { className: css.memberCount, children: t('card.memberCount', { count: resolved.members.length }) }), _jsx(\"button\", { type: \"button\", className: css.panelButton, onClick: () => { openActivityPanel(resolved); }, \"aria-label\": t('action.openActivityPanel'), title: t('action.openActivityPanel'), children: t('activity.panelButton') })] }), resolved.members.length > 0 && (_jsx(\"div\", { className: css.members, children: resolved.members.map((member) => (_jsxs(\"button\", { type: \"button\", className: css.member, onClick: () => {\n if (member.id !== '')\n openMember(owner, member.id);\n }, title: member.role === '' ? member.name : `${member.name} · ${member.role}`, children: [memberArtUrl(member.name, member.role) !== null ? (_jsx(\"img\", { className: css.memberArt, src: memberArtUrl(member.name, member.role) ?? '', alt: \"\", \"aria-hidden\": true })) : (_jsx(\"span\", { className: css.memberInitial, children: member.name.trim().slice(0, 1).toUpperCase() || '?' })), _jsx(\"span\", { className: css.memberName, children: member.name })] }, member.id))) }))] }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Editable pre-run roster and DAG review for staged AgentTeams plans.\n *\n * This leaf owns only transient form/disclosure state. Durable truth remains\n * on the host and returns through the ordinary activity polling snapshot.\n * @module dsh-agent-teams/client/staging-plan\n */\nimport { useCallback, useEffect, useId, useState, useSyncExternalStore } from 'react';\nimport { Menu } from '@deepseek-ai/dsh-client-ui-primitives';\nimport css from './ActivityPanel.module.css';\nconst PLAN_URL = '/plugins/dsh-agent-teams/plan';\nfunction useDismissSuccess(feedback, setFeedback) {\n useEffect(() => {\n if (feedback?.tone !== 'success')\n return;\n const timeout = window.setTimeout(() => { setFeedback(undefined); }, 3_500);\n return () => { window.clearTimeout(timeout); };\n }, [feedback, setFeedback]);\n}\nasync function mutatePlan(payload) {\n const response = await fetch(PLAN_URL, {\n method: 'POST',\n cache: 'no-store',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify(payload),\n });\n if (response.ok)\n return;\n let message = `HTTP ${response.status}`;\n try {\n const body = await response.json();\n if (typeof body.error === 'string' && body.error.trim() !== '')\n message = body.error;\n }\n catch { }\n throw new Error(message);\n}\nfunction errorMessage(error) {\n return error instanceof Error ? error.message : String(error);\n}\nfunction DisclosureChevron({ open }) {\n return (_jsx(\"svg\", { className: css.planChevron, \"data-open\": open, width: \"12\", height: \"12\", viewBox: \"0 0 12 12\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", \"aria-hidden\": true, children: _jsx(\"path\", { d: \"M4 2.5 7.5 6 4 9.5\" }) }));\n}\nfunction Feedback({ value }) {\n if (value === undefined)\n return null;\n return (_jsxs(\"span\", { className: css.planFeedback, \"data-tone\": value.tone, role: value.tone === 'error' ? 'alert' : 'status', \"aria-live\": value.tone === 'error' ? 'assertive' : 'polite', children: [_jsx(\"span\", { \"aria-hidden\": true, children: value.tone === 'success'\n ? _jsx(\"svg\", { viewBox: \"0 0 12 12\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"1.8\", children: _jsx(\"path\", { d: \"m2.5 6.2 2.2 2.2 4.8-5\" }) })\n : _jsx(\"svg\", { viewBox: \"0 0 12 12\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"1.8\", children: _jsx(\"path\", { d: \"M6 2.3v4.1M6 8.8v.1\" }) }) }), value.message] }));\n}\nfunction routeKey(provider, model) {\n return JSON.stringify([provider, model]);\n}\nconst MODEL_MENU_OPEN_MODELS = 'open:models';\nconst MODEL_MENU_OPEN_EFFORT = 'open:effort';\nconst MODEL_MENU_BACK = 'navigate:back';\nconst MODEL_MENU_RETRY = 'action:retry';\nconst MODEL_MENU_DEFAULT_EFFORT = 'effort:default';\nfunction modelMenuId(provider, model) {\n return `model:${routeKey(provider, model)}`;\n}\nfunction effortMenuId(effort) {\n return `effort:${effort}`;\n}\n/**\n * Thin staged-plan adapter over the official model directory. It deliberately\n * reads only catalog metadata: choosing a member route must not change the\n * captain session's composer model.\n */\nfunction StagedModelPicker({ directory, provider, model, reasoningEffort, busy, onChange, t, }) {\n const state = useSyncExternalStore(directory.store.subscribe, directory.store.getSnapshot);\n const [open, setOpen] = useState(false);\n const [pane, setPane] = useState('root');\n const catalogRoutes = state.groups.flatMap((group) => group.models.map((candidate) => ({\n key: routeKey(group.id, candidate.id),\n provider: group.id,\n providerName: group.name,\n model: candidate,\n })));\n const selectedKey = routeKey(provider, model);\n const selected = catalogRoutes.find((candidate) => candidate.key === selectedKey);\n const efforts = selected?.model.reasoning?.efforts ?? [];\n const currentMissing = provider !== '' && model !== '' && selected === undefined;\n const defaultEffort = selected?.model.reasoning?.defaultEffort;\n const effectiveEffort = reasoningEffort === '' || reasoningEffort === 'default'\n ? defaultEffort\n : reasoningEffort;\n const selectedEffort = efforts.find((effort) => effort.id === effectiveEffort);\n const modelLabel = selected?.model.name\n ?? (model === '' ? t('plan.model.choose') : model);\n const effortLabel = selectedEffort?.name\n ?? (effectiveEffort === undefined ? t('plan.model.providerDefault') : effectiveEffort);\n const unavailable = state.status === 'error' || state.failures.length > 0;\n const close = () => {\n setOpen(false);\n setPane('root');\n };\n const rootItems = [\n {\n id: MODEL_MENU_OPEN_MODELS,\n label: (_jsxs(\"span\", { className: css.planModelMenuRow, children: [_jsx(\"span\", { children: t('plan.member.model') }), _jsx(\"strong\", { children: modelLabel }), _jsx(DisclosureChevron, { open: false })] })),\n disabled: state.status === 'loading' && catalogRoutes.length === 0,\n },\n {\n id: MODEL_MENU_OPEN_EFFORT,\n label: (_jsxs(\"span\", { className: css.planModelMenuRow, children: [_jsx(\"span\", { children: t('plan.member.reasoning') }), _jsx(\"strong\", { children: effortLabel }), _jsx(DisclosureChevron, { open: false })] })),\n disabled: selected?.model.reasoning === undefined,\n },\n ];\n const modelItems = [\n {\n id: MODEL_MENU_BACK,\n label: (_jsxs(\"span\", { className: css.planModelMenuBack, children: [_jsx(DisclosureChevron, { open: false }), t('plan.model.back')] })),\n },\n { type: 'separator', id: 'models:separator' },\n ];\n if (catalogRoutes.length === 0) {\n modelItems.push({\n id: 'models:empty',\n label: state.status === 'loading' ? t('plan.model.loading') : t('plan.model.empty'),\n disabled: true,\n });\n }\n else {\n for (const group of state.groups) {\n modelItems.push({ type: 'label', id: `provider:${group.id}`, text: group.name });\n for (const candidate of group.models) {\n modelItems.push({\n id: modelMenuId(group.id, candidate.id),\n label: candidate.name,\n });\n }\n }\n }\n const effortItems = [\n {\n id: MODEL_MENU_BACK,\n label: (_jsxs(\"span\", { className: css.planModelMenuBack, children: [_jsx(DisclosureChevron, { open: false }), t('plan.model.back')] })),\n },\n { type: 'separator', id: 'effort:separator' },\n {\n id: MODEL_MENU_DEFAULT_EFFORT,\n label: defaultEffort === undefined\n ? t('plan.model.providerDefault')\n : t('plan.model.modelDefault', {\n effort: efforts.find((effort) => effort.id === defaultEffort)?.name ?? defaultEffort,\n }),\n },\n ...efforts.map((effort) => ({\n id: effortMenuId(effort.id),\n label: (_jsxs(\"span\", { className: css.planModelEffortRow, children: [_jsx(\"span\", { children: effort.name }), effort.description !== undefined && _jsx(\"small\", { children: effort.description })] })),\n })),\n ];\n const items = pane === 'models' ? modelItems : pane === 'effort' ? effortItems : rootItems;\n const selectedId = pane === 'models'\n ? modelMenuId(provider, model)\n : pane === 'effort'\n ? reasoningEffort === '' || reasoningEffort === 'default'\n ? MODEL_MENU_DEFAULT_EFFORT\n : effortMenuId(reasoningEffort)\n : undefined;\n const choose = (id) => {\n if (id === MODEL_MENU_OPEN_MODELS) {\n setPane('models');\n return;\n }\n if (id === MODEL_MENU_OPEN_EFFORT) {\n setPane('effort');\n return;\n }\n if (id === MODEL_MENU_BACK) {\n setPane('root');\n return;\n }\n if (id === MODEL_MENU_RETRY) {\n void directory.load().catch(() => undefined);\n return;\n }\n const nextModel = catalogRoutes.find((candidate) => modelMenuId(candidate.provider, candidate.model.id) === id);\n if (nextModel !== undefined) {\n close();\n if (nextModel.provider === provider && nextModel.model.id === model)\n return;\n onChange({\n provider: nextModel.provider,\n model: nextModel.model.id,\n reasoningEffort: 'default',\n });\n return;\n }\n if (id === MODEL_MENU_DEFAULT_EFFORT) {\n close();\n if (effectiveEffort === defaultEffort)\n return;\n onChange({ provider, model, reasoningEffort: 'default' });\n return;\n }\n const nextEffort = efforts.find((effort) => effortMenuId(effort.id) === id);\n if (nextEffort === undefined)\n return;\n close();\n if (nextEffort.id === reasoningEffort)\n return;\n onChange({ provider, model, reasoningEffort: nextEffort.id });\n };\n return (_jsxs(\"div\", { className: css.planModelPicker, \"data-model-directory-status\": state.status, children: [_jsx(Menu, { open: open, portal: true, align: \"end\", compact: true, className: css.planModelMenu, items: items, footer: unavailable ? [{ id: MODEL_MENU_RETRY, label: t('plan.model.retry') }] : undefined, selectedId: selectedId, onSelect: choose, onClose: close, anchor: (_jsxs(\"button\", { type: \"button\", className: css.planModelTrigger, \"data-plan-model-trigger\": true, \"aria-label\": t('plan.model.triggerAria', { model: modelLabel, effort: effortLabel }), \"aria-haspopup\": \"menu\", \"aria-expanded\": open, disabled: busy, onClick: () => {\n if (open)\n close();\n else {\n setPane('root');\n setOpen(true);\n void directory.load().catch(() => undefined);\n }\n }, children: [_jsxs(\"span\", { className: css.planModelTriggerCopy, children: [_jsx(\"strong\", { children: state.status === 'loading' && catalogRoutes.length === 0 ? t('plan.model.loading') : modelLabel }), _jsx(\"span\", { children: effortLabel })] }), _jsx(DisclosureChevron, { open: open })] })) }), _jsx(\"small\", { className: css.planModelHint, children: currentMissing\n ? t('plan.model.currentUnavailable', { provider, model })\n : selected?.model.description ?? t('plan.model.route', { provider, model }) }), unavailable && (_jsxs(\"span\", { className: css.planModelNotice, role: state.status === 'error' ? 'alert' : 'status', children: [_jsx(\"span\", { children: state.error ?? t('plan.model.partialFailure', { count: state.failures.length }) }), _jsx(\"button\", { type: \"button\", disabled: busy || state.status === 'loading', onClick: () => { void directory.load().catch(() => undefined); }, children: t('plan.model.retry') })] }))] }));\n}\nfunction StagedMemberEditor({ team, member, modelDirectory, onPendingChange, t }) {\n const bodyId = useId();\n const [open, setOpen] = useState(false);\n const [role, setRole] = useState(member.role);\n const [provider, setProvider] = useState(member.provider ?? '');\n const [model, setModel] = useState(member.model ?? '');\n const [reasoningEffort, setReasoningEffort] = useState(member.reasoningEffort ?? '');\n const [executionPrompt, setExecutionPrompt] = useState(member.executionPrompt ?? '');\n const remoteSignature = JSON.stringify([\n member.role,\n member.provider ?? '',\n member.model ?? '',\n member.reasoningEffort ?? '',\n member.executionPrompt ?? '',\n ]);\n const [savedSignature, setSavedSignature] = useState(remoteSignature);\n const [busy, setBusy] = useState(false);\n const [feedback, setFeedback] = useState();\n useDismissSuccess(feedback, setFeedback);\n const signature = JSON.stringify([role, provider, model, reasoningEffort, executionPrompt]);\n const dirty = signature !== savedSignature;\n useEffect(() => {\n onPendingChange(`member:${member.name}`, dirty || busy);\n return () => { onPendingChange(`member:${member.name}`, false); };\n }, [busy, dirty, member.name, onPendingChange]);\n useEffect(() => {\n setRole(member.role);\n setProvider(member.provider ?? '');\n setModel(member.model ?? '');\n setReasoningEffort(member.reasoningEffort ?? '');\n setExecutionPrompt(member.executionPrompt ?? '');\n setSavedSignature(remoteSignature);\n }, [member.role, member.provider, member.model, member.reasoningEffort, member.executionPrompt, remoteSignature]);\n const markEdited = () => { setFeedback(undefined); };\n const persist = async (selection = { provider, model, reasoningEffort }) => {\n const nextSignature = JSON.stringify([\n role,\n selection.provider,\n selection.model,\n selection.reasoningEffort,\n executionPrompt,\n ]);\n setProvider(selection.provider);\n setModel(selection.model);\n setReasoningEffort(selection.reasoningEffort);\n setBusy(true);\n setFeedback(undefined);\n try {\n await mutatePlan({\n sessionId: team.captainSessionId,\n teamId: team.teamId,\n action: 'update_member',\n memberName: member.name,\n role,\n provider: selection.provider,\n model: selection.model,\n reasoningEffort: selection.reasoningEffort,\n executionPrompt,\n });\n setSavedSignature(nextSignature);\n setFeedback({ tone: 'success', message: t('plan.saved') });\n }\n catch (error) {\n setFeedback({ tone: 'error', message: t('plan.failed', { message: errorMessage(error) }) });\n }\n finally {\n setBusy(false);\n }\n };\n const save = async (event) => {\n event.preventDefault();\n await persist();\n };\n const route = `${provider}/${model}`.replace(/^\\//u, '');\n return (_jsxs(\"article\", { className: css.planCard, \"data-plan-member\": member.name, \"data-open\": open, children: [_jsxs(\"button\", { type: \"button\", className: css.planCardHeader, \"aria-expanded\": open, \"aria-controls\": bodyId, onClick: () => { setOpen((current) => !current); }, children: [_jsxs(\"span\", { className: css.planCardIdentity, children: [_jsx(\"strong\", { children: member.name }), _jsx(\"span\", { children: role || t('plan.member.roleFallback') })] }), _jsx(\"span\", { className: css.planCardMeta, title: route, children: route }), dirty && _jsx(\"em\", { className: css.planDirty, children: t('plan.unsaved') }), _jsx(DisclosureChevron, { open: open })] }), open && (_jsxs(\"form\", { id: bodyId, className: css.planCardBody, onSubmit: (event) => { void save(event); }, children: [_jsxs(\"fieldset\", { disabled: busy, children: [_jsxs(\"label\", { children: [t('plan.member.role'), _jsx(\"input\", { name: \"role\", value: role, onChange: (event) => { setRole(event.currentTarget.value); markEdited(); } })] }), _jsx(StagedModelPicker, { directory: modelDirectory, provider: provider, model: model, reasoningEffort: reasoningEffort, busy: busy, onChange: (selection) => { void persist(selection); }, t: t }), _jsxs(\"label\", { children: [t('plan.member.prompt'), _jsx(\"textarea\", { name: \"executionPrompt\", value: executionPrompt, onChange: (event) => { setExecutionPrompt(event.currentTarget.value); markEdited(); }, rows: 3 })] })] }), _jsxs(\"span\", { className: css.planActions, children: [_jsx(Feedback, { value: feedback }), _jsx(\"button\", { type: \"submit\", disabled: busy || !dirty || provider.trim() === '' || model.trim() === '', children: busy ? t('plan.saving') : t('plan.save') })] })] }))] }));\n}\nfunction StagedTaskEditor({ team, task, onPendingChange, t }) {\n const bodyId = useId();\n const taskDependencies = task.dependencies.join(', ');\n const [open, setOpen] = useState(false);\n const [subject, setSubject] = useState(task.subject);\n const [description, setDescription] = useState(task.description ?? '');\n const [assignee, setAssignee] = useState(task.assignee);\n const [dependencies, setDependencies] = useState(taskDependencies);\n const remoteSignature = JSON.stringify([task.subject, task.description ?? '', task.assignee, taskDependencies]);\n const [savedSignature, setSavedSignature] = useState(remoteSignature);\n const [busy, setBusy] = useState(false);\n const [confirmingRemove, setConfirmingRemove] = useState(false);\n const [feedback, setFeedback] = useState();\n useDismissSuccess(feedback, setFeedback);\n const signature = JSON.stringify([subject, description, assignee, dependencies]);\n const dirty = signature !== savedSignature;\n useEffect(() => {\n onPendingChange(`task:${task.id}`, dirty || busy);\n return () => { onPendingChange(`task:${task.id}`, false); };\n }, [busy, dirty, onPendingChange, task.id]);\n useEffect(() => {\n setSubject(task.subject);\n setDescription(task.description ?? '');\n setAssignee(task.assignee);\n setDependencies(taskDependencies);\n setSavedSignature(remoteSignature);\n }, [task.subject, task.description, task.assignee, taskDependencies, remoteSignature]);\n const markEdited = () => {\n setFeedback(undefined);\n setConfirmingRemove(false);\n };\n const save = async (event) => {\n event.preventDefault();\n setBusy(true);\n setFeedback(undefined);\n try {\n await mutatePlan({\n sessionId: team.captainSessionId,\n teamId: team.teamId,\n action: 'update_task',\n taskId: task.id,\n subject,\n description,\n assignee,\n dependencies: dependencies.split(',').map((item) => item.trim()).filter(Boolean),\n });\n setSavedSignature(signature);\n setFeedback({ tone: 'success', message: t('plan.saved') });\n }\n catch (error) {\n setFeedback({ tone: 'error', message: t('plan.failed', { message: errorMessage(error) }) });\n }\n finally {\n setBusy(false);\n }\n };\n const remove = async () => {\n setBusy(true);\n setFeedback(undefined);\n try {\n await mutatePlan({\n sessionId: team.captainSessionId,\n teamId: team.teamId,\n action: 'remove_task',\n taskId: task.id,\n });\n setFeedback({ tone: 'success', message: t('plan.removed') });\n }\n catch (error) {\n setFeedback({ tone: 'error', message: t('plan.failed', { message: errorMessage(error) }) });\n setBusy(false);\n }\n };\n const dependencySummary = task.dependencies.length === 0\n ? t('plan.dependencies.none')\n : t('plan.dependencies.count', { count: task.dependencies.length });\n return (_jsxs(\"article\", { className: css.planCard, \"data-plan-task\": task.id, \"data-open\": open, children: [_jsxs(\"button\", { type: \"button\", className: css.planCardHeader, \"aria-expanded\": open, \"aria-controls\": bodyId, onClick: () => { setOpen((current) => !current); }, children: [_jsx(\"span\", { className: css.planTaskId, children: task.id }), _jsx(\"span\", { className: css.planTaskSummary, title: subject, children: subject }), _jsxs(\"span\", { className: css.planCardMeta, children: [assignee || t('plan.task.unassigned'), \" \\u00B7 \", dependencySummary] }), dirty && _jsx(\"em\", { className: css.planDirty, children: t('plan.unsaved') }), _jsx(DisclosureChevron, { open: open })] }), open && (_jsxs(\"form\", { id: bodyId, className: css.planCardBody, onSubmit: (event) => { void save(event); }, children: [_jsxs(\"fieldset\", { disabled: busy, children: [_jsxs(\"label\", { children: [t('plan.task.subject'), _jsx(\"input\", { name: \"subject\", required: true, value: subject, onChange: (event) => { setSubject(event.currentTarget.value); markEdited(); } })] }), _jsxs(\"label\", { children: [t('plan.task.description'), _jsx(\"textarea\", { name: \"description\", value: description, onChange: (event) => { setDescription(event.currentTarget.value); markEdited(); }, rows: 3 })] }), _jsxs(\"span\", { className: css.planGrid, children: [_jsxs(\"label\", { children: [t('plan.task.assignee'), _jsxs(\"select\", { name: \"assignee\", value: assignee, onChange: (event) => { setAssignee(event.currentTarget.value); markEdited(); }, children: [_jsx(\"option\", { value: \"\", children: t('plan.task.unassigned') }), team.members.map((member) => _jsx(\"option\", { value: member.name, children: member.name }, member.name))] })] }), _jsxs(\"label\", { children: [t('plan.task.dependencies'), _jsx(\"input\", { name: \"dependencies\", value: dependencies, onChange: (event) => { setDependencies(event.currentTarget.value); markEdited(); } }), _jsx(\"small\", { children: t('plan.task.dependenciesHint') })] })] })] }), confirmingRemove && (_jsxs(\"span\", { className: css.planConfirm, role: \"alert\", children: [_jsx(\"span\", { children: t('plan.removeWarning', { task: task.id }) }), _jsx(\"button\", { type: \"button\", onClick: () => { setConfirmingRemove(false); }, children: t('plan.cancel') }), _jsx(\"button\", { type: \"button\", \"data-danger\": true, \"data-confirming\": true, onClick: () => { void remove(); }, children: t('plan.removeConfirm') })] })), _jsxs(\"span\", { className: css.planActions, children: [_jsx(Feedback, { value: feedback }), _jsx(\"button\", { type: \"button\", \"data-danger\": true, onClick: () => { setConfirmingRemove(true); setFeedback(undefined); }, disabled: busy || confirmingRemove, children: t('plan.remove') }), _jsx(\"button\", { type: \"submit\", disabled: busy || !dirty || subject.trim() === '', children: busy ? t('plan.saving') : t('plan.save') })] })] }))] }));\n}\nexport function StagingPlanEditor({ team, modelDirectory, onContinuePlanning, onDiscarded, t }) {\n const membersId = useId();\n const tasksId = useId();\n const [membersOpen, setMembersOpen] = useState(true);\n const [tasksOpen, setTasksOpen] = useState(true);\n const [newTask, setNewTask] = useState('');\n const [busy, setBusy] = useState(false);\n const [discardArmed, setDiscardArmed] = useState(false);\n const [pendingEditors, setPendingEditors] = useState(new Set());\n const [feedback, setFeedback] = useState();\n useDismissSuccess(feedback, setFeedback);\n const dependencyLinks = team.tasks.reduce((total, task) => total + task.dependencies.length, 0);\n const runnable = team.members.length > 0 && team.tasks.length > 0;\n const hasPendingEdits = pendingEditors.size > 0 || newTask.trim() !== '';\n const waitingForFeedback = team.planReviewState === 'awaiting_feedback';\n useEffect(() => {\n void modelDirectory.load().catch(() => undefined);\n }, [modelDirectory]);\n const onPendingChange = useCallback((key, pending) => {\n setPendingEditors((current) => {\n if (pending === current.has(key))\n return current;\n const next = new Set(current);\n if (pending)\n next.add(key);\n else\n next.delete(key);\n return next;\n });\n }, []);\n const addTask = async (event) => {\n event.preventDefault();\n setBusy(true);\n setFeedback(undefined);\n try {\n await mutatePlan({\n sessionId: team.captainSessionId,\n teamId: team.teamId,\n action: 'add_task',\n subject: newTask,\n dependencies: [],\n });\n setNewTask('');\n setFeedback({ tone: 'success', message: t('plan.taskAdded') });\n setTasksOpen(true);\n }\n catch (error) {\n setFeedback({ tone: 'error', message: t('plan.failed', { message: errorMessage(error) }) });\n }\n finally {\n setBusy(false);\n }\n };\n const approve = async () => {\n setBusy(true);\n setFeedback(undefined);\n try {\n await mutatePlan({\n sessionId: team.captainSessionId,\n teamId: team.teamId,\n action: 'approve',\n });\n }\n catch (error) {\n setFeedback({ tone: 'error', message: t('plan.failed', { message: errorMessage(error) }) });\n setBusy(false);\n }\n };\n const continueInChat = async () => {\n if (waitingForFeedback) {\n onContinuePlanning();\n return;\n }\n setBusy(true);\n setFeedback(undefined);\n try {\n await mutatePlan({\n sessionId: team.captainSessionId,\n teamId: team.teamId,\n action: 'continue',\n });\n onContinuePlanning();\n }\n catch (error) {\n setFeedback({ tone: 'error', message: t('plan.failed', { message: errorMessage(error) }) });\n setBusy(false);\n }\n };\n const discard = async () => {\n setBusy(true);\n setFeedback(undefined);\n try {\n await mutatePlan({\n sessionId: team.captainSessionId,\n teamId: team.teamId,\n action: 'discard',\n });\n onDiscarded();\n }\n catch (error) {\n setFeedback({ tone: 'error', message: t('plan.failed', { message: errorMessage(error) }) });\n setBusy(false);\n setDiscardArmed(false);\n }\n };\n return (_jsxs(\"section\", { className: css.planEditor, \"data-staging-editor\": true, children: [_jsxs(\"header\", { className: css.planHeader, children: [_jsxs(\"span\", { children: [_jsxs(\"span\", { children: [_jsx(\"strong\", { children: t('plan.title') }), _jsx(\"small\", { children: t('plan.readySummary', { members: team.members.length, tasks: team.tasks.length, links: dependencyLinks }) })] }), _jsx(\"em\", { children: t('plan.badge') })] }), _jsx(\"p\", { children: t('plan.description') })] }), _jsxs(\"ol\", { className: css.planFlow, \"aria-label\": t('plan.flow.aria'), children: [_jsxs(\"li\", { \"data-active\": true, children: [_jsx(\"span\", { children: \"1\" }), t('plan.flow.review')] }), _jsxs(\"li\", { children: [_jsx(\"span\", { children: \"2\" }), t('plan.flow.spawn')] }), _jsxs(\"li\", { children: [_jsx(\"span\", { children: \"3\" }), t('plan.flow.run')] })] }), _jsxs(\"section\", { className: css.planSection, children: [_jsxs(\"button\", { type: \"button\", className: css.planSectionToggle, \"aria-expanded\": membersOpen, \"aria-controls\": membersId, onClick: () => { setMembersOpen((current) => !current); }, children: [_jsxs(\"span\", { children: [_jsx(\"strong\", { children: t('plan.members.title') }), _jsx(\"small\", { children: t('plan.members.count', { count: team.members.length }) })] }), _jsx(DisclosureChevron, { open: membersOpen })] }), membersOpen && (_jsx(\"div\", { id: membersId, className: css.planList, children: team.members.length === 0\n ? _jsx(\"p\", { className: css.planEmpty, children: t('plan.members.empty') })\n : team.members.map((member) => (_jsx(StagedMemberEditor, { team: team, member: member, modelDirectory: modelDirectory, onPendingChange: onPendingChange, t: t }, member.name))) }))] }), _jsxs(\"section\", { className: css.planSection, children: [_jsxs(\"button\", { type: \"button\", className: css.planSectionToggle, \"aria-expanded\": tasksOpen, \"aria-controls\": tasksId, onClick: () => { setTasksOpen((current) => !current); }, children: [_jsxs(\"span\", { children: [_jsx(\"strong\", { children: t('plan.tasks.title') }), _jsx(\"small\", { children: t('plan.tasks.count', { count: team.tasks.length, links: dependencyLinks }) })] }), _jsx(DisclosureChevron, { open: tasksOpen })] }), tasksOpen && (_jsx(\"div\", { id: tasksId, className: css.planList, children: team.tasks.length === 0\n ? _jsx(\"p\", { className: css.planEmpty, children: t('plan.tasks.empty') })\n : team.tasks.map((task) => _jsx(StagedTaskEditor, { team: team, task: task, onPendingChange: onPendingChange, t: t }, task.id)) }))] }), _jsxs(\"form\", { className: css.planNewTask, onSubmit: (event) => { void addTask(event); }, children: [_jsxs(\"label\", { children: [_jsx(\"span\", { children: t('plan.newTaskLabel') }), _jsx(\"input\", { name: \"newTask\", value: newTask, onChange: (event) => { setNewTask(event.currentTarget.value); setFeedback(undefined); }, placeholder: t('plan.newTask'), disabled: busy })] }), _jsx(\"button\", { type: \"submit\", disabled: busy || newTask.trim() === '', children: busy ? t('plan.adding') : t('plan.addTask') })] }), _jsxs(\"div\", { className: css.planApproveRow, \"data-armed\": discardArmed || undefined, \"data-discard\": discardArmed || undefined, \"data-review-state\": waitingForFeedback ? 'awaiting-feedback' : 'awaiting-review', children: [_jsxs(\"span\", { className: css.planApproveCopy, children: [_jsx(\"strong\", { children: discardArmed\n ? t('plan.discardConfirmTitle')\n : waitingForFeedback\n ? t('plan.feedbackTitle')\n : t('plan.approveTitle') }), _jsx(\"small\", { children: discardArmed\n ? t('plan.discardWarning')\n : waitingForFeedback\n ? t('plan.feedbackHint')\n : hasPendingEdits\n ? t('plan.pendingEdits')\n : t('plan.approveHint', { members: team.members.length, tasks: team.tasks.length }) })] }), _jsx(Feedback, { value: feedback }), discardArmed ? (_jsxs(\"span\", { className: css.planApproveActions, children: [_jsx(\"button\", { type: \"button\", disabled: busy, onClick: () => { setDiscardArmed(false); }, children: t('plan.cancel') }), _jsx(\"button\", { type: \"button\", \"data-plan-discard\": true, \"data-danger\": true, \"data-confirming\": true, disabled: busy, onClick: () => { void discard(); }, children: busy ? t('plan.discarding') : t('plan.discardConfirm') })] })) : (_jsxs(\"span\", { className: css.planReviewActions, children: [_jsx(\"button\", { type: \"button\", \"data-plan-approve\": true, disabled: busy || !runnable || hasPendingEdits, onClick: () => { void approve(); }, children: t('plan.approve') }), _jsxs(\"span\", { className: css.planSecondaryActions, children: [_jsx(\"button\", { type: \"button\", \"data-plan-continue\": true, disabled: busy, onClick: () => { void continueInChat(); }, children: t(waitingForFeedback ? 'plan.returnToChat' : 'plan.continue') }), _jsx(\"button\", { type: \"button\", \"data-plan-discard\": true, \"data-danger\": true, disabled: busy, onClick: () => { setDiscardArmed(true); setFeedback(undefined); }, children: t('plan.discard') })] })] }))] })] }));\n}\n","/** Pure persisted geometry rules for the AgentTeams shell-overlay panel. */\nexport const PANEL_LAYOUT_STORAGE_KEY = 'dsh-agent-teams:activity-panel:v1';\nexport const PANEL_COMPACT_BREAKPOINT = 960;\nexport const PANEL_DEFAULT_WIDTH = 388;\nexport const PANEL_DEFAULT_HEIGHT = 640;\nexport const PANEL_MIN_WIDTH = 320;\nexport const PANEL_MAX_WIDTH = 640;\nexport const PANEL_MIN_HEIGHT = 360;\nexport const PANEL_DOCK_TOP = 64;\nexport const PANEL_DOCK_RIGHT = 18;\nexport const PANEL_DOCK_BOTTOM = 48;\nexport const PANEL_FLOAT_MARGIN = 12;\nexport const DEFAULT_PANEL_LAYOUT = Object.freeze({\n mode: 'docked',\n x: 0,\n y: PANEL_DOCK_TOP,\n width: PANEL_DEFAULT_WIDTH,\n height: PANEL_DEFAULT_HEIGHT,\n heightMode: 'auto',\n});\nfunction clamp(value, minimum, maximum) {\n return Math.min(Math.max(value, minimum), maximum);\n}\nfunction finite(value) {\n return typeof value === 'number' && Number.isFinite(value);\n}\n/** Decode one versioned localStorage value, rejecting partial/corrupt state. */\nexport function parsePanelLayout(value) {\n if (value === null)\n return DEFAULT_PANEL_LAYOUT;\n try {\n const parsed = JSON.parse(value);\n if (typeof parsed !== 'object' || parsed === null)\n return DEFAULT_PANEL_LAYOUT;\n const record = parsed;\n if ((record.mode !== 'docked' && record.mode !== 'floating')\n || !finite(record.x) || !finite(record.y)\n || !finite(record.width) || !finite(record.height)) {\n return DEFAULT_PANEL_LAYOUT;\n }\n return {\n mode: record.mode,\n x: record.x,\n y: record.y,\n width: record.width,\n height: record.height,\n // v1 values written before content-fit height existed have no mode.\n // Treat them as automatic so the upgrade removes legacy blank space.\n heightMode: record.mode === 'floating' && record.heightMode === 'manual' ? 'manual' : 'auto',\n };\n }\n catch {\n return DEFAULT_PANEL_LAYOUT;\n }\n}\n/** Whether the panel should become a simple inset overlay with no gestures. */\nexport function compactPanelForBounds(bounds) {\n return bounds.width <= PANEL_COMPACT_BREAKPOINT;\n}\n/** Docked and compact panels always fit content; floating panels may be user-sized. */\nexport function panelUsesAutoHeight(layout, bounds) {\n return compactPanelForBounds(bounds) || layout.mode === 'docked' || layout.heightMode === 'auto';\n}\n/** CSS max-height ceiling that keeps an auto-height panel inside its shell. */\nexport function panelMaximumHeight(layout, bounds) {\n const bottomInset = compactPanelForBounds(bounds) || layout.mode === 'floating'\n ? PANEL_FLOAT_MARGIN\n : PANEL_DOCK_BOTTOM;\n return Math.max(1, bounds.height - layout.y - bottomInset);\n}\n/** Resolve persisted state into a visible rectangle inside the current shell. */\nexport function resolvePanelGeometry(layout, bounds) {\n const boundsWidth = Math.max(1, bounds.width);\n const boundsHeight = Math.max(1, bounds.height);\n if (compactPanelForBounds(bounds)) {\n return {\n ...layout,\n x: PANEL_FLOAT_MARGIN,\n y: PANEL_FLOAT_MARGIN,\n width: Math.max(1, boundsWidth - PANEL_FLOAT_MARGIN * 2),\n height: Math.max(1, boundsHeight - PANEL_FLOAT_MARGIN * 2),\n };\n }\n const maximumWidth = Math.max(1, Math.min(PANEL_MAX_WIDTH, boundsWidth - PANEL_FLOAT_MARGIN * 2));\n const minimumWidth = Math.min(PANEL_MIN_WIDTH, maximumWidth);\n const width = clamp(layout.width, minimumWidth, maximumWidth);\n const maximumHeight = Math.max(1, boundsHeight - PANEL_FLOAT_MARGIN * 2);\n const minimumHeight = Math.min(PANEL_MIN_HEIGHT, maximumHeight);\n if (layout.mode === 'docked') {\n const y = clamp(PANEL_DOCK_TOP, PANEL_FLOAT_MARGIN, Math.max(PANEL_FLOAT_MARGIN, boundsHeight - minimumHeight - PANEL_FLOAT_MARGIN));\n const availableHeight = Math.max(1, boundsHeight - y - PANEL_DOCK_BOTTOM);\n const height = clamp(availableHeight, Math.min(minimumHeight, availableHeight), maximumHeight);\n const anchorRight = clamp(bounds.anchorRight, 0, boundsWidth);\n const maximumX = Math.max(PANEL_FLOAT_MARGIN, boundsWidth - width - PANEL_FLOAT_MARGIN);\n const x = clamp(anchorRight - PANEL_DOCK_RIGHT - width, PANEL_FLOAT_MARGIN, maximumX);\n return { mode: 'docked', x, y, width, height, heightMode: layout.heightMode };\n }\n const height = clamp(layout.height, minimumHeight, maximumHeight);\n return {\n mode: 'floating',\n x: clamp(layout.x, PANEL_FLOAT_MARGIN, Math.max(PANEL_FLOAT_MARGIN, boundsWidth - width - PANEL_FLOAT_MARGIN)),\n y: clamp(layout.y, PANEL_FLOAT_MARGIN, Math.max(PANEL_FLOAT_MARGIN, boundsHeight - height - PANEL_FLOAT_MARGIN)),\n width,\n height,\n heightMode: layout.heightMode,\n };\n}\n/** Undock without a visual jump by adopting the panel's resolved rectangle. */\nexport function floatPanelLayout(geometry, bounds) {\n return resolvePanelGeometry({ ...geometry, mode: 'floating' }, bounds);\n}\n/** Return to the right dock, preserving width and restoring content-fit height. */\nexport function dockPanelLayout(layout, bounds) {\n return resolvePanelGeometry({ ...layout, mode: 'docked', heightMode: 'auto' }, bounds);\n}\n/** Translate a floating panel and clamp it back into the visible shell. */\nexport function movePanelLayout(start, dx, dy, bounds) {\n return resolvePanelGeometry({ ...start, mode: 'floating', x: start.x + dx, y: start.y + dy }, bounds);\n}\n/** Resize while keeping the edge opposite the active handle stationary. */\nexport function resizePanelLayout(start, edge, dx, dy, bounds) {\n if (start.mode === 'docked') {\n if (edge !== 'left')\n return resolvePanelGeometry(start, bounds);\n return resolvePanelGeometry({ ...start, width: start.width - dx }, bounds);\n }\n const resolved = resolvePanelGeometry(start, bounds);\n const minimumWidth = Math.min(PANEL_MIN_WIDTH, resolved.x + resolved.width - PANEL_FLOAT_MARGIN);\n const minimumHeight = Math.min(PANEL_MIN_HEIGHT, bounds.height - resolved.y - PANEL_FLOAT_MARGIN);\n if (edge === 'left') {\n const right = resolved.x + resolved.width;\n const maximumWidth = Math.max(1, Math.min(PANEL_MAX_WIDTH, right - PANEL_FLOAT_MARGIN));\n const width = clamp(resolved.width - dx, Math.min(minimumWidth, maximumWidth), maximumWidth);\n return { ...resolved, x: right - width, width };\n }\n const maximumHeight = Math.max(1, bounds.height - resolved.y - PANEL_FLOAT_MARGIN);\n const height = clamp(resolved.height + dy, Math.min(minimumHeight, maximumHeight), maximumHeight);\n if (edge === 'bottom')\n return { ...resolved, height, heightMode: 'manual' };\n const maximumWidth = Math.max(1, Math.min(PANEL_MAX_WIDTH, bounds.width - resolved.x - PANEL_FLOAT_MARGIN));\n const width = clamp(resolved.width + dx, Math.min(minimumWidth, maximumWidth), maximumWidth);\n return { ...resolved, width, height, heightMode: 'manual' };\n}\n","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * AgentTeams activity panel: the top-right floater monitoring every team.\n *\n * Modeled on the Claude Code desktop SessionActivityPanel: a shell-overlay\n * panel that docks at the conversation's top-right edge by default, can be\n * dragged into a floating window, resized, and folded into an activity badge.\n * On wide viewports the docked panel makes the conversation column yield\n * space; narrow viewports keep a simple inset overlay. It\n * polls the host `/plugins/dsh-agent-teams/state` route for\n * server-side snapshots (durable files + live subagent activity), with a\n * collapsed badge that auto-expands once when activity appears. Archived\n * teams stay available for the owning conversation after live work ends.\n *\n * The floater mounts in ui-layout's additive `shell.overlay`; it is not a\n * conversation node — the in-conversation panel was removed in favor of this\n * always-available monitor.\n * @module dsh-agent-teams/client/activity\n */\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, } from 'react';\nimport { IconBranchOutline16, IconChevronDownOutline14, IconPanelLeftOutline16, IconStopFill16, IconWarningOutline16, Modal, } from '@deepseek-ai/dsh-client-ui-primitives';\nimport { activityPanelExpandedForSession, activityPanelShouldAutoExpand, compactDagLayout, compactModelLabel, COMPACT_DAG_NODE_HEIGHT, COMPACT_DAG_NODE_WIDTH, dependencyFocusTaskId, memberRouteLabel, relatedTaskIds, taskModelLabel, teamIsActive, usesParallelTaskGrid, } from \"./activity-model.js\";\nimport { ACTIVITY_HALT_URL, getActivityMonitorTargetsSnapshot, getActivitySnapshotsSnapshot, startActivityPolling, subscribeActivityMonitorTargets, subscribeActivitySnapshots, } from \"./activity-monitor.js\";\nimport { ACTION_ART, LEAD_ART, memberArtUrl } from \"./artwork.js\";\nimport { OPEN_PANEL_EVENT } from \"./AgentTeamsCard.js\";\nimport { StagingPlanEditor } from \"./StagingPlanEditor.js\";\nimport { DEFAULT_PANEL_LAYOUT, PANEL_LAYOUT_STORAGE_KEY, compactPanelForBounds, dockPanelLayout, floatPanelLayout, movePanelLayout, panelMaximumHeight, panelUsesAutoHeight, parsePanelLayout, resizePanelLayout, resolvePanelGeometry, } from \"./panel-geometry.js\";\nimport css from './ActivityPanel.module.css';\n/** Grace before the panel collapses once no team remains. */\nconst AUTOCLOSE_GRACE_MS = 2000;\n/**\n * Page-settle window after mount: activity restored on page load only shows\n * the collapsed badge, so the panel never yanks the conversation column\n * right after load. New activity after this window auto-expands as usual.\n */\nconst AUTO_OPEN_SETTLE_MS = 4000;\n/** Root marker shared with the panel CSS while the shell overlay is expanded. */\nconst PANEL_OPEN_ATTRIBUTE = 'data-agent-teams-panel-open';\n/** Shared width concession consumed by the conversation root CSS. */\nconst PANEL_SHIFT_PROPERTY = '--agent-teams-panel-shift';\nconst PANEL_CONVERSATION_GAP = 14;\nconst MOVE_THRESHOLD = 4;\nconst CAPTAIN_ASSIGNEE = 'captain';\nfunction initialPanelLayout() {\n if (typeof window === 'undefined')\n return DEFAULT_PANEL_LAYOUT;\n return parsePanelLayout(window.localStorage.getItem(PANEL_LAYOUT_STORAGE_KEY));\n}\nfunction initialPanelBounds() {\n if (typeof window === 'undefined')\n return { width: 1440, height: 900, anchorRight: 1440 };\n return { width: window.innerWidth, height: window.innerHeight, anchorRight: window.innerWidth };\n}\n/** Initial-letter fallback for unmatched roles. */\nfunction memberInitial(name) {\n return name.trim().slice(0, 1).toUpperCase() || '?';\n}\nfunction stableHash(value) {\n let hash = 0;\n for (let index = 0; index < value.length; index += 1) {\n hash = ((hash << 5) - hash + value.charCodeAt(index)) | 0;\n }\n return Math.abs(hash);\n}\nconst ACCENTS = [\n 'var(--dsw-alias-state-business-primary)',\n 'var(--dsw-alias-state-success)',\n 'var(--dsw-alias-state-danger)',\n 'var(--dsw-alias-state-warning)',\n 'var(--dsw-alias-label-tertiary)',\n];\nfunction accentOf(id) {\n return ACCENTS[stableHash(id) % ACCENTS.length] ?? ACCENTS[0];\n}\n/** Badge text follows the raw task status (finer than the 4 visual states):\n * claimed/pending/failed/cancelled keep their own labels and colors. */\nconst TASK_STATUS_LABEL = {\n pending: 'task.status.pending',\n claimed: 'task.status.claimed',\n in_progress: 'task.status.inProgress',\n completed: 'task.status.completed',\n failed: 'task.status.failed',\n cancelled: 'task.status.cancelled',\n};\nfunction taskStatusLabel(status, t) {\n const key = TASK_STATUS_LABEL[status];\n return key === undefined ? status : t(key);\n}\nfunction formatTaskIds(ids, t) {\n return ids.join(t('format.listSeparator'));\n}\nfunction taskTitle(task, model) {\n const extras = [\n task.kind,\n task.round === undefined ? undefined : `r${task.round}`,\n task.verdict,\n model === '' ? undefined : model,\n ].filter((item) => item !== undefined);\n return extras.length === 0 ? `${task.id} · ${task.subject}` : `${task.id} · ${task.subject} · ${extras.join(' · ')}`;\n}\n/** Badge/bar coloring key: visual state, widened for terminal statuses. */\nfunction taskTone(state, status) {\n if (status === 'failed')\n return 'failed';\n if (status === 'cancelled')\n return 'cancelled';\n return state;\n}\nfunction Chevron({ open }) {\n return (_jsx(\"svg\", { className: css.chevron, \"data-open\": open, width: \"9\", height: \"9\", viewBox: \"0 0 10 10\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"1.5\", strokeLinecap: \"round\", \"aria-hidden\": true, children: _jsx(\"path\", { d: \"M3.5 2l3 3-3 3\" }) }));\n}\nfunction WorkGlyph({ active }) {\n return (_jsx(\"svg\", { className: css.workGlyph, \"data-active\": active, width: \"11\", height: \"11\", viewBox: \"0 0 11 11\", fill: \"currentColor\", \"aria-hidden\": true, children: [[0, 0], [4.2, 0], [8.4, 0], [0, 4.2], [4.2, 4.2], [8.4, 4.2]].map(([x, y], index) => (_jsx(\"rect\", { x: x, y: y, width: \"2.6\", height: \"2.6\", rx: \".6\", style: { animationDelay: `${index * 0.15}s` } }, `${x}:${y}`))) }));\n}\n/** Collapsed badge: an always-visible corner pill while any team exists. */\nfunction CollapsedBadge({ count, busy, onClick, t }) {\n return (_jsxs(\"button\", { type: \"button\", className: css.badge, \"data-agent-teams-collapsed\": true, \"data-busy\": busy, onClick: onClick, \"aria-label\": t('activity.badgeAria', { count }), children: [_jsx(\"span\", { className: css.badgeDot, \"data-busy\": busy, \"aria-hidden\": true }), _jsx(\"span\", { className: css.badgeCount, children: count })] }));\n}\nfunction memberStateLabel(member, tasks, historic, t) {\n const owned = tasks.filter((task) => task.assignee === member.name);\n if (member.activity === 'working')\n return t('member.state.working');\n if (owned.some((task) => task.status === 'failed'))\n return t('member.state.failed');\n if (owned.some((task) => task.state === 'blocked'))\n return t('member.state.waiting');\n if (owned.length > 0 && owned.every((task) => task.status === 'completed'))\n return t('member.state.delivered');\n if (member.status === 'removed')\n return t(historic ? 'member.state.left' : 'member.state.removed');\n if (owned.length > 0)\n return t('member.state.pending');\n return t('member.state.unassigned');\n}\nfunction memberStatusText(member, tasks, t) {\n const owned = tasks.filter((task) => task.assignee === member.name);\n const current = owned.find((task) => task.id === member.currentTask);\n const blocked = owned.find((task) => task.state === 'blocked');\n if (member.activity === 'working' && current !== undefined) {\n const model = taskModelLabel(current, [member]);\n return model === ''\n ? t('member.status.executing', { taskId: current.id })\n : t('member.status.executingModel', { taskId: current.id, model });\n }\n if (member.activity === 'working')\n return t('member.status.working');\n if (blocked !== undefined) {\n const dependency = tasks.find((task) => blocked.dependencies.includes(task.id) && task.state !== 'completed');\n if (dependency !== undefined) {\n return t('member.status.waitingOn', {\n taskId: dependency.id,\n assignee: dependency.assignee || t('task.assignee.unclaimed'),\n });\n }\n return t('member.status.waitingPrerequisite');\n }\n if (member.total === 0)\n return t('member.status.waitingAssignment');\n if (member.done === member.total)\n return t('member.status.delivered');\n return t(member.activity === 'idle' ? 'member.status.idle' : 'member.status.unknown');\n}\nfunction compactTaskLabel(subject) {\n const withoutVerb = subject.replace(/^开发\\s*/u, '').replace(/^\\d+[-_.、\\s]*/u, '');\n const head = withoutVerb.split(/[((·::]/u)[0]?.trim() ?? withoutVerb;\n return head.length > 18 ? `${head.slice(0, 17)}…` : head;\n}\nfunction taskSummary(team, t, discarded = false) {\n const completed = team.tasks.filter((task) => task.status === 'completed');\n const cancelled = team.tasks.filter((task) => task.status === 'cancelled');\n const running = team.tasks.filter((task) => task.state === 'running');\n const blocked = team.tasks.filter((task) => task.state === 'blocked');\n const ready = team.tasks.filter((task) => task.state === 'open' && task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled');\n const failed = team.tasks.filter((task) => task.status === 'failed');\n if (discarded)\n return t('task.summary.discarded', { count: team.tasks.length });\n if (team.tasks.length === 0)\n return t('task.summary.waitingBreakdown');\n if (team.phase === 'staged')\n return t('task.summary.staged', { count: team.tasks.length });\n if (completed.length === team.tasks.length)\n return t('task.summary.allDelivered', { count: completed.length });\n if (completed.length + cancelled.length + failed.length === team.tasks.length) {\n return t('task.summary.ended', {\n completed: completed.length,\n cancelled: cancelled.length,\n failed: failed.length,\n });\n }\n if (failed.length > 0 && running.length === 0 && ready.length === 0 && blocked.length === 0) {\n return t('task.summary.failedSettled', { count: failed.length });\n }\n if (blocked.length > 0 && running.length > 0) {\n return t('task.summary.blockedAndRunning', {\n tasks: formatTaskIds(blocked.slice(0, 3).map((task) => task.id), t),\n more: blocked.length > 3 ? t('task.summary.more', { count: blocked.length - 3 }) : '',\n });\n }\n if (running.length > 0)\n return t('task.summary.running', { tasks: formatTaskIds(running.map((task) => task.id), t) });\n if (ready.length > 0)\n return t('task.summary.ready', { tasks: formatTaskIds(ready.map((task) => task.id), t) });\n if (blocked.length > 0)\n return t('task.summary.blocked', { tasks: formatTaskIds(blocked.map((task) => task.id), t) });\n return t('task.summary.waitingSchedule');\n}\nfunction ProgressOverview({ team, t, discarded = false }) {\n const running = discarded ? 0 : team.tasks.filter((task) => task.state === 'running').length;\n const blocked = discarded ? 0 : team.tasks.filter((task) => task.state === 'blocked').length;\n const completed = discarded ? 0 : team.tasks.filter((task) => task.status === 'completed').length;\n const settled = !discarded && team.tasks.length > 0 && team.tasks.every((task) => (task.status === 'completed' || task.status === 'failed' || task.status === 'cancelled'));\n const summaryTone = discarded ? 'discarded' : blocked > 0 ? 'warning' : settled ? 'completed' : 'running';\n return (_jsxs(\"section\", { className: css.progressOverview, \"aria-label\": t('progress.aria'), \"data-progress-summary\": true, children: [_jsx(\"span\", { className: css.progressTitle, children: t('progress.title') }), team.tasks.length > 0 ? (_jsx(\"span\", { className: css.progressSegments, \"aria-hidden\": true, children: team.tasks.map((task) => _jsx(\"span\", { \"data-state\": discarded ? 'cancelled' : taskTone(task.state, task.status) }, task.id)) })) : _jsx(\"span\", { className: css.progressEmpty }), _jsxs(\"span\", { className: css.progressLegend, children: [_jsx(\"span\", { \"data-state\": \"running\", children: t('progress.running', { count: running }) }), _jsx(\"span\", { \"data-state\": \"blocked\", children: t('progress.blocked', { count: blocked }) }), _jsx(\"span\", { \"data-state\": \"completed\", children: t('progress.delivered', { count: completed }) })] }), _jsxs(\"span\", { className: css.progressSummary, \"data-state\": summaryTone, children: [_jsx(\"span\", { className: css.progressSummaryDot }), _jsx(\"span\", { children: taskSummary(team, t, discarded) })] })] }));\n}\nfunction DependencyMap({ tasks, members, t, discarded = false }) {\n const [open, setOpen] = useState(true);\n const [hoverTaskId, setHoverTaskId] = useState(null);\n const [keyboardTaskId, setKeyboardTaskId] = useState(null);\n const [pinnedTaskId, setPinnedTaskId] = useState(null);\n const hoverTimer = useRef(null);\n const focusedTaskId = dependencyFocusTaskId(pinnedTaskId, keyboardTaskId, hoverTaskId);\n const layout = useMemo(() => compactDagLayout(tasks), [tasks]);\n const parallel = useMemo(() => usesParallelTaskGrid(tasks), [tasks]);\n const related = useMemo(() => focusedTaskId === null ? null : relatedTaskIds(focusedTaskId, tasks), [focusedTaskId, tasks]);\n const scheduleHover = (id) => {\n if (hoverTimer.current !== null) {\n clearTimeout(hoverTimer.current);\n hoverTimer.current = null;\n }\n if (id === null) {\n setHoverTaskId(null);\n return;\n }\n hoverTimer.current = setTimeout(() => {\n hoverTimer.current = null;\n setHoverTaskId(id);\n }, 180);\n };\n useEffect(() => () => {\n if (hoverTimer.current !== null)\n clearTimeout(hoverTimer.current);\n }, []);\n useEffect(() => {\n const onKeyDown = (event) => {\n if (event.key === 'Escape')\n setPinnedTaskId(null);\n };\n window.addEventListener('keydown', onKeyDown);\n return () => { window.removeEventListener('keydown', onKeyDown); };\n }, []);\n if (tasks.length === 0)\n return null;\n const fallbackTask = tasks.find((task) => task.state === 'blocked')\n ?? tasks.find((task) => task.state === 'running')\n ?? tasks[0];\n const detailTask = tasks.find((task) => task.id === focusedTaskId) ?? fallbackTask;\n const detailModel = taskModelLabel(detailTask, members);\n const waitingOn = detailTask.dependencies.filter((dependency) => (tasks.find((task) => task.id === dependency)?.status !== 'completed'));\n const dependents = tasks.filter((task) => task.dependencies.includes(detailTask.id));\n return (_jsxs(\"section\", { className: css.dependencySection, \"aria-label\": t('dependency.aria'), \"data-dependency-map\": true, children: [_jsxs(\"header\", { className: css.sectionHead, children: [_jsxs(\"button\", { type: \"button\", className: css.sectionToggleTitle, onClick: () => { setOpen((current) => !current); }, \"aria-expanded\": open, children: [_jsx(Chevron, { open: open }), _jsx(IconBranchOutline16, {}), \" \", t(parallel ? 'dependency.parallel' : 'dependency.title')] }), _jsx(\"span\", { className: css.sectionHint, children: pinnedTaskId === null\n ? t(parallel ? 'dependency.hint.parallel' : 'dependency.hint.chain')\n : t('dependency.hint.pinned', { taskId: pinnedTaskId }) })] }), open && (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: css.dagViewport, children: _jsxs(\"div\", { className: css.dagCanvas, \"data-layout\": parallel ? 'parallel' : 'dependency', style: parallel ? undefined : { width: layout.width, height: layout.height }, children: [!parallel && _jsx(\"svg\", { className: css.dagEdges, width: layout.width, height: layout.height, \"aria-hidden\": true, children: layout.edges.map((edge) => {\n const active = related !== null && related.has(edge.from) && related.has(edge.to);\n return _jsx(\"path\", { d: edge.path, \"data-active\": active, \"data-dimmed\": related !== null && !active }, `${edge.from}:${edge.to}`);\n }) }), layout.nodes.map(({ task, x, y }) => {\n const model = taskModelLabel(task, members);\n const shortModel = compactModelLabel(model);\n return (_jsxs(\"button\", { type: \"button\", className: css.dagNode, style: parallel\n ? { height: COMPACT_DAG_NODE_HEIGHT }\n : { left: x, top: y, width: COMPACT_DAG_NODE_WIDTH, height: COMPACT_DAG_NODE_HEIGHT }, \"data-task-id\": task.id, \"data-state\": discarded ? 'cancelled' : taskTone(task.state, task.status), \"data-task-model\": model || undefined, \"data-focused\": related?.has(task.id) ?? false, \"data-dimmed\": related !== null && !related.has(task.id), \"aria-pressed\": pinnedTaskId === task.id, title: taskTitle(task, model), onClick: () => { setPinnedTaskId((current) => current === task.id ? null : task.id); }, onMouseEnter: () => { scheduleHover(task.id); }, onMouseLeave: () => { scheduleHover(null); }, onFocus: () => { setKeyboardTaskId(task.id); }, onBlur: () => { setKeyboardTaskId(null); }, children: [_jsxs(\"span\", { className: css.dagNodeHead, children: [_jsx(\"span\", { className: css.dagNodeDot }), task.id] }), _jsx(\"span\", { className: css.dagNodeLabel, children: task.state === 'running' && shortModel !== '' ? shortModel : compactTaskLabel(task.subject) }), task.state === 'running' && (_jsx(\"span\", { className: css.dagRunningState, \"aria-label\": t('task.runningAria'), children: _jsx(WorkGlyph, { active: true }) }))] }, task.id));\n })] }) }), _jsxs(\"section\", { className: css.taskDetail, \"data-task-detail\": detailTask.id, children: [_jsxs(\"span\", { className: css.taskDetailHead, children: [_jsx(\"span\", { className: css.taskDetailId, children: detailTask.id }), _jsx(\"span\", { className: css.taskDetailSubject, title: detailTask.subject, children: detailTask.subject.replace(/^开发\\s*/u, '') }), _jsx(\"span\", { className: css.taskDetailBadge, \"data-state\": discarded ? 'cancelled' : taskTone(detailTask.state, detailTask.status), children: discarded ? t('task.status.notRun') : taskStatusLabel(detailTask.status, t) })] }), _jsxs(\"span\", { className: css.taskDetailLine, children: [detailTask.assignee || t('task.assignee.unclaimed'), \" \\u00B7 \", discarded\n ? t('task.detail.notRun')\n : detailTask.status === 'completed'\n ? t('task.detail.completed')\n : detailTask.dependencies.length === 0\n ? t('task.detail.noPrerequisite')\n : waitingOn.length === 0\n ? t('task.detail.ready')\n : t('task.detail.waitingOn', { tasks: formatTaskIds(waitingOn, t) })] }), detailModel !== '' && (_jsx(\"span\", { className: css.taskDetailModel, \"data-task-model\": detailModel, children: t('task.model', { model: detailModel }) })), _jsx(\"span\", { className: css.taskDetailMeta, children: dependents.length === 0\n ? t('task.detail.noDownstream')\n : t('task.detail.unlocks', { tasks: formatTaskIds(dependents.map((task) => task.id), t) }) })] })] }))] }));\n}\nfunction TeamSection({ team, modelDirectory, onContinuePlanning, onDiscarded, onNavigate, t, historic = false }) {\n const [membersOpen, setMembersOpen] = useState(true);\n const [stopOpen, setStopOpen] = useState(false);\n const [stopping, setStopping] = useState(false);\n const [stopError, setStopError] = useState('');\n const discarded = historic && team.phase === 'staged';\n const stopped = !historic && team.halted === true;\n const busyCount = team.members.filter((member) => member.activity === 'working').length;\n const assignedCount = team.tasks.filter((task) => task.assignee !== '' && task.assignee !== CAPTAIN_ASSIGNEE).length;\n const captainOwned = team.tasks.filter((task) => task.assignee === CAPTAIN_ASSIGNEE\n && task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled');\n const captainBusy = captainOwned.length > 0;\n const captainTaskIds = formatTaskIds(captainOwned.map((task) => task.id), t);\n const completedCount = team.tasks.filter((task) => task.status === 'completed').length;\n const allCompleted = team.tasks.length > 0 && completedCount === team.tasks.length;\n const allSettled = team.tasks.length > 0 && team.tasks.every((task) => (task.status === 'completed' || task.status === 'failed' || task.status === 'cancelled'));\n const unfinishedCount = team.tasks.filter((task) => (task.status !== 'completed' && task.status !== 'failed' && task.status !== 'cancelled')).length;\n const canStop = !historic && team.phase === 'running' && team.halted !== true && teamIsActive(team);\n const stopTeam = async () => {\n if (stopping)\n return;\n setStopping(true);\n setStopError('');\n try {\n const response = await fetch(ACTIVITY_HALT_URL, {\n method: 'POST',\n cache: 'no-store',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ sessionId: team.captainSessionId, teamId: team.teamId }),\n });\n if (!response.ok) {\n let message = t('team.stopRequestFailed');\n try {\n const body = await response.json();\n if (typeof body.error === 'string' && body.error.trim() !== '')\n message = body.error;\n }\n catch { }\n throw new Error(message);\n }\n setStopOpen(false);\n }\n catch (error) {\n setStopError(t('team.stopFailed', { message: error instanceof Error ? error.message : String(error) }));\n }\n finally {\n setStopping(false);\n }\n };\n return (_jsxs(_Fragment, { children: [_jsxs(\"section\", { className: css.team, \"data-team-id\": team.teamId, children: [_jsxs(\"header\", { className: css.teamHead, children: [_jsx(\"span\", { className: css.teamName, title: team.name, children: team.name }), historic && _jsx(\"span\", { className: css.historicPill, children: t(discarded ? 'team.discarded' : 'team.ended') }), stopped && _jsx(\"span\", { className: css.historicPill, children: t('team.stopped') }), _jsxs(\"span\", { className: css.teamStats, children: [_jsx(\"span\", { \"data-stat\": \"members\", children: t('team.stats.members', { count: team.members.length }) }), _jsx(\"span\", { \"data-stat\": \"tasks\", children: t('team.stats.completed', { completed: completedCount, total: team.tasks.length }) }), _jsx(\"span\", { \"data-stat\": \"messages\", children: t('team.stats.messages', { count: team.messageCount }) })] }), canStop && (_jsx(\"button\", { type: \"button\", className: css.teamStopButton, \"aria-label\": t('team.stop'), title: t('team.stop'), onClick: () => { setStopError(''); setStopOpen(true); }, children: _jsx(IconStopFill16, {}) }))] }), team.phase === 'staged' && !historic && modelDirectory !== undefined && onContinuePlanning !== undefined && onDiscarded !== undefined && (_jsx(StagingPlanEditor, { team: team, modelDirectory: modelDirectory, onContinuePlanning: onContinuePlanning, onDiscarded: onDiscarded, t: t })), _jsxs(\"section\", { className: css.delegationSection, \"aria-label\": t('delegation.aria'), \"data-delegation-map\": true, children: [_jsxs(\"div\", { className: css.captainNode, children: [_jsx(\"span\", { className: css.captainAvatar, children: _jsx(\"img\", { className: css.leadAvatar, src: LEAD_ART, alt: \"\", \"aria-hidden\": true }) }), _jsxs(\"span\", { className: css.captainInfo, children: [_jsxs(\"span\", { className: css.captainLine, children: [_jsx(\"span\", { className: css.captainName, children: t('captain.name') }), _jsx(\"span\", { className: css.captainRole, children: t('captain.role') })] }), _jsx(\"span\", { className: css.captainSummary, children: discarded\n ? t('captain.summary.discarded', { tasks: team.tasks.length, members: team.members.length })\n : captainBusy\n ? t('captain.summary.withTakeover', { tasks: assignedCount, captainTasks: captainTaskIds })\n : team.phase === 'staged'\n ? t(team.planReviewState === 'awaiting_feedback'\n ? 'captain.summary.awaitingFeedback'\n : 'captain.summary.staged', { tasks: team.tasks.length, members: team.members.length })\n : t('captain.summary', { tasks: assignedCount, members: team.members.length }) })] }), _jsxs(\"span\", { className: css.captainState, \"data-busy\": captainBusy || busyCount > 0, children: [_jsx(WorkGlyph, { active: captainBusy || busyCount > 0 }), discarded\n ? t('captain.state.discarded')\n : captainBusy\n ? t('captain.state.takeover', { tasks: captainTaskIds })\n : team.phase === 'staged'\n ? t(team.planReviewState === 'awaiting_feedback'\n ? 'captain.state.awaitingFeedback'\n : 'captain.state.staged')\n : busyCount > 0\n ? t('captain.state.working', { count: busyCount })\n : t(allCompleted\n ? 'captain.state.collected'\n : allSettled\n ? 'captain.state.settled'\n : 'captain.state.waiting')] })] }), _jsx(ProgressOverview, { team: team, t: t, discarded: discarded }), _jsxs(\"button\", { type: \"button\", className: css.membersToggle, onClick: () => { setMembersOpen((current) => !current); }, \"aria-expanded\": membersOpen, \"data-members-toggle\": true, children: [_jsxs(\"span\", { children: [_jsx(Chevron, { open: membersOpen }), t('members.toggle', { count: team.members.length })] }), _jsx(\"span\", { children: t(membersOpen ? 'members.collapse' : 'members.expand') })] }), membersOpen && _jsxs(\"div\", { className: css.delegationTree, children: [team.members.length === 0 && _jsx(\"span\", { className: css.emptyHint, children: t('members.empty') }), team.members.map((member) => {\n const owned = team.tasks.filter((task) => task.assignee === member.name);\n const memberModel = memberRouteLabel(member);\n return (_jsxs(\"div\", { className: css.memberBlock, \"data-activity\": member.activity, children: [_jsx(\"span\", { className: css.memberBranch, \"aria-hidden\": true, children: _jsx(\"span\", {}) }), _jsxs(\"button\", { type: \"button\", className: css.memberRow, \"data-activity\": member.activity, onClick: () => {\n if (member.id !== '') {\n onNavigate(team.captainSessionId, member.id);\n }\n }, children: [_jsxs(\"span\", { className: css.memberAvatar, \"data-unread\": member.unread > 0, children: [memberArtUrl(member.name, member.role) !== null ? (_jsx(\"img\", { className: css.memberArt, src: memberArtUrl(member.name, member.role) ?? '', alt: \"\", \"aria-hidden\": true })) : (_jsx(\"span\", { className: css.memberInitial, style: { background: accentOf(member.id) }, children: memberInitial(member.name) })), _jsx(\"img\", { className: css.stateArt, \"data-activity\": member.activity, src: ACTION_ART[member.activity], alt: \"\", \"aria-hidden\": true })] }), _jsxs(\"span\", { className: css.memberInfo, children: [_jsxs(\"span\", { className: css.memberLine, children: [_jsx(\"span\", { className: css.memberName, children: member.name }), member.role !== '' && _jsx(\"span\", { className: css.memberRole, children: member.role }), _jsxs(\"span\", { className: css.memberState, \"data-activity\": member.activity, children: [_jsx(WorkGlyph, { active: member.activity === 'working' }), discarded\n ? t('member.state.notCreated')\n : stopped\n ? t('member.state.stopped')\n : team.phase === 'staged'\n ? t('member.state.staged')\n : memberStateLabel(member, team.tasks, historic, t)] })] }), _jsx(\"span\", { className: css.memberStatusLine, children: discarded\n ? t('member.status.discarded')\n : stopped\n ? t('member.status.stopped')\n : team.phase === 'staged'\n ? t('member.status.staged')\n : historic && owned.length > 0 && owned.every((task) => (task.status === 'completed' || task.status === 'failed' || task.status === 'cancelled'))\n ? t('member.status.settled')\n : memberStatusText(member, team.tasks, t) }), memberModel !== '' && (_jsx(\"span\", { className: css.memberModel, \"data-member-model\": memberModel, children: t('member.model', { model: memberModel }) }))] }), _jsxs(\"span\", { className: css.memberCount, children: [member.done, \"/\", member.total] })] }), _jsxs(\"div\", { className: css.assignmentLine, children: [_jsx(\"span\", { className: css.assignmentLabel, children: t(discarded\n ? 'assignment.discarded'\n : team.phase === 'staged'\n ? 'assignment.staged'\n : 'assignment.label') }), _jsx(\"span\", { className: css.assignmentTasks, children: owned.length === 0\n ? _jsx(\"span\", { className: css.taskEmpty, children: t('assignment.empty') })\n : owned.map((task) => {\n const model = taskModelLabel(task, team.members);\n const shortModel = compactModelLabel(model);\n return (_jsx(\"span\", { className: css.assignmentChip, \"data-state\": discarded ? 'cancelled' : taskTone(task.state, task.status), \"data-task-model\": model || undefined, title: taskTitle(task, model), children: task.state === 'running' && shortModel !== '' ? `${task.id} · ${shortModel}` : task.id }, task.id));\n }) })] })] }, member.id || member.name));\n })] })] }), _jsx(DependencyMap, { tasks: team.tasks, members: team.members, t: t, discarded: discarded })] }), _jsx(Modal, { open: stopOpen, onClose: () => { if (!stopping)\n setStopOpen(false); }, title: t('team.stopTitle', { team: team.name }), closeLabel: t('plan.cancel'), description: t('team.stopDescription', { tasks: unfinishedCount, members: busyCount }), footer: (_jsxs(\"span\", { className: css.stopModalActions, children: [_jsx(\"button\", { type: \"button\", disabled: stopping, onClick: () => { setStopOpen(false); }, children: t('team.stopCancel') }), _jsxs(\"button\", { type: \"button\", \"data-danger\": true, disabled: stopping, onClick: () => { void stopTeam(); }, children: [_jsx(IconStopFill16, {}), stopping ? t('team.stopping') : t('team.stopConfirm')] })] })), children: stopError !== '' && _jsxs(\"p\", { className: css.stopModalError, role: \"alert\", children: [_jsx(IconWarningOutline16, {}), stopError] }) })] }));\n}\n/** Legacy conversation cards may outlive their host archive. Project their\n * durable roster through the same rebuilt panel instead of a second UI. */\nfunction historicCardTeam(data, owner) {\n return {\n workspace: '',\n teamId: data.teamId,\n name: data.teamName,\n captainSessionId: data.captainSessionId || owner,\n phase: 'running',\n members: data.members.map((member) => ({\n ...member,\n status: 'removed',\n activity: 'idle',\n progress: 0,\n done: 0,\n total: 0,\n currentTask: '',\n unread: 0,\n })),\n tasks: [],\n messageCount: 0,\n captainInbox: [],\n };\n}\nexport function ActivityPanel({ sessionsList, modelDirectories, openMember, t }) {\n // Navigating to a member's subagent transcript is an explicit departure:\n // hide the floater immediately instead of waiting out the autocollapse\n // grace, so the panel never lingers over the member session.\n const navigateToSession = (parentId, childId) => {\n setOpen(false);\n setWasActive(false);\n openMember(parentId, childId);\n };\n const [open, setOpen] = useState(false);\n const [openOwner, setOpenOwner] = useState();\n const [autoOpened, setAutoOpened] = useState(false);\n const [wasActive, setWasActive] = useState(false);\n const [historic, setHistoric] = useState(new Map());\n const [layout, setLayout] = useState(initialPanelLayout);\n const [bounds, setBounds] = useState(initialPanelBounds);\n const [interaction, setInteraction] = useState(null);\n const panelRef = useRef(null);\n const boundsRef = useRef(bounds);\n const gestureRef = useRef(null);\n const frameRef = useRef(null);\n const pendingLayoutRef = useRef(null);\n const current = useSyncExternalStore(sessionsList.subscribe, sessionsList.getSnapshot).current;\n const autoOpenTrackerRef = useRef({ sessionId: current, restoreComplete: false, liveTeamIds: new Set() });\n const monitorTargets = useSyncExternalStore(subscribeActivityMonitorTargets, getActivityMonitorTargetsSnapshot);\n const returnToComposer = () => {\n setOpen(false);\n setOpenOwner(undefined);\n window.requestAnimationFrame(() => {\n document.querySelector('[data-composer-card] textarea')?.focus();\n });\n };\n const { teams, archivedTeams } = useSyncExternalStore(subscribeActivitySnapshots, getActivitySnapshotsSnapshot);\n const currentTargets = useMemo(() => current === undefined ? [] : monitorTargets.filter((target) => target.sessionId === current), [current, monitorTargets]);\n const currentRef = useRef(current);\n useEffect(() => { currentRef.current = current; }, [current]);\n const mountedAtRef = useRef(performance.now());\n const expanded = activityPanelExpandedForSession(open, openOwner, current);\n const geometry = useMemo(() => resolvePanelGeometry(layout, bounds), [layout, bounds]);\n const compact = compactPanelForBounds(bounds);\n const commitLayout = useCallback((next) => {\n setLayout(next);\n }, []);\n useEffect(() => {\n window.localStorage.setItem(PANEL_LAYOUT_STORAGE_KEY, JSON.stringify(layout));\n }, [layout]);\n // The slot sits inside AppFrame, so all geometry is measured against the\n // shell overlay rather than the browser viewport. The conversation's real\n // right edge is the dock anchor and naturally follows sidebar/details\n // concessions without importing their hashed implementation classes.\n useLayoutEffect(() => {\n const overlay = document.querySelector('[data-shell-overlay]');\n if (overlay === null)\n return;\n const conversation = document.querySelector(\"[data-phase='active']\");\n let frame = null;\n const measure = () => {\n frame = null;\n const overlayRect = overlay.getBoundingClientRect();\n const conversationRect = conversation?.getBoundingClientRect();\n const next = {\n width: overlayRect.width,\n height: overlayRect.height,\n anchorRight: conversationRect === undefined\n ? overlayRect.width\n : Math.min(Math.max(conversationRect.right - overlayRect.left, 0), overlayRect.width),\n };\n const previous = boundsRef.current;\n if (previous.width === next.width\n && previous.height === next.height\n && previous.anchorRight === next.anchorRight)\n return;\n boundsRef.current = next;\n setBounds(next);\n };\n const scheduleMeasure = () => {\n frame ??= requestAnimationFrame(measure);\n };\n measure();\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(scheduleMeasure);\n observer?.observe(overlay);\n if (conversation !== null)\n observer?.observe(conversation);\n window.addEventListener('resize', scheduleMeasure);\n return () => {\n if (frame !== null)\n cancelAnimationFrame(frame);\n observer?.disconnect();\n window.removeEventListener('resize', scheduleMeasure);\n };\n }, [current]);\n // This shell overlay survives conversation route changes. Gate expansion by its\n // owning session during render, then clear stale state before paint. This\n // removes the old panel immediately instead of waiting for the no-team\n // autoclose grace period on the destination page.\n useLayoutEffect(() => {\n const tracker = autoOpenTrackerRef.current;\n if (tracker.sessionId !== current) {\n tracker.sessionId = current;\n tracker.restoreComplete = false;\n tracker.liveTeamIds = new Set();\n setWasActive(false);\n setAutoOpened(false);\n }\n if (openOwner === undefined || openOwner === current)\n return;\n setOpen(false);\n setOpenOwner(undefined);\n }, [current, openOwner]);\n // Only the wide docked mode asks the conversation column to yield. Floating\n // and compact modes are intentionally true overlays. The width is written as\n // one shared variable so the panel and the concession cannot drift apart.\n useLayoutEffect(() => {\n const root = document.documentElement;\n const shouldYield = expanded && geometry.mode === 'docked' && !compact;\n if (shouldYield) {\n root.setAttribute(PANEL_OPEN_ATTRIBUTE, '');\n root.style.setProperty(PANEL_SHIFT_PROPERTY, `${geometry.width + PANEL_CONVERSATION_GAP + 18}px`);\n }\n else {\n root.removeAttribute(PANEL_OPEN_ATTRIBUTE);\n root.style.removeProperty(PANEL_SHIFT_PROPERTY);\n }\n return () => {\n root.removeAttribute(PANEL_OPEN_ATTRIBUTE);\n root.style.removeProperty(PANEL_SHIFT_PROPERTY);\n };\n }, [compact, expanded, geometry.mode, geometry.width]);\n useEffect(() => {\n if (current === undefined)\n return;\n // Cards keep live teams on the normal cadence. The current-session scope\n // also performs one cold-start discovery pass so archived/cardless teams\n // survive a browser or `dsh web` restart.\n const controller = startActivityPolling(currentTargets, { discoverySessionId: current });\n let active = true;\n const tracker = autoOpenTrackerRef.current;\n if (tracker.sessionId === current && !tracker.restoreComplete) {\n void controller.firstTick.then(() => {\n const latest = autoOpenTrackerRef.current;\n if (!active || latest.sessionId !== current || latest.restoreComplete)\n return;\n latest.liveTeamIds = new Set(getActivitySnapshotsSnapshot().teams\n .filter((team) => team.captainSessionId === current)\n .map((team) => team.teamId));\n latest.restoreComplete = true;\n });\n }\n return () => {\n active = false;\n controller.stop();\n };\n }, [current, currentTargets]);\n useEffect(() => {\n const onOpenPanel = (event) => {\n const activeSession = currentRef.current;\n if (activeSession === undefined)\n return;\n setOpenOwner(activeSession);\n setOpen(true);\n const detail = event.detail;\n if (detail?.teamId !== undefined) {\n // A card from a log that predates captainSessionId belongs to the\n // session that activated it (the current one at injection time).\n const owner = detail.captainSessionId !== '' ? detail.captainSessionId : currentRef.current ?? '';\n const teamKey = `${owner}:${detail.teamId}`;\n setHistoric((previous) => {\n const next = new Map(previous);\n next.set(teamKey, { data: detail, owner });\n return next;\n });\n }\n };\n window.addEventListener(OPEN_PANEL_EVENT, onOpenPanel);\n return () => {\n window.removeEventListener(OPEN_PANEL_EVENT, onOpenPanel);\n };\n }, []);\n // Teams follow the current session: live snapshots and historic card\n // summaries are visible only while their captain session is current.\n const visibleTeams = useMemo(\n // No current session (initial load): show nothing until one is picked,\n // so cross-session teams never leak into the floater.\n () => (current === undefined ? [] : teams.filter((team) => team.captainSessionId === current)), [teams, current]);\n const visibleHistoric = useMemo(() => (current === undefined ? [] : [...historic.values()].filter(({ data, owner }) => owner === current && !teams.some((live) => live.captainSessionId === current && live.teamId === data.teamId) && !archivedTeams.some((archived) => archived.captainSessionId === current && archived.teamId === data.teamId))), [historic, current, teams, archivedTeams]);\n const visibleArchived = useMemo(() => (current === undefined ? [] : archivedTeams.filter((team) => team.captainSessionId === current && !teams.some((live) => live.captainSessionId === current && live.teamId === team.teamId))), [archivedTeams, current, teams]);\n const visibleCount = visibleTeams.length + visibleArchived.length + visibleHistoric.length;\n const visibleLiveTeamIds = useMemo(() => visibleTeams.map((team) => team.teamId).sort(), [visibleTeams]);\n const visibleLiveTeamKey = visibleLiveTeamIds.join('\\u0000');\n useEffect(() => {\n const tracker = autoOpenTrackerRef.current;\n const settled = performance.now() - mountedAtRef.current >= AUTO_OPEN_SETTLE_MS;\n const shouldAutoExpand = tracker.sessionId === current && activityPanelShouldAutoExpand({\n alreadyAutoOpened: autoOpened,\n pageSettled: settled,\n restoreComplete: tracker.restoreComplete,\n previousLiveTeamIds: tracker.liveTeamIds,\n currentLiveTeamIds: visibleLiveTeamIds,\n });\n if (tracker.sessionId === current && tracker.restoreComplete) {\n tracker.liveTeamIds = new Set(visibleLiveTeamIds);\n }\n if (visibleCount > 0) {\n setWasActive(true);\n // Existing state restored for a reopened conversation stays collapsed.\n // Only a live team that appears after the restore pass may auto-expand.\n if (shouldAutoExpand) {\n setOpenOwner(current);\n setOpen(true);\n setAutoOpened(true);\n }\n return;\n }\n if (!wasActive)\n return;\n const timer = setTimeout(() => {\n setOpen(false);\n setOpenOwner(undefined);\n setWasActive(false);\n // Re-arm auto-expand: a later activity (new team, new session) may\n // open the panel on its own again.\n setAutoOpened(false);\n }, AUTOCLOSE_GRACE_MS);\n return () => { clearTimeout(timer); };\n }, [visibleCount, visibleLiveTeamKey, autoOpened, wasActive, current]);\n const busy = useMemo(() => visibleTeams.some((team) => team.members.some((member) => member.activity === 'working')), [visibleTeams]);\n const hasTeams = visibleCount > 0;\n // Auto-height panels do not store their live content height. Capture the\n // rendered box when a pointer gesture starts so movement and a first manual\n // resize clamp against what the user actually sees.\n const panelGeometryForGesture = useCallback(() => {\n const measuredHeight = panelRef.current?.getBoundingClientRect().height;\n if (measuredHeight === undefined || measuredHeight <= 0)\n return geometry;\n return { ...geometry, height: measuredHeight };\n }, [geometry]);\n const flushScheduledLayout = useCallback(() => {\n if (frameRef.current !== null) {\n cancelAnimationFrame(frameRef.current);\n frameRef.current = null;\n }\n const pending = pendingLayoutRef.current;\n pendingLayoutRef.current = null;\n if (pending !== null)\n commitLayout(pending);\n }, [commitLayout]);\n const scheduleLayout = useCallback((next) => {\n pendingLayoutRef.current = next;\n frameRef.current ??= requestAnimationFrame(() => {\n frameRef.current = null;\n const pending = pendingLayoutRef.current;\n pendingLayoutRef.current = null;\n if (pending !== null)\n commitLayout(pending);\n });\n }, [commitLayout]);\n useEffect(() => () => {\n if (frameRef.current !== null)\n cancelAnimationFrame(frameRef.current);\n }, []);\n const beginMove = useCallback((event) => {\n if (compact || event.button !== 0 || event.target.closest('button') !== null)\n return;\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n gestureRef.current = {\n kind: 'move',\n pointerId: event.pointerId,\n originX: event.clientX,\n originY: event.clientY,\n start: panelGeometryForGesture(),\n activated: false,\n };\n }, [compact, panelGeometryForGesture]);\n const beginResize = useCallback((edge, event) => {\n if (compact || event.button !== 0 || (geometry.mode === 'docked' && edge !== 'left'))\n return;\n event.preventDefault();\n event.stopPropagation();\n event.currentTarget.setPointerCapture(event.pointerId);\n gestureRef.current = {\n kind: 'resize',\n edge,\n pointerId: event.pointerId,\n originX: event.clientX,\n originY: event.clientY,\n start: panelGeometryForGesture(),\n activated: true,\n };\n setInteraction('resizing');\n }, [compact, geometry.mode, panelGeometryForGesture]);\n const updateGesture = useCallback((event) => {\n const gesture = gestureRef.current;\n if (gesture === null || gesture.pointerId !== event.pointerId\n || !event.currentTarget.hasPointerCapture(event.pointerId))\n return;\n const dx = event.clientX - gesture.originX;\n const dy = event.clientY - gesture.originY;\n const activeBounds = boundsRef.current;\n if (gesture.kind === 'move') {\n if (!gesture.activated && Math.hypot(dx, dy) < MOVE_THRESHOLD)\n return;\n if (!gesture.activated) {\n gesture.activated = true;\n setInteraction('dragging');\n }\n scheduleLayout(movePanelLayout(floatPanelLayout(gesture.start, activeBounds), dx, dy, activeBounds));\n return;\n }\n scheduleLayout(resizePanelLayout(gesture.start, gesture.edge ?? 'left', dx, dy, activeBounds));\n }, [scheduleLayout]);\n const endGesture = useCallback((event) => {\n const gesture = gestureRef.current;\n if (gesture === null || gesture.pointerId !== event.pointerId)\n return;\n updateGesture(event);\n flushScheduledLayout();\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n gestureRef.current = null;\n setInteraction(null);\n }, [flushScheduledLayout, updateGesture]);\n const cancelGesture = useCallback((event) => {\n const gesture = gestureRef.current;\n if (gesture === null || gesture.pointerId !== event.pointerId)\n return;\n flushScheduledLayout();\n gestureRef.current = null;\n setInteraction(null);\n }, [flushScheduledLayout]);\n const toggleDock = useCallback(() => {\n const liveGeometry = panelGeometryForGesture();\n commitLayout(liveGeometry.mode === 'docked'\n ? floatPanelLayout(liveGeometry, boundsRef.current)\n : dockPanelLayout(liveGeometry, boundsRef.current));\n }, [commitLayout, panelGeometryForGesture]);\n const autoHeight = panelUsesAutoHeight(geometry, bounds);\n const panelStyle = {\n width: geometry.width,\n height: autoHeight ? 'auto' : geometry.height,\n maxHeight: panelMaximumHeight(geometry, bounds),\n transform: `translate3d(${geometry.x}px, ${geometry.y}px, 0)`,\n };\n if (!hasTeams && !expanded)\n return null;\n return (_jsxs(_Fragment, { children: [!expanded && (_jsx(CollapsedBadge, { count: visibleCount, busy: busy, t: t, onClick: () => {\n if (current === undefined)\n return;\n setOpenOwner(current);\n setOpen(true);\n } })), expanded && (_jsxs(\"aside\", { ref: panelRef, className: css.panel, style: panelStyle, \"data-agent-teams-activity\": true, \"data-panel-mode\": geometry.mode, \"data-height-mode\": autoHeight ? 'auto' : 'manual', \"data-compact\": compact || undefined, \"data-dragging\": interaction === 'dragging' || undefined, \"data-resizing\": interaction === 'resizing' || undefined, \"aria-label\": t('activity.panelAria'), children: [_jsxs(\"header\", { className: css.panelHead, onPointerDown: beginMove, onPointerMove: updateGesture, onPointerUp: endGesture, onPointerCancel: cancelGesture, \"data-drag-handle\": !compact || undefined, children: [_jsxs(\"span\", { className: css.panelTitle, children: [t('activity.title'), _jsx(\"span\", { className: css.panelDot, \"data-busy\": busy, \"aria-hidden\": true })] }), _jsxs(\"span\", { className: css.panelControls, children: [!compact && (_jsx(\"button\", { type: \"button\", className: css.iconButton, \"data-control\": \"dock\", \"data-mode\": geometry.mode, onClick: toggleDock, \"aria-label\": t(geometry.mode === 'docked' ? 'activity.float' : 'activity.dockRight'), title: t(geometry.mode === 'docked' ? 'activity.float' : 'activity.dockRight'), children: _jsx(IconPanelLeftOutline16, {}) })), _jsx(\"button\", { type: \"button\", className: css.iconButton, \"data-control\": \"collapse\", onClick: () => {\n setOpen(false);\n setOpenOwner(undefined);\n }, \"aria-label\": t('activity.collapse'), title: t('activity.collapse'), children: _jsx(IconChevronDownOutline14, {}) })] })] }), _jsx(\"div\", { className: css.teams, children: visibleCount === 0\n ? _jsx(\"span\", { className: css.emptyHint, children: t('activity.empty') })\n : (_jsxs(_Fragment, { children: [visibleTeams.map((team) => (_jsx(TeamSection, { team: team, modelDirectory: team.phase === 'staged'\n ? modelDirectories.directoryFor(team.captainSessionId)\n : undefined, onContinuePlanning: returnToComposer, onDiscarded: returnToComposer, onNavigate: navigateToSession, t: t }, team.teamId))), visibleArchived.map((team) => (_jsxs(\"div\", { \"data-team-id\": team.teamId, \"data-historic\": true, className: css.archivedWrap, children: [_jsx(\"span\", { className: css.archiveLabel, children: t(team.phase === 'staged' ? 'archive.discardedLabel' : 'archive.label') }), _jsx(TeamSection, { team: team, onNavigate: navigateToSession, t: t, historic: true })] }, `${team.captainSessionId}:${team.teamId}`))), visibleHistoric.map(({ data: team, owner }) => {\n const teamKey = `${owner}:${team.teamId}`;\n return (_jsx(TeamSection, { team: historicCardTeam(team, owner), onNavigate: navigateToSession, t: t, historic: true }, teamKey));\n })] })) }), !compact && (_jsx(\"div\", { className: css.resizeHandle, \"data-resize-edge\": \"left\", onPointerDown: (event) => { beginResize('left', event); }, onPointerMove: updateGesture, onPointerUp: endGesture, onPointerCancel: cancelGesture, \"aria-hidden\": true })), !compact && geometry.mode === 'floating' && (_jsxs(_Fragment, { children: [_jsx(\"div\", { className: css.resizeHandle, \"data-resize-edge\": \"bottom\", onPointerDown: (event) => { beginResize('bottom', event); }, onPointerMove: updateGesture, onPointerUp: endGesture, onPointerCancel: cancelGesture, \"aria-hidden\": true }), _jsx(\"div\", { className: css.resizeHandle, \"data-resize-edge\": \"corner\", onPointerDown: (event) => { beginResize('corner', event); }, onPointerMove: updateGesture, onPointerUp: endGesture, onPointerCancel: cancelGesture, \"aria-hidden\": true })] }))] }))] }));\n}\n","/**\n * AgentTeams conversation card: a lightweight in-conversation summary shown\n * when a team is created — the captain's name, the member roster with whale\n * avatars, and an entry point that re-activates the top-right activity\n * panel (useful after the floater was closed, or when re-opening an old\n * session for review).\n *\n * The fold anchors to the Harness's durable `tool/call` + `tool/result`\n * records for `agent_teams_create`. Those are first-party session events, so\n * the card survives restarts without writing an out-of-repo event type.\n * @module dsh-agent-teams/client/card\n */\n/** Parse the only create-call fields the historic card owns. */\nexport function parseAgentTeamsCreateArgs(value) {\n try {\n const parsed = JSON.parse(value);\n if (typeof parsed !== 'object' || parsed === null || !('name' in parsed) || typeof parsed.name !== 'string') {\n return undefined;\n }\n const name = parsed.name.trim();\n if (name === '')\n return undefined;\n const cleaned = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');\n return { teamId: cleaned === '' ? 'team' : cleaned, name };\n }\n catch {\n return undefined;\n }\n}\n/** Durable first-party tool events folded into one keyed Chat node. */\nexport const agentTeamsCardDefinition = {\n kind: 'agent-teams',\n target: 'chat',\n match: (event) => {\n if (event.type === 'tool/call' && event.data.name === 'agent_teams_create') {\n return parseAgentTeamsCreateArgs(event.data.arguments) === undefined\n ? null\n : { id: String(event.data.callId), role: 'start' };\n }\n if (event.type === 'tool/result' && event.data.message.source.kind === 'tool') {\n return { id: String(event.data.message.source.callId), role: 'update' };\n }\n return null;\n },\n start: (_context, match) => {\n if (match.event.type !== 'tool/call') {\n throw new Error('agent-teams card start requires agent_teams_create tool/call');\n }\n const parsed = parseAgentTeamsCreateArgs(match.event.data.arguments);\n if (parsed === undefined)\n throw new Error('agent-teams card start requires valid create arguments');\n return { ...parsed, accepted: false };\n },\n update: (context, match) => {\n if (match.event.type !== 'tool/result')\n return context.state;\n const failed = match.event.data.error !== undefined\n || match.event.data.message.content.some((block) => block.type === 'tool-result' && block.isError === true);\n if (failed)\n return context.state;\n return { ...context.state, accepted: true };\n },\n buildViewNode: (context) => {\n if (context.start === undefined)\n return null;\n const state = context.state;\n if (!state.accepted)\n return null;\n return {\n key: context.key,\n kind: 'agent-teams',\n id: context.id,\n target: 'chat',\n anchorSeq: context.start.event.seq,\n location: context.start.location,\n visibility: 'visible',\n data: {\n teamId: state.teamId,\n captainSessionId: '',\n teamName: state.name,\n members: [],\n },\n };\n },\n};\n","/** `agentTeams` namespace dictionaries for every plugin-owned Web surface. */\n/** Dictionary namespace owned by the AgentTeams client plugin. */\nexport const AGENT_TEAMS_LOCALE_NAMESPACE = 'agentTeams';\n/** Simplified Chinese dictionary (the key-set source of truth). */\nexport const zh = {\n 'card.memberCount': '{count} 名成员',\n 'action.openActivityPanel': '打开活动面板',\n 'activity.panelButton': '活动面板',\n 'activity.badgeAria': 'AgentTeams 活动与历史,{count} 条团队记录',\n 'activity.panelAria': 'AgentTeams 活动面板',\n 'activity.title': 'AgentTeams 活动',\n 'activity.float': '切换为浮动面板',\n 'activity.dockRight': '停靠到右侧',\n 'activity.collapse': '收起活动面板',\n 'activity.empty': '暂无团队活动',\n 'team.stop': '停止团队',\n 'team.stopped': '已停止',\n 'team.stopTitle': '确认停止“{team}”?',\n 'team.stopDescription': '将取消 {tasks} 项未完成任务,并停止 {members} 名正在工作的成员。已完成的结果会保留。',\n 'team.stopCancel': '继续运行',\n 'team.stopConfirm': '确认停止',\n 'team.stopping': '正在停止…',\n 'team.stopFailed': '停止失败:{message}',\n 'team.stopRequestFailed': '服务器未能停止团队,请重试',\n 'team.discarded': '已放弃',\n 'format.listSeparator': '、',\n 'task.status.pending': '待领取',\n 'task.status.claimed': '已认领',\n 'task.status.inProgress': '进行中',\n 'task.status.completed': '已完成',\n 'task.status.failed': '失败',\n 'task.status.cancelled': '已取消',\n 'task.status.notRun': '未执行',\n 'member.state.working': '工作中',\n 'member.state.failed': '有失败',\n 'member.state.waiting': '等待',\n 'member.state.delivered': '已交付',\n 'member.state.left': '已离队',\n 'member.state.removed': '已移除',\n 'member.state.pending': '待执行',\n 'member.state.unassigned': '待派工',\n 'member.state.staged': '待创建',\n 'member.state.notCreated': '未创建',\n 'member.state.stopped': '已停止',\n 'member.status.executing': '正在执行 {taskId}',\n 'member.status.executingModel': '正在执行 {taskId} · {model}',\n 'member.status.working': '正在处理已派任务',\n 'member.status.waitingOn': '等待 {taskId} · {assignee}',\n 'member.status.waitingPrerequisite': '等待前置任务',\n 'member.status.waitingAssignment': '等待队长派工',\n 'member.status.delivered': '任务已交付',\n 'member.status.idle': '待继续执行',\n 'member.status.unknown': '状态未知',\n 'member.status.staged': '确认后创建并启动',\n 'member.status.settled': '任务均已终结',\n 'member.status.discarded': '计划已放弃,未创建',\n 'member.status.stopped': '团队已停止,需显式恢复',\n 'task.assignee.unclaimed': '待认领',\n 'task.summary.waitingBreakdown': '等待队长拆解任务',\n 'task.summary.staged': '{count} 项计划等待确认',\n 'task.summary.discarded': '{count} 项计划已放弃,均未执行',\n 'task.summary.allDelivered': '全部 {count} 项任务已交付',\n 'task.summary.ended': '终态:{completed} 已交付 · {cancelled} 已取消 · {failed} 失败',\n 'task.summary.blockedAndRunning': '{tasks}{more} 等待前置,其余已开工',\n 'task.summary.more': ' 等 {count} 项',\n 'task.summary.running': '{tasks} 正在执行',\n 'task.summary.ready': '{tasks} 已就绪待开工',\n 'task.summary.blocked': '{tasks} 等待前置',\n 'task.summary.failedSettled': '{count} 项已失败,自动循环已停止',\n 'task.summary.waitingSchedule': '等待下一轮调度',\n 'progress.aria': '团队总进度',\n 'progress.title': '总进度',\n 'progress.running': '■ 进行中 {count}',\n 'progress.blocked': '■ 等待依赖 {count}',\n 'progress.delivered': '■ 已交付 {count}',\n 'dependency.aria': '任务依赖链',\n 'dependency.parallel': '并行任务',\n 'dependency.title': '任务依赖',\n 'dependency.hint.parallel': '无前后依赖 · 点击查看详情',\n 'dependency.hint.chain': '悬停高亮依赖链 · 点击固定',\n 'dependency.hint.pinned': '{taskId} 已固定 · Esc 取消',\n 'task.runningAria': '运行中',\n 'task.model': '{model}',\n 'member.model': '{model}',\n 'task.detail.completed': '已完成并交付',\n 'task.detail.noPrerequisite': '无前置,可立即开工',\n 'task.detail.ready': '前置已就绪,可开工',\n 'task.detail.waitingOn': '等待 {tasks}',\n 'task.detail.notRun': '计划已放弃,任务未执行',\n 'task.detail.noDownstream': '无下游任务',\n 'task.detail.unlocks': '完成后解锁 {tasks}',\n 'team.ended': '已结束',\n 'plan.badge': '待确认',\n 'plan.title': '执行前计划审查',\n 'plan.description': '成员尚未创建、任务尚未调度。可直接调整计划,也可返回对话告诉队长哪里需要修改。',\n 'plan.member.role': '角色',\n 'plan.member.provider': 'Provider',\n 'plan.member.model': '模型',\n 'plan.member.reasoning': '推理等级',\n 'plan.member.reasoningHint': '留空使用默认值;可用 low、medium、high、xhigh 等',\n 'plan.model.choose': '选择模型',\n 'plan.model.currentUnavailable': '{provider}/{model}(当前目录不可用)',\n 'plan.model.route': '路由:{provider}/{model}',\n 'plan.model.defaultReasoning': '默认推理等级',\n 'plan.model.providerDefault': 'Provider 默认值',\n 'plan.model.modelDefault': '模型默认值({effort})',\n 'plan.model.triggerAria': '选择成员模型,当前 {model},推理等级 {effort}',\n 'plan.model.back': '返回',\n 'plan.model.loading': '正在加载模型…',\n 'plan.model.empty': '暂无可用模型',\n 'plan.model.partialFailure': '{count} 个 Provider 的模型目录加载失败',\n 'plan.model.retry': '重试',\n 'plan.member.prompt': '角色提示词',\n 'plan.member.roleFallback': '未设置角色',\n 'plan.task.subject': '任务名称',\n 'plan.task.description': '任务说明',\n 'plan.task.assignee': '负责人',\n 'plan.task.dependencies': '依赖任务 ID(逗号分隔)',\n 'plan.task.dependenciesHint': '例如 task-1, task-2;不得形成循环依赖',\n 'plan.task.unassigned': '共享任务池',\n 'plan.unsaved': '未保存',\n 'plan.save': '保存',\n 'plan.saving': '保存中…',\n 'plan.remove': '删除',\n 'plan.removed': '任务已删除',\n 'plan.removeConfirm': '确认删除',\n 'plan.removeWarning': '删除 {task} 后将重新计算依赖关系。',\n 'plan.cancel': '取消',\n 'plan.addTask': '添加任务',\n 'plan.adding': '添加中…',\n 'plan.taskAdded': '任务已添加',\n 'plan.newTask': '新任务名称',\n 'plan.newTaskLabel': '新增计划任务',\n 'plan.readySummary': '{members} 名成员 · {tasks} 项任务 · {links} 条依赖',\n 'plan.flow.aria': '团队启动流程',\n 'plan.flow.review': '审查计划',\n 'plan.flow.spawn': '创建成员',\n 'plan.flow.run': '开始执行',\n 'plan.members.title': '成员与模型路由',\n 'plan.members.count': '{count} 名成员',\n 'plan.members.empty': '尚未规划成员',\n 'plan.tasks.title': '任务与依赖',\n 'plan.tasks.count': '{count} 项任务 · {links} 条依赖',\n 'plan.tasks.empty': '尚未规划任务',\n 'plan.dependencies.none': '无依赖',\n 'plan.dependencies.count': '{count} 条依赖',\n 'plan.approve': '确认并启动团队',\n 'plan.approving': '正在创建成员…',\n 'plan.approveTitle': '计划检查完毕?',\n 'plan.approveHint': '确认后将创建 {members} 名成员并调度 {tasks} 项任务。',\n 'plan.approveConfirmTitle': '确认启动此团队',\n 'plan.approveWarning': '启动后不能再在此处编辑成员和依赖。',\n 'plan.approveConfirm': '确认启动',\n 'plan.continue': '返回对话修改',\n 'plan.returnToChat': '回到对话',\n 'plan.feedbackTitle': '正在等你说明修改方向',\n 'plan.feedbackHint': '队长会在对话中追问;收到你的回复后,只修改这份草案并再次等待确认。',\n 'plan.discard': '放弃本次计划',\n 'plan.discardConfirmTitle': '放弃本次计划?',\n 'plan.discardWarning': '该计划会结束并归档;尚未创建任何成员,也不会执行任务。',\n 'plan.discardConfirm': '确认放弃',\n 'plan.discarding': '正在放弃…',\n 'plan.pendingEdits': '请先保存当前修改,再启动团队。',\n 'plan.saved': '计划已保存',\n 'plan.failed': '操作失败:{message}',\n 'team.stats.members': '{count} 名成员',\n 'team.stats.completed': '{completed}/{total} 完成',\n 'team.stats.messages': '{count} 条消息',\n 'delegation.aria': '队长派工关系',\n 'captain.name': '队长',\n 'captain.role': '拆解 · 派发 · 汇总',\n 'captain.summary': '已派发 {tasks} 项任务给 {members} 名成员',\n 'captain.summary.staged': '已规划 {tasks} 项任务与 {members} 名成员,等待确认',\n 'captain.summary.awaitingFeedback': '草案已保留,等待你在对话中说明修改方向',\n 'captain.summary.discarded': '计划已放弃:{members} 名成员未创建,{tasks} 项任务未执行',\n 'captain.summary.withTakeover': '已派发 {tasks} 项给成员 · 队长接管 {captainTasks}',\n 'captain.state.working': '{count} 人执行中',\n 'captain.state.takeover': '正在执行 {tasks}',\n 'captain.state.collected': '已收齐',\n 'captain.state.waiting': '等待回报',\n 'captain.state.staged': '待确认',\n 'captain.state.awaitingFeedback': '待反馈',\n 'captain.state.discarded': '已放弃',\n 'captain.state.settled': '已终结',\n 'members.toggle': '{count} 名成员',\n 'members.collapse': '收起',\n 'members.expand': '展开',\n 'members.empty': '暂无成员,等待队长组建团队',\n 'assignment.label': '队长派发',\n 'assignment.staged': '计划任务',\n 'assignment.discarded': '未执行的计划',\n 'assignment.empty': '暂无任务',\n 'archive.label': '已结束 · 历史归档',\n 'archive.discardedLabel': '计划已放弃 · 历史归档',\n};\n/** English dictionary, checked complete against the Chinese source key set. */\nexport const en = {\n 'card.memberCount': '{count} members',\n 'action.openActivityPanel': 'Open activity panel',\n 'activity.panelButton': 'Activity panel',\n 'activity.badgeAria': 'AgentTeams activity and history, {count} team records',\n 'activity.panelAria': 'AgentTeams activity panel',\n 'activity.title': 'AgentTeams activity',\n 'activity.float': 'Switch to floating panel',\n 'activity.dockRight': 'Dock to the right',\n 'activity.collapse': 'Collapse activity panel',\n 'activity.empty': 'No team activity',\n 'team.stop': 'Stop team',\n 'team.stopped': 'Stopped',\n 'team.stopTitle': 'Stop “{team}”?',\n 'team.stopDescription': 'This cancels {tasks} unfinished tasks and stops {members} working members. Completed results are kept.',\n 'team.stopCancel': 'Keep running',\n 'team.stopConfirm': 'Stop team',\n 'team.stopping': 'Stopping…',\n 'team.stopFailed': 'Could not stop team: {message}',\n 'team.stopRequestFailed': 'The server could not stop this team. Try again.',\n 'team.discarded': 'Discarded',\n 'format.listSeparator': ', ',\n 'task.status.pending': 'Unclaimed',\n 'task.status.claimed': 'Claimed',\n 'task.status.inProgress': 'In progress',\n 'task.status.completed': 'Completed',\n 'task.status.failed': 'Failed',\n 'task.status.cancelled': 'Cancelled',\n 'task.status.notRun': 'Not run',\n 'member.state.working': 'Working',\n 'member.state.failed': 'Has failures',\n 'member.state.waiting': 'Waiting',\n 'member.state.delivered': 'Delivered',\n 'member.state.left': 'Left team',\n 'member.state.removed': 'Removed',\n 'member.state.pending': 'Pending',\n 'member.state.unassigned': 'Awaiting assignment',\n 'member.state.staged': 'Not spawned',\n 'member.state.notCreated': 'Not created',\n 'member.state.stopped': 'Stopped',\n 'member.status.executing': 'Working on {taskId}',\n 'member.status.executingModel': 'Working on {taskId} · {model}',\n 'member.status.working': 'Working on assigned tasks',\n 'member.status.waitingOn': 'Waiting for {taskId} · {assignee}',\n 'member.status.waitingPrerequisite': 'Waiting for prerequisites',\n 'member.status.waitingAssignment': 'Waiting for the captain to assign work',\n 'member.status.delivered': 'Tasks delivered',\n 'member.status.idle': 'Ready to continue',\n 'member.status.unknown': 'Status unknown',\n 'member.status.staged': 'Will be spawned after approval',\n 'member.status.settled': 'All assigned work is settled',\n 'member.status.discarded': 'Plan discarded; member was not created',\n 'member.status.stopped': 'Team stopped; explicit resume required',\n 'task.assignee.unclaimed': 'Unclaimed',\n 'task.summary.waitingBreakdown': 'Waiting for the captain to break down the work',\n 'task.summary.staged': '{count} planned tasks awaiting approval',\n 'task.summary.discarded': '{count} planned tasks discarded; none ran',\n 'task.summary.allDelivered': 'All {count} tasks delivered',\n 'task.summary.ended': 'Final: {completed} delivered · {cancelled} cancelled · {failed} failed',\n 'task.summary.blockedAndRunning': '{tasks}{more} waiting on prerequisites; other work has started',\n 'task.summary.more': ' and {count} more',\n 'task.summary.running': '{tasks} in progress',\n 'task.summary.ready': '{tasks} ready to start',\n 'task.summary.blocked': '{tasks} waiting on prerequisites',\n 'task.summary.failedSettled': '{count} failed; the automatic loop has stopped',\n 'task.summary.waitingSchedule': 'Waiting for the next scheduling round',\n 'progress.aria': 'Overall team progress',\n 'progress.title': 'Overall progress',\n 'progress.running': '■ In progress {count}',\n 'progress.blocked': '■ Waiting {count}',\n 'progress.delivered': '■ Delivered {count}',\n 'dependency.aria': 'Task dependency chain',\n 'dependency.parallel': 'Parallel tasks',\n 'dependency.title': 'Task dependencies',\n 'dependency.hint.parallel': 'No dependencies · Click for details',\n 'dependency.hint.chain': 'Hover to highlight dependencies · Click to pin',\n 'dependency.hint.pinned': '{taskId} pinned · Esc to clear',\n 'task.runningAria': 'Running',\n 'task.model': '{model}',\n 'member.model': '{model}',\n 'task.detail.completed': 'Completed and delivered',\n 'task.detail.noPrerequisite': 'No prerequisites; ready to start',\n 'task.detail.ready': 'Prerequisites ready; can start',\n 'task.detail.waitingOn': 'Waiting for {tasks}',\n 'task.detail.notRun': 'Plan discarded; task was not run',\n 'task.detail.noDownstream': 'No downstream tasks',\n 'task.detail.unlocks': 'Unlocks {tasks} when complete',\n 'team.ended': 'Ended',\n 'plan.badge': 'Awaiting approval',\n 'plan.title': 'Pre-run plan review',\n 'plan.description': 'Members have not been spawned and tasks have not been scheduled. Edit the draft here, or return to chat and tell the Captain what should change.',\n 'plan.member.role': 'Role',\n 'plan.member.provider': 'Provider',\n 'plan.member.model': 'Model',\n 'plan.member.reasoning': 'Reasoning effort',\n 'plan.member.reasoningHint': 'Leave blank for default; accepts low, medium, high, xhigh, and more',\n 'plan.model.choose': 'Choose a model',\n 'plan.model.currentUnavailable': '{provider}/{model} (not in the current catalog)',\n 'plan.model.route': 'Route: {provider}/{model}',\n 'plan.model.defaultReasoning': 'Default reasoning effort',\n 'plan.model.providerDefault': 'Provider default',\n 'plan.model.modelDefault': 'Model default ({effort})',\n 'plan.model.triggerAria': 'Choose member model, currently {model}, reasoning effort {effort}',\n 'plan.model.back': 'Back',\n 'plan.model.loading': 'Loading models…',\n 'plan.model.empty': 'No models available',\n 'plan.model.partialFailure': '{count} provider catalogs could not be loaded',\n 'plan.model.retry': 'Retry',\n 'plan.member.prompt': 'Role prompt',\n 'plan.member.roleFallback': 'Role not set',\n 'plan.task.subject': 'Task subject',\n 'plan.task.description': 'Task description',\n 'plan.task.assignee': 'Assignee',\n 'plan.task.dependencies': 'Dependency task IDs (comma-separated)',\n 'plan.task.dependenciesHint': 'For example task-1, task-2; cycles are rejected',\n 'plan.task.unassigned': 'Shared task pool',\n 'plan.unsaved': 'Unsaved',\n 'plan.save': 'Save',\n 'plan.saving': 'Saving…',\n 'plan.remove': 'Remove',\n 'plan.removed': 'Task removed',\n 'plan.removeConfirm': 'Confirm remove',\n 'plan.removeWarning': 'Removing {task} will recalculate downstream dependencies.',\n 'plan.cancel': 'Cancel',\n 'plan.addTask': 'Add task',\n 'plan.adding': 'Adding…',\n 'plan.taskAdded': 'Task added',\n 'plan.newTask': 'New task subject',\n 'plan.newTaskLabel': 'Add a planned task',\n 'plan.readySummary': '{members} members · {tasks} tasks · {links} dependencies',\n 'plan.flow.aria': 'Team launch flow',\n 'plan.flow.review': 'Review plan',\n 'plan.flow.spawn': 'Create members',\n 'plan.flow.run': 'Start work',\n 'plan.members.title': 'Members & model routes',\n 'plan.members.count': '{count} members',\n 'plan.members.empty': 'No members planned yet',\n 'plan.tasks.title': 'Tasks & dependencies',\n 'plan.tasks.count': '{count} tasks · {links} dependencies',\n 'plan.tasks.empty': 'No tasks planned yet',\n 'plan.dependencies.none': 'No dependencies',\n 'plan.dependencies.count': '{count} dependencies',\n 'plan.approve': 'Approve & Run',\n 'plan.approving': 'Creating members…',\n 'plan.approveTitle': 'Plan ready?',\n 'plan.approveHint': 'Approval creates {members} members and schedules {tasks} tasks.',\n 'plan.approveConfirmTitle': 'Confirm team launch',\n 'plan.approveWarning': 'Member routes and dependencies cannot be edited here after launch.',\n 'plan.approveConfirm': 'Confirm launch',\n 'plan.continue': 'Return to chat & revise',\n 'plan.returnToChat': 'Return to chat',\n 'plan.feedbackTitle': 'Waiting for your revision direction',\n 'plan.feedbackHint': 'The Captain will ask in chat. After your reply, it will revise this draft and wait for approval again.',\n 'plan.discard': 'Discard this plan',\n 'plan.discardConfirmTitle': 'Discard this plan?',\n 'plan.discardWarning': 'The plan will end and be archived. No members have been spawned and no tasks will run.',\n 'plan.discardConfirm': 'Discard plan',\n 'plan.discarding': 'Discarding…',\n 'plan.pendingEdits': 'Save the current edits before launching the team.',\n 'plan.saved': 'Plan saved',\n 'plan.failed': 'Operation failed: {message}',\n 'team.stats.members': '{count} members',\n 'team.stats.completed': '{completed}/{total} completed',\n 'team.stats.messages': '{count} messages',\n 'delegation.aria': 'Captain delegation map',\n 'captain.name': 'Captain',\n 'captain.role': 'Break down · Delegate · Synthesize',\n 'captain.summary': 'Assigned {tasks} tasks to {members} members',\n 'captain.summary.staged': 'Planned {tasks} tasks and {members} members; awaiting approval',\n 'captain.summary.awaitingFeedback': 'Draft preserved; waiting for your revision direction in chat',\n 'captain.summary.discarded': 'Plan discarded: {members} members were not created and {tasks} tasks did not run',\n 'captain.summary.withTakeover': 'Assigned {tasks} to members · Captain owns {captainTasks}',\n 'captain.state.working': '{count} active',\n 'captain.state.takeover': 'Working on {tasks}',\n 'captain.state.collected': 'All reports received',\n 'captain.state.waiting': 'Waiting for reports',\n 'captain.state.staged': 'Awaiting approval',\n 'captain.state.awaitingFeedback': 'Awaiting feedback',\n 'captain.state.discarded': 'Discarded',\n 'captain.state.settled': 'Settled',\n 'members.toggle': 'Members {count}',\n 'members.collapse': 'Collapse',\n 'members.expand': 'Expand',\n 'members.empty': 'No members yet; waiting for the captain to assemble the team',\n 'assignment.label': 'Captain assigned',\n 'assignment.staged': 'Planned task',\n 'assignment.discarded': 'Plan not run',\n 'assignment.empty': 'No tasks',\n 'archive.label': 'Ended · Archived history',\n 'archive.discardedLabel': 'Plan discarded · Archived history',\n};\n","/** Version-tolerant navigation into durable AgentTeams member transcripts. */\n/**\n * Open one member's persisted transcript.\n *\n * Harness rc.8 intentionally removed cold subagents from the ordinary session\n * list. They must first be rediscovered in their parent's catalog, then opened\n * with the exact parent/child/mode address. Older runtimes have only `open()`;\n * the fallback preserves the plugin's rc.6 peer range.\n */\nexport async function openAgentTeamMember(sessions, parentSessionId, childSessionId) {\n if (sessions.openSubagent === undefined || sessions.refreshSubagents === undefined) {\n sessions.open(childSessionId);\n return 'session';\n }\n await sessions.refreshSubagents(parentSessionId);\n const retained = sessions.subagentAddress?.(childSessionId);\n sessions.openSubagent(retained?.parentSessionId === parentSessionId\n ? retained\n : { parentSessionId, childSessionId, mode: 'continuable' });\n return 'subagent';\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { ActivityPanel } from \"./ActivityPanel.js\";\nimport { AgentTeamsCard } from \"./AgentTeamsCard.js\";\nimport { agentTeamsCardDefinition } from \"./agent-teams-card-definition.js\";\nimport { AGENT_TEAMS_LOCALE_NAMESPACE, en, zh, } from \"./locales.js\";\nimport { openAgentTeamMember } from \"./session-navigation.js\";\n/** Required services: conversation nodes, slots, sessions navigation, and locale. */\nexport const inject = ['conversationEvents', 'slots', 'sessions', 'locale', 'modelDirectories'];\n/** The replayed user message is the canonical transcript entry. */\nfunction HiddenAgentTeamsCommand() {\n return null;\n}\n/**\n * Register the activity monitor in the shell's additive overlay and the\n * in-conversation team card. The card's activity button re-opens a folded\n * monitor via a window event — the recovery path for an old session.\n */\nexport function apply(ctx) {\n ctx.effect(() => ctx.locale.register(AGENT_TEAMS_LOCALE_NAMESPACE, { zh, en }), 'agent-teams: dictionaries');\n const openMember = (parentId, childId) => {\n void openAgentTeamMember(ctx.sessions, parentId, childId).catch((error) => {\n console.warn(`agent-teams: failed to open member transcript ${childId}: ${String(error)}`);\n });\n };\n const Panel = ({ t }) => (_jsx(ActivityPanel, { sessionsList: ctx.sessions.list, modelDirectories: ctx.modelDirectories, openMember: openMember, t: t }));\n ctx.slots.inject('shell.overlay', () => ctx.slots.register({\n name: 'shell.overlay',\n id: 'agent-teams-activity',\n order: 80,\n label: 'AgentTeams activity',\n locale: AGENT_TEAMS_LOCALE_NAMESPACE,\n }, Panel));\n // The host command is only the slash-menu/admission surface. Its input is\n // replayed as the visible user message, so the generic result row would be\n // a duplicate placed before that message by command lifecycle ordering.\n ctx.slots.inject('conversation.chat.commandview', () => ctx.slots.register({\n name: 'conversation.chat.commandview',\n key: 'agent-teams',\n }, HiddenAgentTeamsCommand));\n ctx.conversationEvents.register(agentTeamsCardDefinition);\n ctx.slots.inject('conversation.chat.node', () => ctx.slots.register({\n name: 'conversation.chat.node',\n key: 'agent-teams',\n locale: AGENT_TEAMS_LOCALE_NAMESPACE,\n inject: () => ({\n openMember,\n }),\n }, AgentTeamsCard));\n}\n"],"mappings":"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"}