@nanmicoder/dsh-agent-teams 0.1.11 → 0.1.12

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 CHANGED
@@ -414,7 +414,7 @@ window.__ModuleLoader__.load({
414
414
  } }));
415
415
  }
416
416
  /** Render one durable team as a compact conversation card. */
417
- function AgentTeamsCard({ node, openMember, sessionId }) {
417
+ function AgentTeamsCard({ node, openMember, sessionId, t }) {
418
418
  const data = node.data;
419
419
  const owner = data.captainSessionId || sessionId;
420
420
  const { teams, archivedTeams } = (0, react.useSyncExternalStore)(subscribeActivitySnapshots, getActivitySnapshotsSnapshot);
@@ -454,9 +454,9 @@ window.__ModuleLoader__.load({
454
454
  title: resolved.teamName,
455
455
  children: resolved.teamName
456
456
  }),
457
- (0, react_jsx_runtime.jsxs)("span", {
457
+ (0, react_jsx_runtime.jsx)("span", {
458
458
  className: AgentTeamsCard_module_css_default.memberCount,
459
- children: [resolved.members.length, " 名成员"]
459
+ children: t("card.memberCount", { count: resolved.members.length })
460
460
  }),
461
461
  (0, react_jsx_runtime.jsx)("button", {
462
462
  type: "button",
@@ -464,9 +464,9 @@ window.__ModuleLoader__.load({
464
464
  onClick: () => {
465
465
  openActivityPanel(resolved);
466
466
  },
467
- "aria-label": "打开活动面板",
468
- title: "打开活动面板",
469
- children: "活动面板"
467
+ "aria-label": t("action.openActivityPanel"),
468
+ title: t("action.openActivityPanel"),
469
+ children: t("activity.panelButton")
470
470
  })
471
471
  ]
472
472
  }), resolved.members.length > 0 && (0, react_jsx_runtime.jsx)("div", {
@@ -650,7 +650,7 @@ window.__ModuleLoader__.load({
650
650
  }
651
651
  //#endregion
652
652
  //#region \0dsh-css:/home/runner/work/dsh-agent-teams/dsh-agent-teams/src/client/ActivityPanel.module.css.mjs
653
- const css = "html{--agent-teams-panel-shift:420px}html[data-agent-teams-panel-open] [data-phase=active]{box-sizing:border-box;padding-right:var(--agent-teams-panel-shift)}.aYQbCq_badge,.aYQbCq_panel{--dsw-alias-line-normal:var(--dsw-static-neutral-bluish-150,#e7e9ee);--dsw-alias-line-strong:color-mix(in srgb, var(--dsw-static-neutral-bluish-200,#e1e5ee) 50%, var(--dsw-static-neutral-bluish-300,#cfd3d6));--dsw-alias-bg-module:var(--dsw-alias-bg-layer-1,#fff);--dsw-alias-bg-fill-neutral:var(--dsw-static-neutral-bluish-100,#eef0f4);--dsw-alias-bg-fill-business:var(--dsw-alias-state-business-primary,#4d6bfe);--dsw-alias-bg-fill-success:var(--dsw-alias-state-success-primary,#12a150);--dsw-alias-bg-fill-warning:var(--dsw-alias-state-warn-primary,#e08700);--dsw-alias-bg-fill-danger:var(--dsw-alias-state-error-primary,#e5484d);--dsw-alias-state-success:var(--dsw-alias-state-success-primary,#12a150);--dsw-alias-state-warning:var(--dsw-alias-state-warn-primary,#e08700);--dsw-alias-state-danger:var(--dsw-alias-state-error-primary,#e5484d);--dsw-alias-label-on-fill:var(--dsw-alias-label-primary-inverted,#fff)}.aYQbCq_badge{box-sizing:border-box;border:1px solid var(--dsw-alias-line-normal);background:color-mix(in srgb, var(--dsw-alias-bg-module-platform) 92%, transparent);backdrop-filter:blur(16px);height:34px;box-shadow:0 8px 28px color-mix(in srgb, var(--dsw-alias-label-primary) 14%, transparent);color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:0 12px;font-size:12px;font-weight:600;line-height:20px;transition:border-color .15s,transform .12s;display:inline-flex;position:absolute;top:64px;right:18px}.aYQbCq_badge:hover{border-color:var(--dsw-alias-line-strong);transform:translateY(-1px)}.aYQbCq_badge:active{transform:translateY(0)scale(.98)}.aYQbCq_badge:focus-visible,.aYQbCq_iconButton:focus-visible,.aYQbCq_memberRow:focus-visible,.aYQbCq_membersToggle:focus-visible,.aYQbCq_sectionToggleTitle:focus-visible,.aYQbCq_dagNode:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.aYQbCq_badgeDot,.aYQbCq_panelDot{background:var(--dsw-alias-label-tertiary);border-radius:50%;width:7px;height:7px}.aYQbCq_badgeDot[data-busy=true],.aYQbCq_panelDot[data-busy=true]{background:var(--dsw-alias-state-business-primary);animation:1.25s ease-in-out infinite aYQbCq_agentTeamsPulse}.aYQbCq_badgeCount,.aYQbCq_memberCount,.aYQbCq_teamStats,.aYQbCq_stageLabel,.aYQbCq_taskId{font-variant-numeric:tabular-nums}.aYQbCq_panel{box-sizing:border-box;border:1px solid color-mix(in srgb, var(--dsw-alias-line-strong) 58%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-module) 95%, transparent);backdrop-filter:blur(20px)saturate(1.08);box-shadow:0 12px 32px color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent), 0 32px 72px color-mix(in srgb, var(--dsw-alias-label-primary) 16%, transparent);will-change:transform;border-radius:16px;flex-direction:column;animation:.16s ease-out aYQbCq_agentTeamsPanelIn;display:flex;position:absolute;top:0;left:0;overflow:hidden}.aYQbCq_panel[data-dragging],.aYQbCq_panel[data-resizing]{user-select:none;box-shadow:0 16px 38px color-mix(in srgb, var(--dsw-alias-label-primary) 14%, transparent), 0 36px 78px color-mix(in srgb, var(--dsw-alias-label-primary) 18%, transparent)}@keyframes aYQbCq_agentTeamsPanelIn{0%{opacity:0}to{opacity:1}}@keyframes aYQbCq_agentTeamsPulse{0%,to{opacity:.42}50%{opacity:1}}.aYQbCq_panelHead{border-bottom:1px solid var(--dsw-alias-line-normal);cursor:grab;touch-action:none;flex:none;justify-content:space-between;align-items:center;min-height:44px;padding:0 14px 0 16px;display:flex}.aYQbCq_panelHead:active,.aYQbCq_panel[data-dragging] .aYQbCq_panelHead{cursor:grabbing}.aYQbCq_panel[data-compact] .aYQbCq_panelHead{cursor:default;touch-action:auto}.aYQbCq_panelTitle{color:var(--dsw-alias-label-primary);align-items:center;gap:8px;font-size:14px;font-weight:600;line-height:20px;display:inline-flex}.aYQbCq_panelControls{flex:none;align-items:center;gap:2px;display:inline-flex}.aYQbCq_iconButton{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;padding:0;transition:background-color .12s,color .12s,transform .12s;display:inline-flex}.aYQbCq_iconButton:hover{background:var(--dsw-alias-bg-fill-neutral);color:var(--dsw-alias-label-primary)}.aYQbCq_iconButton:active{transform:scale(.94)}.aYQbCq_iconButton[data-control=dock][data-mode=docked] svg{transform:scaleX(-1)}.aYQbCq_resizeHandle{z-index:1;touch-action:none;position:absolute}.aYQbCq_resizeHandle[data-resize-edge=left]{cursor:ew-resize;width:8px;top:44px;bottom:8px;left:0}.aYQbCq_resizeHandle[data-resize-edge=bottom]{cursor:ns-resize;height:8px;bottom:0;left:12px;right:12px}.aYQbCq_resizeHandle[data-resize-edge=corner]{cursor:nwse-resize;width:18px;height:18px;bottom:0;right:0}.aYQbCq_resizeHandle[data-resize-edge=corner]:after{border-right:1px solid var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-label-tertiary);content:\"\";opacity:.52;width:7px;height:7px;position:absolute;bottom:4px;right:4px}.aYQbCq_teams{overscroll-behavior:contain;scrollbar-color:color-mix(in srgb, var(--dsw-alias-label-tertiary) 28%, transparent) transparent;scrollbar-width:thin;flex-direction:column;min-height:0;display:flex;overflow-y:auto}.aYQbCq_teams::-webkit-scrollbar{width:6px}.aYQbCq_teams::-webkit-scrollbar-track{background:0 0}.aYQbCq_teams::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 28%, transparent);background-clip:padding-box;border:2px solid #0000;border-radius:999px}.aYQbCq_teams:hover::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 44%, transparent);background-clip:padding-box}.aYQbCq_team{border-bottom:1px solid var(--dsw-alias-line-normal);flex-direction:column;gap:12px;padding:12px 14px 16px;display:flex}.aYQbCq_team:last-child{border-bottom:0}.aYQbCq_teamHead{align-items:center;gap:10px;min-width:0;display:flex}.aYQbCq_teamName{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:600;line-height:18px;overflow:hidden}.aYQbCq_teamStats{color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;gap:8px;font-size:10.5px;line-height:16px;display:inline-flex}.aYQbCq_sectionHead{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.aYQbCq_sectionTitle{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;font-size:11px;font-weight:600;line-height:16px;display:inline-flex}.aYQbCq_sectionHint{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:14px;overflow:hidden}.aYQbCq_delegationSection{min-width:0}.aYQbCq_captainNode{box-sizing:border-box;border:1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 32%, var(--dsw-alias-line-normal));background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 7%, var(--dsw-alias-bg-module));border-radius:10px;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:56px;padding:6px 10px;display:grid}.aYQbCq_captainAvatar,.aYQbCq_memberAvatar{flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.aYQbCq_captainAvatar{width:46px;height:46px}.aYQbCq_leadAvatar,.aYQbCq_memberArt{object-fit:contain;filter:drop-shadow(0 1px 1px #122d4833);background:0 0;border:0;border-radius:0}.aYQbCq_leadAvatar{width:44px;height:44px}.aYQbCq_memberArt{width:40px;height:40px}.aYQbCq_captainInfo,.aYQbCq_memberInfo{flex-direction:column;min-width:0;display:flex}.aYQbCq_captainInfo{gap:2px}.aYQbCq_captainLine,.aYQbCq_memberLine{align-items:center;gap:6px;min-width:0;display:flex}.aYQbCq_captainName,.aYQbCq_memberName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;line-height:18px;overflow:hidden}.aYQbCq_captainRole,.aYQbCq_memberRole{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:14px;overflow:hidden}.aYQbCq_captainSummary,.aYQbCq_memberStatusLine{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;line-height:15px;overflow:hidden}.aYQbCq_captainState,.aYQbCq_memberState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;align-items:center;gap:5px;font-size:10px;font-weight:500;line-height:15px;display:inline-flex}.aYQbCq_captainState[data-busy=true],.aYQbCq_memberState[data-activity=working]{color:var(--dsw-alias-state-business-primary)}.aYQbCq_workGlyph rect{opacity:.5}.aYQbCq_workGlyph[data-active=true] rect{animation:1.1s ease-in-out infinite aYQbCq_agentTeamsDot}@keyframes aYQbCq_agentTeamsDot{0%,to{opacity:.25}50%{opacity:1}}.aYQbCq_progressOverview{flex-direction:column;gap:7px;display:flex}.aYQbCq_progressTitle{color:var(--dsw-alias-label-secondary);font-size:11px;font-weight:600;line-height:16px}.aYQbCq_progressSegments{gap:3px;display:flex}.aYQbCq_progressSegments>span,.aYQbCq_progressEmpty{background:var(--dsw-alias-line-strong);border-radius:2px;flex:1;height:5px}.aYQbCq_progressEmpty{width:100%;display:block}.aYQbCq_progressSegments>span[data-state=running]{background:var(--dsw-alias-state-business-primary)}.aYQbCq_progressSegments>span[data-state=blocked]{background:var(--dsw-alias-state-warning)}.aYQbCq_progressSegments>span[data-state=completed]{background:var(--dsw-alias-state-success)}.aYQbCq_progressSegments>span[data-state=failed]{background:var(--dsw-alias-state-danger)}.aYQbCq_progressSegments>span[data-state=cancelled]{opacity:.55}.aYQbCq_progressLegend{color:var(--dsw-alias-label-tertiary);gap:10px;font-size:9.5px;line-height:14px;display:flex}.aYQbCq_progressLegend>span[data-state=running]{color:var(--dsw-alias-state-business-primary)}.aYQbCq_progressLegend>span[data-state=blocked]{color:var(--dsw-alias-state-warning)}.aYQbCq_progressLegend>span[data-state=completed]{color:var(--dsw-alias-state-success)}.aYQbCq_progressSummary{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 7%, var(--dsw-alias-bg-module));min-width:0;color:var(--dsw-alias-label-secondary);border-radius:8px;align-items:center;gap:6px;padding:5px 8px;font-size:10px;font-weight:600;line-height:15px;display:flex}.aYQbCq_progressSummary[data-state=warning]{background:color-mix(in srgb, var(--dsw-alias-state-warning) 8%, var(--dsw-alias-bg-module))}.aYQbCq_progressSummary[data-state=completed]{background:color-mix(in srgb, var(--dsw-alias-state-success) 8%, var(--dsw-alias-bg-module))}.aYQbCq_progressSummary>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.aYQbCq_progressSummaryDot{background:var(--dsw-alias-state-business-primary);border-radius:50%;flex:none;width:5px;height:5px}.aYQbCq_progressSummary[data-state=warning] .aYQbCq_progressSummaryDot{background:var(--dsw-alias-state-warning)}.aYQbCq_progressSummary[data-state=completed] .aYQbCq_progressSummaryDot{background:var(--dsw-alias-state-success)}.aYQbCq_membersToggle{background:var(--dsw-alias-bg-module-platform);width:100%;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;border:0;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:10.5px;font-weight:600;line-height:15px;display:flex}.aYQbCq_membersToggle:hover{background:var(--dsw-alias-bg-fill-neutral)}.aYQbCq_membersToggle>span{align-items:center;gap:5px;display:inline-flex}.aYQbCq_membersToggle>span:last-child{color:var(--dsw-alias-state-business-primary)}.aYQbCq_chevron{flex:none;transition:transform .14s}.aYQbCq_chevron[data-open=true]{transform:rotate(90deg)}.aYQbCq_delegationTree{flex-direction:column;gap:2px;margin-left:18px;padding:9px 0 0 20px;display:flex;position:relative}.aYQbCq_delegationTree:before{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 48%, var(--dsw-alias-line-normal));content:\"\";width:1px;position:absolute;top:0;bottom:22px;left:0}.aYQbCq_memberBlock{flex-direction:column;min-width:0;padding:3px 0 7px;display:flex;position:relative}.aYQbCq_memberBranch{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 48%, var(--dsw-alias-line-normal));width:20px;height:1px;display:block;position:absolute;top:27px;right:100%}.aYQbCq_memberBranch:before{background:var(--dsw-alias-state-business-primary);content:\"\";border-radius:50%;width:5px;height:5px;position:absolute;top:-2px;right:-1px}.aYQbCq_memberRow{box-sizing:border-box;width:100%;min-width:0;min-height:48px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:8px;padding:4px 6px;transition:background-color .12s,transform .12s;display:grid}.aYQbCq_memberRow:hover,.aYQbCq_memberRow[data-activity=working]{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 6%, var(--dsw-alias-bg-module))}.aYQbCq_memberRow:active{transform:scale(.995)}.aYQbCq_memberAvatar{width:42px;height:42px}.aYQbCq_memberAvatar[data-unread=true]:after{box-sizing:border-box;border:1px solid var(--dsw-alias-bg-module);background:var(--dsw-alias-state-business-primary);content:\"\";border-radius:50%;width:6px;height:6px;animation:1.8s ease-in-out infinite aYQbCq_agentTeamsUnreadPulse;position:absolute;top:0;right:-1px}@keyframes aYQbCq_agentTeamsUnreadPulse{0%,to{opacity:.78;transform:scale(.92)}50%{opacity:1;transform:scale(1.16)}}.aYQbCq_memberInitial{background:var(--dsw-alias-bg-fill-business);width:34px;height:34px;color:var(--dsw-alias-label-on-fill);border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:600;line-height:20px;display:inline-flex}.aYQbCq_stateArt{box-sizing:border-box;object-fit:contain;width:22px;height:22px;filter:drop-shadow(0 0 1px var(--dsw-alias-bg-module)) drop-shadow(0 1px 1px #122d483d);background:0 0;border:0;border-radius:0;position:absolute;bottom:-3px;right:-5px}.aYQbCq_stateArt[data-activity=working]{animation:2.4s ease-in-out infinite aYQbCq_agentTeamsFloat}.aYQbCq_stateArt[data-activity=idle]{animation:4.2s ease-in-out infinite aYQbCq_agentTeamsBreathe}.aYQbCq_stateArt[data-activity=unknown]{animation:2.8s ease-in-out infinite aYQbCq_agentTeamsThink}@keyframes aYQbCq_agentTeamsFloat{0%,to{transform:translateY(0)rotate(-4deg)}50%{transform:translateY(-2px)rotate(4deg)}}@keyframes aYQbCq_agentTeamsBreathe{0%,to{opacity:.82;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes aYQbCq_agentTeamsThink{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}.aYQbCq_memberState{margin-left:auto}.aYQbCq_memberCount{color:var(--dsw-alias-label-tertiary);font-size:10.5px;line-height:16px}.aYQbCq_assignmentLine{align-items:center;gap:7px;min-width:0;padding:0 6px 0 60px;display:flex}.aYQbCq_assignmentLabel{color:var(--dsw-alias-label-tertiary);flex:none;font-size:9.5px;line-height:14px}.aYQbCq_assignmentTasks{flex-wrap:wrap;flex:1;gap:4px;min-width:0;display:flex}.aYQbCq_assignmentChip{background:var(--dsw-alias-bg-fill-neutral);min-height:16px;color:var(--dsw-alias-label-secondary);border-radius:4px;align-items:center;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;font-weight:600;line-height:14px;display:inline-flex}.aYQbCq_assignmentChip[data-state=running]{background:var(--dsw-alias-bg-fill-business);color:var(--dsw-alias-label-on-fill)}.aYQbCq_assignmentChip[data-state=completed]{background:var(--dsw-alias-bg-fill-success);color:var(--dsw-alias-label-on-fill)}.aYQbCq_assignmentChip[data-state=blocked]{background:var(--dsw-alias-bg-fill-warning);color:var(--dsw-alias-label-on-fill)}.aYQbCq_assignmentChip[data-state=failed]{background:var(--dsw-alias-bg-fill-danger);color:var(--dsw-alias-label-on-fill)}.aYQbCq_assignmentChip[data-state=cancelled]{color:var(--dsw-alias-label-tertiary);text-decoration:line-through}.aYQbCq_unreadPill{color:var(--dsw-alias-state-business-primary);white-space:nowrap;flex:none;font-size:9.5px;font-weight:600;line-height:14px}.aYQbCq_taskEmpty{color:var(--dsw-alias-label-tertiary);font-size:9.5px;line-height:14px}.aYQbCq_dependencySection{border-top:1px solid var(--dsw-alias-line-normal);flex-direction:column;gap:7px;min-width:0;padding-top:10px;display:flex}.aYQbCq_sectionToggleTitle{color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:11px;font-weight:600;line-height:16px;display:inline-flex}.aYQbCq_dagViewport{scrollbar-width:thin;min-width:0;padding:2px 0 4px;overflow-x:auto}.aYQbCq_dagCanvas{min-width:100%;position:relative}.aYQbCq_dagCanvas[data-layout=parallel]{flex-wrap:wrap;gap:8px;display:flex}.aYQbCq_dagCanvas[data-layout=parallel] .aYQbCq_dagNode{flex:92px;min-width:92px;position:relative}.aYQbCq_dagEdges{pointer-events:none;position:absolute;inset:0;overflow:visible}.aYQbCq_dagEdges path{fill:none;stroke:var(--dsw-alias-line-strong);stroke-width:1px;transition:opacity .14s,stroke .14s,stroke-width .14s}.aYQbCq_dagEdges path[data-active=true]{stroke:var(--dsw-alias-state-business-primary);stroke-width:1.6px}.aYQbCq_dagEdges path[data-dimmed=true]{opacity:.24}.aYQbCq_dagNode{box-sizing:border-box;border:1px solid var(--dsw-alias-line-normal);background:var(--dsw-alias-bg-module);color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;border-radius:6px;flex-direction:column;justify-content:center;gap:1px;padding:0 6px;transition:border-color .14s,background-color .14s,opacity .14s;display:flex;position:absolute}.aYQbCq_dagNode:hover,.aYQbCq_dagNode[data-focused=true]{border-color:var(--dsw-alias-state-business-primary);background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 6%, var(--dsw-alias-bg-module))}.aYQbCq_dagNode[data-dimmed=true]{opacity:.3}.aYQbCq_dagNode[data-state=running][data-dimmed=true]{opacity:.58}.aYQbCq_dagNode[data-state=completed]{border-color:color-mix(in srgb, var(--dsw-alias-state-success) 48%, var(--dsw-alias-line-normal))}.aYQbCq_dagNode[data-state=blocked]{border-color:color-mix(in srgb, var(--dsw-alias-state-warning) 52%, var(--dsw-alias-line-normal))}.aYQbCq_dagNode[data-state=failed]{border-color:color-mix(in srgb, var(--dsw-alias-state-danger) 56%, var(--dsw-alias-line-normal))}.aYQbCq_dagNodeHead{color:var(--dsw-alias-label-primary);align-items:center;gap:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9.5px;font-weight:700;display:flex}.aYQbCq_dagNodeDot{background:var(--dsw-alias-line-strong);border-radius:1.5px;flex:none;width:5px;height:5px}.aYQbCq_dagNode[data-state=running] .aYQbCq_dagNodeDot{background:var(--dsw-alias-state-business-primary)}.aYQbCq_dagNode[data-state=running] .aYQbCq_dagNodeHead{padding-right:12px}.aYQbCq_dagRunningState{width:9px;height:9px;color:var(--dsw-alias-state-business-primary);pointer-events:none;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:4px;right:5px}.aYQbCq_dagRunningState .aYQbCq_workGlyph{width:9px;height:9px}.aYQbCq_dagNode[data-state=blocked] .aYQbCq_dagNodeDot{background:var(--dsw-alias-state-warning)}.aYQbCq_dagNode[data-state=completed] .aYQbCq_dagNodeDot{background:var(--dsw-alias-state-success)}.aYQbCq_dagNode[data-state=failed] .aYQbCq_dagNodeDot{background:var(--dsw-alias-state-danger)}.aYQbCq_dagNodeLabel{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:8.5px;line-height:11px;overflow:hidden}.aYQbCq_taskDetail{border:1px solid var(--dsw-alias-line-normal);background:var(--dsw-alias-bg-module-platform);border-radius:9px;flex-direction:column;gap:3px;min-width:0;padding:7px 9px;display:flex}.aYQbCq_taskDetailHead{align-items:center;gap:6px;min-width:0;display:flex}.aYQbCq_taskDetailId{color:var(--dsw-alias-state-business-primary);flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;font-weight:700}.aYQbCq_taskDetailSubject{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;line-height:16px;overflow:hidden}.aYQbCq_taskDetailBadge{background:var(--dsw-alias-bg-fill-neutral);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:0 5px;font-size:8.5px;font-weight:600;line-height:14px}.aYQbCq_taskDetailBadge[data-state=running]{background:var(--dsw-alias-bg-fill-business);color:var(--dsw-alias-label-on-fill)}.aYQbCq_taskDetailBadge[data-state=blocked]{background:var(--dsw-alias-bg-fill-warning);color:var(--dsw-alias-label-on-fill)}.aYQbCq_taskDetailBadge[data-state=completed]{background:var(--dsw-alias-bg-fill-success);color:var(--dsw-alias-label-on-fill)}.aYQbCq_taskDetailBadge[data-state=failed]{background:var(--dsw-alias-bg-fill-danger);color:var(--dsw-alias-label-on-fill)}.aYQbCq_taskDetailLine,.aYQbCq_taskDetailMeta{color:var(--dsw-alias-label-secondary);font-size:9.5px;line-height:14px}.aYQbCq_taskDetailMeta{color:var(--dsw-alias-label-tertiary)}.aYQbCq_emptyHint{color:var(--dsw-alias-label-tertiary);padding:10px 12px;font-size:11px;line-height:16px}.aYQbCq_historicPill{background:var(--dsw-alias-bg-fill-neutral);color:var(--dsw-alias-label-tertiary);border-radius:4px;flex:none;margin-left:auto;padding:1px 7px;font-size:9.5px;font-weight:600;line-height:15px}.aYQbCq_members{flex-direction:column;gap:3px;display:flex}.aYQbCq_archivedWrap:before{color:var(--dsw-alias-label-tertiary);content:\"已结束 · 历史归档\";padding:5px 14px 0;font-size:9.5px;font-weight:600;line-height:14px;display:block}@media (prefers-reduced-motion:reduce){.aYQbCq_panel,.aYQbCq_badge,.aYQbCq_badgeDot,.aYQbCq_panelDot,.aYQbCq_workGlyph rect,.aYQbCq_stateArt,.aYQbCq_memberAvatar[data-unread=true]:after{transition:none;animation:none}}@media (width<=960px){html[data-agent-teams-panel-open] [data-phase=active]{padding-right:0}}@media (width<=640px){.aYQbCq_badge{top:56px;right:10px}.aYQbCq_teamStats span[data-stat=messages]{display:none}.aYQbCq_captainNode{grid-template-columns:48px minmax(0,1fr)}.aYQbCq_captainState{display:none}.aYQbCq_delegationTree{margin-left:12px;padding-left:15px}.aYQbCq_memberBranch{width:15px}.aYQbCq_assignmentLine{padding-left:53px}}";
653
+ const css = "html{--agent-teams-panel-shift:420px}html[data-agent-teams-panel-open] [data-phase=active]{box-sizing:border-box;padding-right:var(--agent-teams-panel-shift)}.aYQbCq_badge,.aYQbCq_panel{--dsw-alias-line-normal:var(--dsw-static-neutral-bluish-150,#e7e9ee);--dsw-alias-line-strong:color-mix(in srgb, var(--dsw-static-neutral-bluish-200,#e1e5ee) 50%, var(--dsw-static-neutral-bluish-300,#cfd3d6));--dsw-alias-bg-module:var(--dsw-alias-bg-layer-1,#fff);--dsw-alias-bg-fill-neutral:var(--dsw-static-neutral-bluish-100,#eef0f4);--dsw-alias-bg-fill-business:var(--dsw-alias-state-business-primary,#4d6bfe);--dsw-alias-bg-fill-success:var(--dsw-alias-state-success-primary,#12a150);--dsw-alias-bg-fill-warning:var(--dsw-alias-state-warn-primary,#e08700);--dsw-alias-bg-fill-danger:var(--dsw-alias-state-error-primary,#e5484d);--dsw-alias-state-success:var(--dsw-alias-state-success-primary,#12a150);--dsw-alias-state-warning:var(--dsw-alias-state-warn-primary,#e08700);--dsw-alias-state-danger:var(--dsw-alias-state-error-primary,#e5484d);--dsw-alias-label-on-fill:var(--dsw-alias-label-primary-inverted,#fff)}.aYQbCq_badge{box-sizing:border-box;border:1px solid var(--dsw-alias-line-normal);background:color-mix(in srgb, var(--dsw-alias-bg-module-platform) 92%, transparent);backdrop-filter:blur(16px);height:34px;box-shadow:0 8px 28px color-mix(in srgb, var(--dsw-alias-label-primary) 14%, transparent);color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:0 12px;font-size:12px;font-weight:600;line-height:20px;transition:border-color .15s,transform .12s;display:inline-flex;position:absolute;top:64px;right:18px}.aYQbCq_badge:hover{border-color:var(--dsw-alias-line-strong);transform:translateY(-1px)}.aYQbCq_badge:active{transform:translateY(0)scale(.98)}.aYQbCq_badge:focus-visible,.aYQbCq_iconButton:focus-visible,.aYQbCq_memberRow:focus-visible,.aYQbCq_membersToggle:focus-visible,.aYQbCq_sectionToggleTitle:focus-visible,.aYQbCq_dagNode:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.aYQbCq_badgeDot,.aYQbCq_panelDot{background:var(--dsw-alias-label-tertiary);border-radius:50%;width:7px;height:7px}.aYQbCq_badgeDot[data-busy=true],.aYQbCq_panelDot[data-busy=true]{background:var(--dsw-alias-state-business-primary);animation:1.25s ease-in-out infinite aYQbCq_agentTeamsPulse}.aYQbCq_badgeCount,.aYQbCq_memberCount,.aYQbCq_teamStats,.aYQbCq_stageLabel,.aYQbCq_taskId{font-variant-numeric:tabular-nums}.aYQbCq_panel{box-sizing:border-box;border:1px solid color-mix(in srgb, var(--dsw-alias-line-strong) 58%, transparent);background:color-mix(in srgb, var(--dsw-alias-bg-module) 95%, transparent);backdrop-filter:blur(20px)saturate(1.08);box-shadow:0 12px 32px color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent), 0 32px 72px color-mix(in srgb, var(--dsw-alias-label-primary) 16%, transparent);will-change:transform;border-radius:16px;flex-direction:column;animation:.16s ease-out aYQbCq_agentTeamsPanelIn;display:flex;position:absolute;top:0;left:0;overflow:hidden}.aYQbCq_panel[data-dragging],.aYQbCq_panel[data-resizing]{user-select:none;box-shadow:0 16px 38px color-mix(in srgb, var(--dsw-alias-label-primary) 14%, transparent), 0 36px 78px color-mix(in srgb, var(--dsw-alias-label-primary) 18%, transparent)}@keyframes aYQbCq_agentTeamsPanelIn{0%{opacity:0}to{opacity:1}}@keyframes aYQbCq_agentTeamsPulse{0%,to{opacity:.42}50%{opacity:1}}.aYQbCq_panelHead{border-bottom:1px solid var(--dsw-alias-line-normal);cursor:grab;touch-action:none;flex:none;justify-content:space-between;align-items:center;min-height:44px;padding:0 14px 0 16px;display:flex}.aYQbCq_panelHead:active,.aYQbCq_panel[data-dragging] .aYQbCq_panelHead{cursor:grabbing}.aYQbCq_panel[data-compact] .aYQbCq_panelHead{cursor:default;touch-action:auto}.aYQbCq_panelTitle{color:var(--dsw-alias-label-primary);align-items:center;gap:8px;font-size:14px;font-weight:600;line-height:20px;display:inline-flex}.aYQbCq_panelControls{flex:none;align-items:center;gap:2px;display:inline-flex}.aYQbCq_iconButton{width:28px;height:28px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;padding:0;transition:background-color .12s,color .12s,transform .12s;display:inline-flex}.aYQbCq_iconButton:hover{background:var(--dsw-alias-bg-fill-neutral);color:var(--dsw-alias-label-primary)}.aYQbCq_iconButton:active{transform:scale(.94)}.aYQbCq_iconButton[data-control=dock][data-mode=docked] svg{transform:scaleX(-1)}.aYQbCq_resizeHandle{z-index:1;touch-action:none;position:absolute}.aYQbCq_resizeHandle[data-resize-edge=left]{cursor:ew-resize;width:8px;top:44px;bottom:8px;left:0}.aYQbCq_resizeHandle[data-resize-edge=bottom]{cursor:ns-resize;height:8px;bottom:0;left:12px;right:12px}.aYQbCq_resizeHandle[data-resize-edge=corner]{cursor:nwse-resize;width:18px;height:18px;bottom:0;right:0}.aYQbCq_resizeHandle[data-resize-edge=corner]:after{border-right:1px solid var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-label-tertiary);content:\"\";opacity:.52;width:7px;height:7px;position:absolute;bottom:4px;right:4px}.aYQbCq_teams{overscroll-behavior:contain;scrollbar-color:color-mix(in srgb, var(--dsw-alias-label-tertiary) 28%, transparent) transparent;scrollbar-width:thin;flex-direction:column;min-height:0;display:flex;overflow-y:auto}.aYQbCq_teams::-webkit-scrollbar{width:6px}.aYQbCq_teams::-webkit-scrollbar-track{background:0 0}.aYQbCq_teams::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 28%, transparent);background-clip:padding-box;border:2px solid #0000;border-radius:999px}.aYQbCq_teams:hover::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--dsw-alias-label-tertiary) 44%, transparent);background-clip:padding-box}.aYQbCq_team{border-bottom:1px solid var(--dsw-alias-line-normal);flex-direction:column;gap:12px;padding:12px 14px 16px;display:flex}.aYQbCq_team:last-child{border-bottom:0}.aYQbCq_teamHead{align-items:center;gap:10px;min-width:0;display:flex}.aYQbCq_teamName{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;font-weight:600;line-height:18px;overflow:hidden}.aYQbCq_teamStats{color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;gap:8px;font-size:10.5px;line-height:16px;display:inline-flex}.aYQbCq_sectionHead{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.aYQbCq_sectionTitle{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;font-size:11px;font-weight:600;line-height:16px;display:inline-flex}.aYQbCq_sectionHint{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:14px;overflow:hidden}.aYQbCq_delegationSection{min-width:0}.aYQbCq_captainNode{box-sizing:border-box;border:1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 32%, var(--dsw-alias-line-normal));background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 7%, var(--dsw-alias-bg-module));border-radius:10px;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:56px;padding:6px 10px;display:grid}.aYQbCq_captainAvatar,.aYQbCq_memberAvatar{flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.aYQbCq_captainAvatar{width:46px;height:46px}.aYQbCq_leadAvatar,.aYQbCq_memberArt{object-fit:contain;filter:drop-shadow(0 1px 1px #122d4833);background:0 0;border:0;border-radius:0}.aYQbCq_leadAvatar{width:44px;height:44px}.aYQbCq_memberArt{width:40px;height:40px}.aYQbCq_captainInfo,.aYQbCq_memberInfo{flex-direction:column;min-width:0;display:flex}.aYQbCq_captainInfo{gap:2px}.aYQbCq_captainLine,.aYQbCq_memberLine{align-items:center;gap:6px;min-width:0;display:flex}.aYQbCq_captainName,.aYQbCq_memberName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;line-height:18px;overflow:hidden}.aYQbCq_captainRole,.aYQbCq_memberRole{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:10px;line-height:14px;overflow:hidden}.aYQbCq_captainSummary,.aYQbCq_memberStatusLine{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;line-height:15px;overflow:hidden}.aYQbCq_captainState,.aYQbCq_memberState{color:var(--dsw-alias-label-tertiary);white-space:nowrap;flex:none;align-items:center;gap:5px;font-size:10px;font-weight:500;line-height:15px;display:inline-flex}.aYQbCq_captainState[data-busy=true],.aYQbCq_memberState[data-activity=working]{color:var(--dsw-alias-state-business-primary)}.aYQbCq_workGlyph rect{opacity:.5}.aYQbCq_workGlyph[data-active=true] rect{animation:1.1s ease-in-out infinite aYQbCq_agentTeamsDot}@keyframes aYQbCq_agentTeamsDot{0%,to{opacity:.25}50%{opacity:1}}.aYQbCq_progressOverview{flex-direction:column;gap:7px;display:flex}.aYQbCq_progressTitle{color:var(--dsw-alias-label-secondary);font-size:11px;font-weight:600;line-height:16px}.aYQbCq_progressSegments{gap:3px;display:flex}.aYQbCq_progressSegments>span,.aYQbCq_progressEmpty{background:var(--dsw-alias-line-strong);border-radius:2px;flex:1;height:5px}.aYQbCq_progressEmpty{width:100%;display:block}.aYQbCq_progressSegments>span[data-state=running]{background:var(--dsw-alias-state-business-primary)}.aYQbCq_progressSegments>span[data-state=blocked]{background:var(--dsw-alias-state-warning)}.aYQbCq_progressSegments>span[data-state=completed]{background:var(--dsw-alias-state-success)}.aYQbCq_progressSegments>span[data-state=failed]{background:var(--dsw-alias-state-danger)}.aYQbCq_progressSegments>span[data-state=cancelled]{opacity:.55}.aYQbCq_progressLegend{color:var(--dsw-alias-label-tertiary);gap:10px;font-size:9.5px;line-height:14px;display:flex}.aYQbCq_progressLegend>span[data-state=running]{color:var(--dsw-alias-state-business-primary)}.aYQbCq_progressLegend>span[data-state=blocked]{color:var(--dsw-alias-state-warning)}.aYQbCq_progressLegend>span[data-state=completed]{color:var(--dsw-alias-state-success)}.aYQbCq_progressSummary{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 7%, var(--dsw-alias-bg-module));min-width:0;color:var(--dsw-alias-label-secondary);border-radius:8px;align-items:center;gap:6px;padding:5px 8px;font-size:10px;font-weight:600;line-height:15px;display:flex}.aYQbCq_progressSummary[data-state=warning]{background:color-mix(in srgb, var(--dsw-alias-state-warning) 8%, var(--dsw-alias-bg-module))}.aYQbCq_progressSummary[data-state=completed]{background:color-mix(in srgb, var(--dsw-alias-state-success) 8%, var(--dsw-alias-bg-module))}.aYQbCq_progressSummary>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.aYQbCq_progressSummaryDot{background:var(--dsw-alias-state-business-primary);border-radius:50%;flex:none;width:5px;height:5px}.aYQbCq_progressSummary[data-state=warning] .aYQbCq_progressSummaryDot{background:var(--dsw-alias-state-warning)}.aYQbCq_progressSummary[data-state=completed] .aYQbCq_progressSummaryDot{background:var(--dsw-alias-state-success)}.aYQbCq_membersToggle{background:var(--dsw-alias-bg-module-platform);width:100%;color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;border:0;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:10.5px;font-weight:600;line-height:15px;display:flex}.aYQbCq_membersToggle:hover{background:var(--dsw-alias-bg-fill-neutral)}.aYQbCq_membersToggle>span{align-items:center;gap:5px;display:inline-flex}.aYQbCq_membersToggle>span:last-child{color:var(--dsw-alias-state-business-primary)}.aYQbCq_chevron{flex:none;transition:transform .14s}.aYQbCq_chevron[data-open=true]{transform:rotate(90deg)}.aYQbCq_delegationTree{flex-direction:column;gap:2px;margin-left:18px;padding:9px 0 0 20px;display:flex;position:relative}.aYQbCq_delegationTree:before{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 48%, var(--dsw-alias-line-normal));content:\"\";width:1px;position:absolute;top:0;bottom:22px;left:0}.aYQbCq_memberBlock{flex-direction:column;min-width:0;padding:3px 0 7px;display:flex;position:relative}.aYQbCq_memberBranch{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 48%, var(--dsw-alias-line-normal));width:20px;height:1px;display:block;position:absolute;top:27px;right:100%}.aYQbCq_memberBranch:before{background:var(--dsw-alias-state-business-primary);content:\"\";border-radius:50%;width:5px;height:5px;position:absolute;top:-2px;right:-1px}.aYQbCq_memberRow{box-sizing:border-box;width:100%;min-width:0;min-height:48px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:8px;padding:4px 6px;transition:background-color .12s,transform .12s;display:grid}.aYQbCq_memberRow:hover,.aYQbCq_memberRow[data-activity=working]{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 6%, var(--dsw-alias-bg-module))}.aYQbCq_memberRow:active{transform:scale(.995)}.aYQbCq_memberAvatar{width:42px;height:42px}.aYQbCq_memberAvatar[data-unread=true]:after{box-sizing:border-box;border:1px solid var(--dsw-alias-bg-module);background:var(--dsw-alias-state-business-primary);content:\"\";border-radius:50%;width:6px;height:6px;animation:1.8s ease-in-out infinite aYQbCq_agentTeamsUnreadPulse;position:absolute;top:0;right:-1px}@keyframes aYQbCq_agentTeamsUnreadPulse{0%,to{opacity:.78;transform:scale(.92)}50%{opacity:1;transform:scale(1.16)}}.aYQbCq_memberInitial{background:var(--dsw-alias-bg-fill-business);width:34px;height:34px;color:var(--dsw-alias-label-on-fill);border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:600;line-height:20px;display:inline-flex}.aYQbCq_stateArt{box-sizing:border-box;object-fit:contain;width:22px;height:22px;filter:drop-shadow(0 0 1px var(--dsw-alias-bg-module)) drop-shadow(0 1px 1px #122d483d);background:0 0;border:0;border-radius:0;position:absolute;bottom:-3px;right:-5px}.aYQbCq_stateArt[data-activity=working]{animation:2.4s ease-in-out infinite aYQbCq_agentTeamsFloat}.aYQbCq_stateArt[data-activity=idle]{animation:4.2s ease-in-out infinite aYQbCq_agentTeamsBreathe}.aYQbCq_stateArt[data-activity=unknown]{animation:2.8s ease-in-out infinite aYQbCq_agentTeamsThink}@keyframes aYQbCq_agentTeamsFloat{0%,to{transform:translateY(0)rotate(-4deg)}50%{transform:translateY(-2px)rotate(4deg)}}@keyframes aYQbCq_agentTeamsBreathe{0%,to{opacity:.82;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes aYQbCq_agentTeamsThink{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}.aYQbCq_memberState{margin-left:auto}.aYQbCq_memberCount{color:var(--dsw-alias-label-tertiary);font-size:10.5px;line-height:16px}.aYQbCq_assignmentLine{align-items:center;gap:7px;min-width:0;padding:0 6px 0 60px;display:flex}.aYQbCq_assignmentLabel{color:var(--dsw-alias-label-tertiary);flex:none;font-size:9.5px;line-height:14px}.aYQbCq_assignmentTasks{flex-wrap:wrap;flex:1;gap:4px;min-width:0;display:flex}.aYQbCq_assignmentChip{background:var(--dsw-alias-bg-fill-neutral);min-height:16px;color:var(--dsw-alias-label-secondary);border-radius:4px;align-items:center;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;font-weight:600;line-height:14px;display:inline-flex}.aYQbCq_assignmentChip[data-state=running]{background:var(--dsw-alias-bg-fill-business);color:var(--dsw-alias-label-on-fill)}.aYQbCq_assignmentChip[data-state=completed]{background:var(--dsw-alias-bg-fill-success);color:var(--dsw-alias-label-on-fill)}.aYQbCq_assignmentChip[data-state=blocked]{background:var(--dsw-alias-bg-fill-warning);color:var(--dsw-alias-label-on-fill)}.aYQbCq_assignmentChip[data-state=failed]{background:var(--dsw-alias-bg-fill-danger);color:var(--dsw-alias-label-on-fill)}.aYQbCq_assignmentChip[data-state=cancelled]{color:var(--dsw-alias-label-tertiary);text-decoration:line-through}.aYQbCq_unreadPill{color:var(--dsw-alias-state-business-primary);white-space:nowrap;flex:none;font-size:9.5px;font-weight:600;line-height:14px}.aYQbCq_taskEmpty{color:var(--dsw-alias-label-tertiary);font-size:9.5px;line-height:14px}.aYQbCq_dependencySection{border-top:1px solid var(--dsw-alias-line-normal);flex-direction:column;gap:7px;min-width:0;padding-top:10px;display:flex}.aYQbCq_sectionToggleTitle{color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:11px;font-weight:600;line-height:16px;display:inline-flex}.aYQbCq_dagViewport{scrollbar-width:thin;min-width:0;padding:2px 0 4px;overflow-x:auto}.aYQbCq_dagCanvas{min-width:100%;position:relative}.aYQbCq_dagCanvas[data-layout=parallel]{flex-wrap:wrap;gap:8px;display:flex}.aYQbCq_dagCanvas[data-layout=parallel] .aYQbCq_dagNode{flex:92px;min-width:92px;position:relative}.aYQbCq_dagEdges{pointer-events:none;position:absolute;inset:0;overflow:visible}.aYQbCq_dagEdges path{fill:none;stroke:var(--dsw-alias-line-strong);stroke-width:1px;transition:opacity .14s,stroke .14s,stroke-width .14s}.aYQbCq_dagEdges path[data-active=true]{stroke:var(--dsw-alias-state-business-primary);stroke-width:1.6px}.aYQbCq_dagEdges path[data-dimmed=true]{opacity:.24}.aYQbCq_dagNode{box-sizing:border-box;border:1px solid var(--dsw-alias-line-normal);background:var(--dsw-alias-bg-module);color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;border-radius:6px;flex-direction:column;justify-content:center;gap:1px;padding:0 6px;transition:border-color .14s,background-color .14s,opacity .14s;display:flex;position:absolute}.aYQbCq_dagNode:hover,.aYQbCq_dagNode[data-focused=true]{border-color:var(--dsw-alias-state-business-primary);background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 6%, var(--dsw-alias-bg-module))}.aYQbCq_dagNode[data-dimmed=true]{opacity:.3}.aYQbCq_dagNode[data-state=running][data-dimmed=true]{opacity:.58}.aYQbCq_dagNode[data-state=completed]{border-color:color-mix(in srgb, var(--dsw-alias-state-success) 48%, var(--dsw-alias-line-normal))}.aYQbCq_dagNode[data-state=blocked]{border-color:color-mix(in srgb, var(--dsw-alias-state-warning) 52%, var(--dsw-alias-line-normal))}.aYQbCq_dagNode[data-state=failed]{border-color:color-mix(in srgb, var(--dsw-alias-state-danger) 56%, var(--dsw-alias-line-normal))}.aYQbCq_dagNodeHead{color:var(--dsw-alias-label-primary);align-items:center;gap:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9.5px;font-weight:700;display:flex}.aYQbCq_dagNodeDot{background:var(--dsw-alias-line-strong);border-radius:1.5px;flex:none;width:5px;height:5px}.aYQbCq_dagNode[data-state=running] .aYQbCq_dagNodeDot{background:var(--dsw-alias-state-business-primary)}.aYQbCq_dagNode[data-state=running] .aYQbCq_dagNodeHead{padding-right:12px}.aYQbCq_dagRunningState{width:9px;height:9px;color:var(--dsw-alias-state-business-primary);pointer-events:none;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:4px;right:5px}.aYQbCq_dagRunningState .aYQbCq_workGlyph{width:9px;height:9px}.aYQbCq_dagNode[data-state=blocked] .aYQbCq_dagNodeDot{background:var(--dsw-alias-state-warning)}.aYQbCq_dagNode[data-state=completed] .aYQbCq_dagNodeDot{background:var(--dsw-alias-state-success)}.aYQbCq_dagNode[data-state=failed] .aYQbCq_dagNodeDot{background:var(--dsw-alias-state-danger)}.aYQbCq_dagNodeLabel{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:8.5px;line-height:11px;overflow:hidden}.aYQbCq_taskDetail{border:1px solid var(--dsw-alias-line-normal);background:var(--dsw-alias-bg-module-platform);border-radius:9px;flex-direction:column;gap:3px;min-width:0;padding:7px 9px;display:flex}.aYQbCq_taskDetailHead{align-items:center;gap:6px;min-width:0;display:flex}.aYQbCq_taskDetailId{color:var(--dsw-alias-state-business-primary);flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;font-weight:700}.aYQbCq_taskDetailSubject{min-width:0;color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;line-height:16px;overflow:hidden}.aYQbCq_taskDetailBadge{background:var(--dsw-alias-bg-fill-neutral);color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:0 5px;font-size:8.5px;font-weight:600;line-height:14px}.aYQbCq_taskDetailBadge[data-state=running]{background:var(--dsw-alias-bg-fill-business);color:var(--dsw-alias-label-on-fill)}.aYQbCq_taskDetailBadge[data-state=blocked]{background:var(--dsw-alias-bg-fill-warning);color:var(--dsw-alias-label-on-fill)}.aYQbCq_taskDetailBadge[data-state=completed]{background:var(--dsw-alias-bg-fill-success);color:var(--dsw-alias-label-on-fill)}.aYQbCq_taskDetailBadge[data-state=failed]{background:var(--dsw-alias-bg-fill-danger);color:var(--dsw-alias-label-on-fill)}.aYQbCq_taskDetailLine,.aYQbCq_taskDetailMeta{color:var(--dsw-alias-label-secondary);font-size:9.5px;line-height:14px}.aYQbCq_taskDetailMeta{color:var(--dsw-alias-label-tertiary)}.aYQbCq_emptyHint{color:var(--dsw-alias-label-tertiary);padding:10px 12px;font-size:11px;line-height:16px}.aYQbCq_historicPill{background:var(--dsw-alias-bg-fill-neutral);color:var(--dsw-alias-label-tertiary);border-radius:4px;flex:none;margin-left:auto;padding:1px 7px;font-size:9.5px;font-weight:600;line-height:15px}.aYQbCq_members{flex-direction:column;gap:3px;display:flex}.aYQbCq_archiveLabel{color:var(--dsw-alias-label-tertiary);padding:5px 14px 0;font-size:9.5px;font-weight:600;line-height:14px;display:block}@media (prefers-reduced-motion:reduce){.aYQbCq_panel,.aYQbCq_badge,.aYQbCq_badgeDot,.aYQbCq_panelDot,.aYQbCq_workGlyph rect,.aYQbCq_stateArt,.aYQbCq_memberAvatar[data-unread=true]:after{transition:none;animation:none}}@media (width<=960px){html[data-agent-teams-panel-open] [data-phase=active]{padding-right:0}}@media (width<=640px){.aYQbCq_badge{top:56px;right:10px}.aYQbCq_teamStats span[data-stat=messages]{display:none}.aYQbCq_captainNode{grid-template-columns:48px minmax(0,1fr)}.aYQbCq_captainState{display:none}.aYQbCq_delegationTree{margin-left:12px;padding-left:15px}.aYQbCq_memberBranch{width:15px}.aYQbCq_assignmentLine{padding-left:53px}}";
654
654
  const tagId = "@nanmicoder/dsh-agent-teams/ActivityPanel.module.css";
655
655
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
656
656
  const tag = document.createElement("style");
@@ -667,7 +667,7 @@ window.__ModuleLoader__.load({
667
667
  "agentTeamsPulse": "aYQbCq_agentTeamsPulse",
668
668
  "agentTeamsThink": "aYQbCq_agentTeamsThink",
669
669
  "agentTeamsUnreadPulse": "aYQbCq_agentTeamsUnreadPulse",
670
- "archivedWrap": "aYQbCq_archivedWrap",
670
+ "archiveLabel": "aYQbCq_archiveLabel",
671
671
  "assignmentChip": "aYQbCq_assignmentChip",
672
672
  "assignmentLabel": "aYQbCq_assignmentLabel",
673
673
  "assignmentLine": "aYQbCq_assignmentLine",
@@ -822,15 +822,19 @@ window.__ModuleLoader__.load({
822
822
  /** Badge text follows the raw task status (finer than the 4 visual states):
823
823
  * claimed/pending/failed/cancelled keep their own labels and colors. */
824
824
  const TASK_STATUS_LABEL = {
825
- pending: "待领取",
826
- claimed: "已认领",
827
- in_progress: "进行中",
828
- completed: "已完成",
829
- failed: "失败",
830
- cancelled: "已取消"
825
+ pending: "task.status.pending",
826
+ claimed: "task.status.claimed",
827
+ in_progress: "task.status.inProgress",
828
+ completed: "task.status.completed",
829
+ failed: "task.status.failed",
830
+ cancelled: "task.status.cancelled"
831
831
  };
832
- function taskStatusLabel(status) {
833
- return TASK_STATUS_LABEL[status] ?? status;
832
+ function taskStatusLabel(status, t) {
833
+ const key = TASK_STATUS_LABEL[status];
834
+ return key === void 0 ? status : t(key);
835
+ }
836
+ function formatTaskIds(ids, t) {
837
+ return ids.join(t("format.listSeparator"));
834
838
  }
835
839
  /** Badge/bar coloring key: visual state, widened for terminal statuses. */
836
840
  function taskTone(state, status) {
@@ -880,14 +884,14 @@ window.__ModuleLoader__.load({
880
884
  });
881
885
  }
882
886
  /** Collapsed badge: an always-visible corner pill while any team exists. */
883
- function CollapsedBadge({ count, busy, onClick }) {
887
+ function CollapsedBadge({ count, busy, onClick, t }) {
884
888
  return (0, react_jsx_runtime.jsxs)("button", {
885
889
  type: "button",
886
890
  className: ActivityPanel_module_css_default.badge,
887
891
  "data-agent-teams-collapsed": true,
888
892
  "data-busy": busy,
889
893
  onClick,
890
- "aria-label": `AgentTeams 活动,${count} 个团队`,
894
+ "aria-label": t("activity.badgeAria", { count }),
891
895
  children: [(0, react_jsx_runtime.jsx)("span", {
892
896
  className: ActivityPanel_module_css_default.badgeDot,
893
897
  "data-busy": busy,
@@ -898,62 +902,68 @@ window.__ModuleLoader__.load({
898
902
  })]
899
903
  });
900
904
  }
901
- function memberStateLabel(member, tasks, historic) {
905
+ function memberStateLabel(member, tasks, historic, t) {
902
906
  const owned = tasks.filter((task) => task.assignee === member.name);
903
- if (member.activity === "working") return "工作中";
904
- if (owned.some((task) => task.status === "failed")) return "有失败";
905
- if (owned.some((task) => task.state === "blocked")) return "等待";
906
- if (owned.length > 0 && owned.every((task) => task.status === "completed")) return "已交付";
907
- if (member.status === "removed") return historic ? "已离队" : "已移除";
908
- if (owned.length > 0) return "待执行";
909
- return "待派工";
907
+ if (member.activity === "working") return t("member.state.working");
908
+ if (owned.some((task) => task.status === "failed")) return t("member.state.failed");
909
+ if (owned.some((task) => task.state === "blocked")) return t("member.state.waiting");
910
+ if (owned.length > 0 && owned.every((task) => task.status === "completed")) return t("member.state.delivered");
911
+ if (member.status === "removed") return t(historic ? "member.state.left" : "member.state.removed");
912
+ if (owned.length > 0) return t("member.state.pending");
913
+ return t("member.state.unassigned");
910
914
  }
911
- function memberStatusText(member, tasks) {
915
+ function memberStatusText(member, tasks, t) {
912
916
  const owned = tasks.filter((task) => task.assignee === member.name);
913
917
  const current = owned.find((task) => task.id === member.currentTask);
914
918
  const blocked = owned.find((task) => task.state === "blocked");
915
- if (member.activity === "working" && current !== void 0) return `正在执行 ${current.id}`;
916
- if (member.activity === "working") return "正在处理已派任务";
919
+ if (member.activity === "working" && current !== void 0) return t("member.status.executing", { taskId: current.id });
920
+ if (member.activity === "working") return t("member.status.working");
917
921
  if (blocked !== void 0) {
918
922
  const dependency = tasks.find((task) => blocked.dependencies.includes(task.id) && task.state !== "completed");
919
- if (dependency !== void 0) return `等待 ${dependency.id} · ${dependency.assignee || "待认领"}`;
920
- return "等待前置任务";
923
+ if (dependency !== void 0) return t("member.status.waitingOn", {
924
+ taskId: dependency.id,
925
+ assignee: dependency.assignee || t("task.assignee.unclaimed")
926
+ });
927
+ return t("member.status.waitingPrerequisite");
921
928
  }
922
- if (member.total === 0) return "等待队长派工";
923
- if (member.done === member.total) return "任务已交付";
924
- return member.activity === "idle" ? "待继续执行" : "状态未知";
929
+ if (member.total === 0) return t("member.status.waitingAssignment");
930
+ if (member.done === member.total) return t("member.status.delivered");
931
+ return t(member.activity === "idle" ? "member.status.idle" : "member.status.unknown");
925
932
  }
926
933
  function compactTaskLabel(subject) {
927
934
  const withoutVerb = subject.replace(/^开发\s*/u, "").replace(/^\d+[-_.、\s]*/u, "");
928
935
  const head = withoutVerb.split(/[((·::]/u)[0]?.trim() ?? withoutVerb;
929
936
  return head.length > 18 ? `${head.slice(0, 17)}…` : head;
930
937
  }
931
- function taskSummary(team) {
938
+ function taskSummary(team, t) {
932
939
  const completed = team.tasks.filter((task) => task.status === "completed");
933
940
  const running = team.tasks.filter((task) => task.state === "running");
934
941
  const blocked = team.tasks.filter((task) => task.state === "blocked");
935
942
  const ready = team.tasks.filter((task) => task.state === "open" && task.status !== "completed");
936
- if (team.tasks.length === 0) return "等待队长拆解任务";
937
- if (completed.length === team.tasks.length) return `全部 ${completed.length} 项任务已交付`;
938
- if (blocked.length > 0 && running.length > 0) return `${blocked.slice(0, 3).map((task) => task.id).join("、")}${blocked.length > 3 ? ` 等 ${blocked.length} 项` : ""} 等待前置,其余已开工`;
939
- if (running.length > 0) return `${running.map((task) => task.id).join("、")} 正在执行`;
940
- if (ready.length > 0) return `${ready.map((task) => task.id).join("")} 已就绪待开工`;
941
- if (blocked.length > 0) return `${blocked.map((task) => task.id).join("、")} 等待前置`;
942
- return "等待下一轮调度";
943
+ if (team.tasks.length === 0) return t("task.summary.waitingBreakdown");
944
+ if (completed.length === team.tasks.length) return t("task.summary.allDelivered", { count: completed.length });
945
+ if (blocked.length > 0 && running.length > 0) return t("task.summary.blockedAndRunning", {
946
+ tasks: formatTaskIds(blocked.slice(0, 3).map((task) => task.id), t),
947
+ more: blocked.length > 3 ? t("task.summary.more", { count: blocked.length - 3 }) : ""
948
+ });
949
+ if (running.length > 0) return t("task.summary.running", { tasks: formatTaskIds(running.map((task) => task.id), t) });
950
+ if (ready.length > 0) return t("task.summary.ready", { tasks: formatTaskIds(ready.map((task) => task.id), t) });
951
+ if (blocked.length > 0) return t("task.summary.blocked", { tasks: formatTaskIds(blocked.map((task) => task.id), t) });
952
+ return t("task.summary.waitingSchedule");
943
953
  }
944
- function ProgressOverview({ team }) {
954
+ function ProgressOverview({ team, t }) {
945
955
  const running = team.tasks.filter((task) => task.state === "running").length;
946
956
  const blocked = team.tasks.filter((task) => task.state === "blocked").length;
947
957
  const completed = team.tasks.filter((task) => task.status === "completed").length;
948
958
  const summaryTone = blocked > 0 ? "warning" : completed === team.tasks.length && team.tasks.length > 0 ? "completed" : "running";
949
959
  return (0, react_jsx_runtime.jsxs)("section", {
950
960
  className: ActivityPanel_module_css_default.progressOverview,
951
- "aria-label": "团队总进度",
961
+ "aria-label": t("progress.aria"),
952
962
  "data-progress-summary": true,
953
963
  children: [
954
964
  (0, react_jsx_runtime.jsx)("span", {
955
965
  className: ActivityPanel_module_css_default.progressTitle,
956
- children: "总进度"
966
+ children: t("progress.title")
957
967
  }),
958
968
  team.tasks.length > 0 ? (0, react_jsx_runtime.jsx)("span", {
959
969
  className: ActivityPanel_module_css_default.progressSegments,
@@ -963,29 +973,29 @@ window.__ModuleLoader__.load({
963
973
  (0, react_jsx_runtime.jsxs)("span", {
964
974
  className: ActivityPanel_module_css_default.progressLegend,
965
975
  children: [
966
- (0, react_jsx_runtime.jsxs)("span", {
976
+ (0, react_jsx_runtime.jsx)("span", {
967
977
  "data-state": "running",
968
- children: ["■ 进行中 ", running]
978
+ children: t("progress.running", { count: running })
969
979
  }),
970
- (0, react_jsx_runtime.jsxs)("span", {
980
+ (0, react_jsx_runtime.jsx)("span", {
971
981
  "data-state": "blocked",
972
- children: ["■ 等待依赖 ", blocked]
982
+ children: t("progress.blocked", { count: blocked })
973
983
  }),
974
- (0, react_jsx_runtime.jsxs)("span", {
984
+ (0, react_jsx_runtime.jsx)("span", {
975
985
  "data-state": "completed",
976
- children: ["■ 已交付 ", completed]
986
+ children: t("progress.delivered", { count: completed })
977
987
  })
978
988
  ]
979
989
  }),
980
990
  (0, react_jsx_runtime.jsxs)("span", {
981
991
  className: ActivityPanel_module_css_default.progressSummary,
982
992
  "data-state": summaryTone,
983
- children: [(0, react_jsx_runtime.jsx)("span", { className: ActivityPanel_module_css_default.progressSummaryDot }), (0, react_jsx_runtime.jsx)("span", { children: taskSummary(team) })]
993
+ children: [(0, react_jsx_runtime.jsx)("span", { className: ActivityPanel_module_css_default.progressSummaryDot }), (0, react_jsx_runtime.jsx)("span", { children: taskSummary(team, t) })]
984
994
  })
985
995
  ]
986
996
  });
987
997
  }
988
- function DependencyMap({ tasks }) {
998
+ function DependencyMap({ tasks, t }) {
989
999
  const [open, setOpen] = (0, react.useState)(true);
990
1000
  const [hoverTaskId, setHoverTaskId] = (0, react.useState)(null);
991
1001
  const [keyboardTaskId, setKeyboardTaskId] = (0, react.useState)(null);
@@ -1028,7 +1038,7 @@ window.__ModuleLoader__.load({
1028
1038
  const dependents = tasks.filter((task) => task.dependencies.includes(detailTask.id));
1029
1039
  return (0, react_jsx_runtime.jsxs)("section", {
1030
1040
  className: ActivityPanel_module_css_default.dependencySection,
1031
- "aria-label": "任务依赖链",
1041
+ "aria-label": t("dependency.aria"),
1032
1042
  "data-dependency-map": true,
1033
1043
  children: [(0, react_jsx_runtime.jsxs)("header", {
1034
1044
  className: ActivityPanel_module_css_default.sectionHead,
@@ -1043,11 +1053,11 @@ window.__ModuleLoader__.load({
1043
1053
  (0, react_jsx_runtime.jsx)(Chevron, { open }),
1044
1054
  (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconBranchOutline16, {}),
1045
1055
  " ",
1046
- parallel ? "并行任务" : "任务依赖"
1056
+ t(parallel ? "dependency.parallel" : "dependency.title")
1047
1057
  ]
1048
1058
  }), (0, react_jsx_runtime.jsx)("span", {
1049
1059
  className: ActivityPanel_module_css_default.sectionHint,
1050
- children: pinnedTaskId === null ? parallel ? "无前后依赖 · 点击查看详情" : "悬停高亮依赖链 · 点击固定" : `${pinnedTaskId} 已固定 · Esc 取消`
1060
+ children: pinnedTaskId === null ? t(parallel ? "dependency.hint.parallel" : "dependency.hint.chain") : t("dependency.hint.pinned", { taskId: pinnedTaskId })
1051
1061
  })]
1052
1062
  }), open && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)("div", {
1053
1063
  className: ActivityPanel_module_css_default.dagViewport,
@@ -1112,7 +1122,7 @@ window.__ModuleLoader__.load({
1112
1122
  }),
1113
1123
  task.state === "running" && (0, react_jsx_runtime.jsx)("span", {
1114
1124
  className: ActivityPanel_module_css_default.dagRunningState,
1115
- "aria-label": "运行中",
1125
+ "aria-label": t("task.runningAria"),
1116
1126
  children: (0, react_jsx_runtime.jsx)(WorkGlyph, { active: true })
1117
1127
  })
1118
1128
  ]
@@ -1137,27 +1147,27 @@ window.__ModuleLoader__.load({
1137
1147
  (0, react_jsx_runtime.jsx)("span", {
1138
1148
  className: ActivityPanel_module_css_default.taskDetailBadge,
1139
1149
  "data-state": taskTone(detailTask.state, detailTask.status),
1140
- children: taskStatusLabel(detailTask.status)
1150
+ children: taskStatusLabel(detailTask.status, t)
1141
1151
  })
1142
1152
  ]
1143
1153
  }),
1144
1154
  (0, react_jsx_runtime.jsxs)("span", {
1145
1155
  className: ActivityPanel_module_css_default.taskDetailLine,
1146
1156
  children: [
1147
- detailTask.assignee || "待认领",
1157
+ detailTask.assignee || t("task.assignee.unclaimed"),
1148
1158
  " · ",
1149
- detailTask.status === "completed" ? "已完成并交付" : detailTask.dependencies.length === 0 ? "无前置,可立即开工" : waitingOn.length === 0 ? "前置已就绪,可开工" : `等待 ${waitingOn.join("、")}`
1159
+ detailTask.status === "completed" ? t("task.detail.completed") : detailTask.dependencies.length === 0 ? t("task.detail.noPrerequisite") : waitingOn.length === 0 ? t("task.detail.ready") : t("task.detail.waitingOn", { tasks: formatTaskIds(waitingOn, t) })
1150
1160
  ]
1151
1161
  }),
1152
1162
  (0, react_jsx_runtime.jsx)("span", {
1153
1163
  className: ActivityPanel_module_css_default.taskDetailMeta,
1154
- children: dependents.length === 0 ? "无下游任务" : `完成后解锁 ${dependents.map((task) => task.id).join("、")}`
1164
+ children: dependents.length === 0 ? t("task.detail.noDownstream") : t("task.detail.unlocks", { tasks: formatTaskIds(dependents.map((task) => task.id), t) })
1155
1165
  })
1156
1166
  ]
1157
1167
  })] })]
1158
1168
  });
1159
1169
  }
1160
- function TeamSection({ team, onNavigate, historic = false }) {
1170
+ function TeamSection({ team, onNavigate, t, historic = false }) {
1161
1171
  const [membersOpen, setMembersOpen] = (0, react.useState)(true);
1162
1172
  const busyCount = team.members.filter((member) => member.activity === "working").length;
1163
1173
  const assignedCount = team.tasks.filter((task) => task.assignee !== "").length;
@@ -1177,27 +1187,25 @@ window.__ModuleLoader__.load({
1177
1187
  }),
1178
1188
  historic && (0, react_jsx_runtime.jsx)("span", {
1179
1189
  className: ActivityPanel_module_css_default.historicPill,
1180
- children: "已结束"
1190
+ children: t("team.ended")
1181
1191
  }),
1182
1192
  (0, react_jsx_runtime.jsxs)("span", {
1183
1193
  className: ActivityPanel_module_css_default.teamStats,
1184
1194
  children: [
1185
- (0, react_jsx_runtime.jsxs)("span", {
1195
+ (0, react_jsx_runtime.jsx)("span", {
1186
1196
  "data-stat": "members",
1187
- children: [team.members.length, " 成员"]
1197
+ children: t("team.stats.members", { count: team.members.length })
1188
1198
  }),
1189
- (0, react_jsx_runtime.jsxs)("span", {
1199
+ (0, react_jsx_runtime.jsx)("span", {
1190
1200
  "data-stat": "tasks",
1191
- children: [
1192
- completedCount,
1193
- "/",
1194
- team.tasks.length,
1195
- " 完成"
1196
- ]
1201
+ children: t("team.stats.completed", {
1202
+ completed: completedCount,
1203
+ total: team.tasks.length
1204
+ })
1197
1205
  }),
1198
- (0, react_jsx_runtime.jsxs)("span", {
1206
+ (0, react_jsx_runtime.jsx)("span", {
1199
1207
  "data-stat": "messages",
1200
- children: [team.messageCount, " 消息"]
1208
+ children: t("team.stats.messages", { count: team.messageCount })
1201
1209
  })
1202
1210
  ]
1203
1211
  })
@@ -1205,7 +1213,7 @@ window.__ModuleLoader__.load({
1205
1213
  }),
1206
1214
  (0, react_jsx_runtime.jsxs)("section", {
1207
1215
  className: ActivityPanel_module_css_default.delegationSection,
1208
- "aria-label": "队长派工关系",
1216
+ "aria-label": t("delegation.aria"),
1209
1217
  "data-delegation-map": true,
1210
1218
  children: [
1211
1219
  (0, react_jsx_runtime.jsxs)("div", {
@@ -1226,30 +1234,30 @@ window.__ModuleLoader__.load({
1226
1234
  className: ActivityPanel_module_css_default.captainLine,
1227
1235
  children: [(0, react_jsx_runtime.jsx)("span", {
1228
1236
  className: ActivityPanel_module_css_default.captainName,
1229
- children: "队长"
1237
+ children: t("captain.name")
1230
1238
  }), (0, react_jsx_runtime.jsx)("span", {
1231
1239
  className: ActivityPanel_module_css_default.captainRole,
1232
- children: "拆解 · 派发 · 汇总"
1240
+ children: t("captain.role")
1233
1241
  })]
1234
- }), (0, react_jsx_runtime.jsxs)("span", {
1242
+ }), (0, react_jsx_runtime.jsx)("span", {
1235
1243
  className: ActivityPanel_module_css_default.captainSummary,
1236
- children: [
1237
- "已派发 ",
1238
- assignedCount,
1239
- " 项任务给 ",
1240
- team.members.length,
1241
- " 名成员"
1242
- ]
1244
+ children: t("captain.summary", {
1245
+ tasks: assignedCount,
1246
+ members: team.members.length
1247
+ })
1243
1248
  })]
1244
1249
  }),
1245
1250
  (0, react_jsx_runtime.jsxs)("span", {
1246
1251
  className: ActivityPanel_module_css_default.captainState,
1247
1252
  "data-busy": busyCount > 0,
1248
- children: [(0, react_jsx_runtime.jsx)(WorkGlyph, { active: busyCount > 0 }), busyCount > 0 ? `${busyCount} 人执行中` : allCompleted ? "已收齐" : "等待回报"]
1253
+ children: [(0, react_jsx_runtime.jsx)(WorkGlyph, { active: busyCount > 0 }), busyCount > 0 ? t("captain.state.working", { count: busyCount }) : t(allCompleted ? "captain.state.collected" : "captain.state.waiting")]
1249
1254
  })
1250
1255
  ]
1251
1256
  }),
1252
- (0, react_jsx_runtime.jsx)(ProgressOverview, { team }),
1257
+ (0, react_jsx_runtime.jsx)(ProgressOverview, {
1258
+ team,
1259
+ t
1260
+ }),
1253
1261
  (0, react_jsx_runtime.jsxs)("button", {
1254
1262
  type: "button",
1255
1263
  className: ActivityPanel_module_css_default.membersToggle,
@@ -1258,17 +1266,13 @@ window.__ModuleLoader__.load({
1258
1266
  },
1259
1267
  "aria-expanded": membersOpen,
1260
1268
  "data-members-toggle": true,
1261
- children: [(0, react_jsx_runtime.jsxs)("span", { children: [
1262
- (0, react_jsx_runtime.jsx)(Chevron, { open: membersOpen }),
1263
- "成员 ",
1264
- team.members.length
1265
- ] }), (0, react_jsx_runtime.jsx)("span", { children: membersOpen ? "收起" : "展开" })]
1269
+ children: [(0, react_jsx_runtime.jsxs)("span", { children: [(0, react_jsx_runtime.jsx)(Chevron, { open: membersOpen }), t("members.toggle", { count: team.members.length })] }), (0, react_jsx_runtime.jsx)("span", { children: t(membersOpen ? "members.collapse" : "members.expand") })]
1266
1270
  }),
1267
1271
  membersOpen && (0, react_jsx_runtime.jsxs)("div", {
1268
1272
  className: ActivityPanel_module_css_default.delegationTree,
1269
1273
  children: [team.members.length === 0 && (0, react_jsx_runtime.jsx)("span", {
1270
1274
  className: ActivityPanel_module_css_default.emptyHint,
1271
- children: "暂无成员,等待队长组建团队"
1275
+ children: t("members.empty")
1272
1276
  }), team.members.map((member) => {
1273
1277
  const owned = team.tasks.filter((task) => task.assignee === member.name);
1274
1278
  return (0, react_jsx_runtime.jsxs)("div", {
@@ -1324,12 +1328,12 @@ window.__ModuleLoader__.load({
1324
1328
  (0, react_jsx_runtime.jsxs)("span", {
1325
1329
  className: ActivityPanel_module_css_default.memberState,
1326
1330
  "data-activity": member.activity,
1327
- children: [(0, react_jsx_runtime.jsx)(WorkGlyph, { active: member.activity === "working" }), memberStateLabel(member, team.tasks, historic)]
1331
+ children: [(0, react_jsx_runtime.jsx)(WorkGlyph, { active: member.activity === "working" }), memberStateLabel(member, team.tasks, historic, t)]
1328
1332
  })
1329
1333
  ]
1330
1334
  }), (0, react_jsx_runtime.jsx)("span", {
1331
1335
  className: ActivityPanel_module_css_default.memberStatusLine,
1332
- children: memberStatusText(member, team.tasks)
1336
+ children: memberStatusText(member, team.tasks, t)
1333
1337
  })]
1334
1338
  }),
1335
1339
  (0, react_jsx_runtime.jsxs)("span", {
@@ -1346,12 +1350,12 @@ window.__ModuleLoader__.load({
1346
1350
  className: ActivityPanel_module_css_default.assignmentLine,
1347
1351
  children: [(0, react_jsx_runtime.jsx)("span", {
1348
1352
  className: ActivityPanel_module_css_default.assignmentLabel,
1349
- children: "队长派发"
1353
+ children: t("assignment.label")
1350
1354
  }), (0, react_jsx_runtime.jsx)("span", {
1351
1355
  className: ActivityPanel_module_css_default.assignmentTasks,
1352
1356
  children: owned.length === 0 ? (0, react_jsx_runtime.jsx)("span", {
1353
1357
  className: ActivityPanel_module_css_default.taskEmpty,
1354
- children: "暂无任务"
1358
+ children: t("assignment.empty")
1355
1359
  }) : owned.map((task) => (0, react_jsx_runtime.jsx)("span", {
1356
1360
  className: ActivityPanel_module_css_default.assignmentChip,
1357
1361
  "data-state": taskTone(task.state, task.status),
@@ -1366,7 +1370,10 @@ window.__ModuleLoader__.load({
1366
1370
  })
1367
1371
  ]
1368
1372
  }),
1369
- (0, react_jsx_runtime.jsx)(DependencyMap, { tasks: team.tasks })
1373
+ (0, react_jsx_runtime.jsx)(DependencyMap, {
1374
+ tasks: team.tasks,
1375
+ t
1376
+ })
1370
1377
  ]
1371
1378
  });
1372
1379
  }
@@ -1393,10 +1400,7 @@ window.__ModuleLoader__.load({
1393
1400
  captainInbox: []
1394
1401
  };
1395
1402
  }
1396
- /** The top-right activity floater. Teams follow the current session: live
1397
- * snapshots and historic card summaries are only shown while their captain
1398
- * session is the one currently open. */
1399
- function ActivityPanel({ sessionsList, openMember }) {
1403
+ function ActivityPanel({ sessionsList, openMember, t }) {
1400
1404
  const navigateToSession = (parentId, childId) => {
1401
1405
  setOpen(false);
1402
1406
  setWasActive(false);
@@ -1675,6 +1679,7 @@ window.__ModuleLoader__.load({
1675
1679
  return (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [!expanded && (0, react_jsx_runtime.jsx)(CollapsedBadge, {
1676
1680
  count: visibleCount,
1677
1681
  busy,
1682
+ t,
1678
1683
  onClick: () => {
1679
1684
  if (current === void 0) return;
1680
1685
  setOpenOwner(current);
@@ -1690,7 +1695,7 @@ window.__ModuleLoader__.load({
1690
1695
  "data-compact": compact || void 0,
1691
1696
  "data-dragging": interaction === "dragging" || void 0,
1692
1697
  "data-resizing": interaction === "resizing" || void 0,
1693
- "aria-label": "AgentTeams 活动面板",
1698
+ "aria-label": t("activity.panelAria"),
1694
1699
  children: [
1695
1700
  (0, react_jsx_runtime.jsxs)("header", {
1696
1701
  className: ActivityPanel_module_css_default.panelHead,
@@ -1701,7 +1706,7 @@ window.__ModuleLoader__.load({
1701
1706
  "data-drag-handle": !compact || void 0,
1702
1707
  children: [(0, react_jsx_runtime.jsxs)("span", {
1703
1708
  className: ActivityPanel_module_css_default.panelTitle,
1704
- children: ["AgentTeams 活动", (0, react_jsx_runtime.jsx)("span", {
1709
+ children: [t("activity.title"), (0, react_jsx_runtime.jsx)("span", {
1705
1710
  className: ActivityPanel_module_css_default.panelDot,
1706
1711
  "data-busy": busy,
1707
1712
  "aria-hidden": true
@@ -1714,8 +1719,8 @@ window.__ModuleLoader__.load({
1714
1719
  "data-control": "dock",
1715
1720
  "data-mode": geometry.mode,
1716
1721
  onClick: toggleDock,
1717
- "aria-label": geometry.mode === "docked" ? "切换为浮动面板" : "停靠到右侧",
1718
- title: geometry.mode === "docked" ? "切换为浮动面板" : "停靠到右侧",
1722
+ "aria-label": t(geometry.mode === "docked" ? "activity.float" : "activity.dockRight"),
1723
+ title: t(geometry.mode === "docked" ? "activity.float" : "activity.dockRight"),
1719
1724
  children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPanelLeftOutline16, {})
1720
1725
  }), (0, react_jsx_runtime.jsx)("button", {
1721
1726
  type: "button",
@@ -1725,8 +1730,8 @@ window.__ModuleLoader__.load({
1725
1730
  setOpen(false);
1726
1731
  setOpenOwner(void 0);
1727
1732
  },
1728
- "aria-label": "收起活动面板",
1729
- title: "收起活动面板",
1733
+ "aria-label": t("activity.collapse"),
1734
+ title: t("activity.collapse"),
1730
1735
  children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, {})
1731
1736
  })]
1732
1737
  })]
@@ -1735,27 +1740,33 @@ window.__ModuleLoader__.load({
1735
1740
  className: ActivityPanel_module_css_default.teams,
1736
1741
  children: visibleCount === 0 ? (0, react_jsx_runtime.jsx)("span", {
1737
1742
  className: ActivityPanel_module_css_default.emptyHint,
1738
- children: "暂无团队活动"
1743
+ children: t("activity.empty")
1739
1744
  }) : (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
1740
1745
  visibleTeams.map((team) => (0, react_jsx_runtime.jsx)(TeamSection, {
1741
1746
  team,
1742
- onNavigate: navigateToSession
1747
+ onNavigate: navigateToSession,
1748
+ t
1743
1749
  }, team.teamId)),
1744
- visibleArchived.map((team) => (0, react_jsx_runtime.jsx)("div", {
1750
+ visibleArchived.map((team) => (0, react_jsx_runtime.jsxs)("div", {
1745
1751
  "data-team-id": team.teamId,
1746
1752
  "data-historic": true,
1747
1753
  className: ActivityPanel_module_css_default.archivedWrap,
1748
- children: (0, react_jsx_runtime.jsx)(TeamSection, {
1754
+ children: [(0, react_jsx_runtime.jsx)("span", {
1755
+ className: ActivityPanel_module_css_default.archiveLabel,
1756
+ children: t("archive.label")
1757
+ }), (0, react_jsx_runtime.jsx)(TeamSection, {
1749
1758
  team,
1750
1759
  onNavigate: navigateToSession,
1760
+ t,
1751
1761
  historic: true
1752
- })
1762
+ })]
1753
1763
  }, `${team.captainSessionId}:${team.teamId}`)),
1754
1764
  visibleHistoric.map(({ data: team, owner }) => {
1755
1765
  const teamKey = `${owner}:${team.teamId}`;
1756
1766
  return (0, react_jsx_runtime.jsx)(TeamSection, {
1757
1767
  team: historicCardTeam(team, owner),
1758
1768
  onNavigate: navigateToSession,
1769
+ t,
1759
1770
  historic: true
1760
1771
  }, teamKey);
1761
1772
  })
@@ -1880,6 +1891,173 @@ window.__ModuleLoader__.load({
1880
1891
  }
1881
1892
  };
1882
1893
  //#endregion
1894
+ //#region lib/client/locales.js
1895
+ /** `agentTeams` namespace dictionaries for every plugin-owned Web surface. */
1896
+ /** Dictionary namespace owned by the AgentTeams client plugin. */
1897
+ const AGENT_TEAMS_LOCALE_NAMESPACE = "agentTeams";
1898
+ /** Simplified Chinese dictionary (the key-set source of truth). */
1899
+ const zh = {
1900
+ "card.memberCount": "{count} 名成员",
1901
+ "action.openActivityPanel": "打开活动面板",
1902
+ "activity.panelButton": "活动面板",
1903
+ "activity.badgeAria": "AgentTeams 活动,{count} 个团队",
1904
+ "activity.panelAria": "AgentTeams 活动面板",
1905
+ "activity.title": "AgentTeams 活动",
1906
+ "activity.float": "切换为浮动面板",
1907
+ "activity.dockRight": "停靠到右侧",
1908
+ "activity.collapse": "收起活动面板",
1909
+ "activity.empty": "暂无团队活动",
1910
+ "format.listSeparator": "、",
1911
+ "task.status.pending": "待领取",
1912
+ "task.status.claimed": "已认领",
1913
+ "task.status.inProgress": "进行中",
1914
+ "task.status.completed": "已完成",
1915
+ "task.status.failed": "失败",
1916
+ "task.status.cancelled": "已取消",
1917
+ "member.state.working": "工作中",
1918
+ "member.state.failed": "有失败",
1919
+ "member.state.waiting": "等待",
1920
+ "member.state.delivered": "已交付",
1921
+ "member.state.left": "已离队",
1922
+ "member.state.removed": "已移除",
1923
+ "member.state.pending": "待执行",
1924
+ "member.state.unassigned": "待派工",
1925
+ "member.status.executing": "正在执行 {taskId}",
1926
+ "member.status.working": "正在处理已派任务",
1927
+ "member.status.waitingOn": "等待 {taskId} · {assignee}",
1928
+ "member.status.waitingPrerequisite": "等待前置任务",
1929
+ "member.status.waitingAssignment": "等待队长派工",
1930
+ "member.status.delivered": "任务已交付",
1931
+ "member.status.idle": "待继续执行",
1932
+ "member.status.unknown": "状态未知",
1933
+ "task.assignee.unclaimed": "待认领",
1934
+ "task.summary.waitingBreakdown": "等待队长拆解任务",
1935
+ "task.summary.allDelivered": "全部 {count} 项任务已交付",
1936
+ "task.summary.blockedAndRunning": "{tasks}{more} 等待前置,其余已开工",
1937
+ "task.summary.more": " 等 {count} 项",
1938
+ "task.summary.running": "{tasks} 正在执行",
1939
+ "task.summary.ready": "{tasks} 已就绪待开工",
1940
+ "task.summary.blocked": "{tasks} 等待前置",
1941
+ "task.summary.waitingSchedule": "等待下一轮调度",
1942
+ "progress.aria": "团队总进度",
1943
+ "progress.title": "总进度",
1944
+ "progress.running": "■ 进行中 {count}",
1945
+ "progress.blocked": "■ 等待依赖 {count}",
1946
+ "progress.delivered": "■ 已交付 {count}",
1947
+ "dependency.aria": "任务依赖链",
1948
+ "dependency.parallel": "并行任务",
1949
+ "dependency.title": "任务依赖",
1950
+ "dependency.hint.parallel": "无前后依赖 · 点击查看详情",
1951
+ "dependency.hint.chain": "悬停高亮依赖链 · 点击固定",
1952
+ "dependency.hint.pinned": "{taskId} 已固定 · Esc 取消",
1953
+ "task.runningAria": "运行中",
1954
+ "task.detail.completed": "已完成并交付",
1955
+ "task.detail.noPrerequisite": "无前置,可立即开工",
1956
+ "task.detail.ready": "前置已就绪,可开工",
1957
+ "task.detail.waitingOn": "等待 {tasks}",
1958
+ "task.detail.noDownstream": "无下游任务",
1959
+ "task.detail.unlocks": "完成后解锁 {tasks}",
1960
+ "team.ended": "已结束",
1961
+ "team.stats.members": "{count} 名成员",
1962
+ "team.stats.completed": "{completed}/{total} 完成",
1963
+ "team.stats.messages": "{count} 条消息",
1964
+ "delegation.aria": "队长派工关系",
1965
+ "captain.name": "队长",
1966
+ "captain.role": "拆解 · 派发 · 汇总",
1967
+ "captain.summary": "已派发 {tasks} 项任务给 {members} 名成员",
1968
+ "captain.state.working": "{count} 人执行中",
1969
+ "captain.state.collected": "已收齐",
1970
+ "captain.state.waiting": "等待回报",
1971
+ "members.toggle": "{count} 名成员",
1972
+ "members.collapse": "收起",
1973
+ "members.expand": "展开",
1974
+ "members.empty": "暂无成员,等待队长组建团队",
1975
+ "assignment.label": "队长派发",
1976
+ "assignment.empty": "暂无任务",
1977
+ "archive.label": "已结束 · 历史归档"
1978
+ };
1979
+ /** English dictionary, checked complete against the Chinese source key set. */
1980
+ const en = {
1981
+ "card.memberCount": "{count} members",
1982
+ "action.openActivityPanel": "Open activity panel",
1983
+ "activity.panelButton": "Activity panel",
1984
+ "activity.badgeAria": "AgentTeams activity, {count} teams",
1985
+ "activity.panelAria": "AgentTeams activity panel",
1986
+ "activity.title": "AgentTeams activity",
1987
+ "activity.float": "Switch to floating panel",
1988
+ "activity.dockRight": "Dock to the right",
1989
+ "activity.collapse": "Collapse activity panel",
1990
+ "activity.empty": "No team activity",
1991
+ "format.listSeparator": ", ",
1992
+ "task.status.pending": "Unclaimed",
1993
+ "task.status.claimed": "Claimed",
1994
+ "task.status.inProgress": "In progress",
1995
+ "task.status.completed": "Completed",
1996
+ "task.status.failed": "Failed",
1997
+ "task.status.cancelled": "Cancelled",
1998
+ "member.state.working": "Working",
1999
+ "member.state.failed": "Has failures",
2000
+ "member.state.waiting": "Waiting",
2001
+ "member.state.delivered": "Delivered",
2002
+ "member.state.left": "Left team",
2003
+ "member.state.removed": "Removed",
2004
+ "member.state.pending": "Pending",
2005
+ "member.state.unassigned": "Awaiting assignment",
2006
+ "member.status.executing": "Working on {taskId}",
2007
+ "member.status.working": "Working on assigned tasks",
2008
+ "member.status.waitingOn": "Waiting for {taskId} · {assignee}",
2009
+ "member.status.waitingPrerequisite": "Waiting for prerequisites",
2010
+ "member.status.waitingAssignment": "Waiting for the captain to assign work",
2011
+ "member.status.delivered": "Tasks delivered",
2012
+ "member.status.idle": "Ready to continue",
2013
+ "member.status.unknown": "Status unknown",
2014
+ "task.assignee.unclaimed": "Unclaimed",
2015
+ "task.summary.waitingBreakdown": "Waiting for the captain to break down the work",
2016
+ "task.summary.allDelivered": "All {count} tasks delivered",
2017
+ "task.summary.blockedAndRunning": "{tasks}{more} waiting on prerequisites; other work has started",
2018
+ "task.summary.more": " and {count} more",
2019
+ "task.summary.running": "{tasks} in progress",
2020
+ "task.summary.ready": "{tasks} ready to start",
2021
+ "task.summary.blocked": "{tasks} waiting on prerequisites",
2022
+ "task.summary.waitingSchedule": "Waiting for the next scheduling round",
2023
+ "progress.aria": "Overall team progress",
2024
+ "progress.title": "Overall progress",
2025
+ "progress.running": "■ In progress {count}",
2026
+ "progress.blocked": "■ Waiting {count}",
2027
+ "progress.delivered": "■ Delivered {count}",
2028
+ "dependency.aria": "Task dependency chain",
2029
+ "dependency.parallel": "Parallel tasks",
2030
+ "dependency.title": "Task dependencies",
2031
+ "dependency.hint.parallel": "No dependencies · Click for details",
2032
+ "dependency.hint.chain": "Hover to highlight dependencies · Click to pin",
2033
+ "dependency.hint.pinned": "{taskId} pinned · Esc to clear",
2034
+ "task.runningAria": "Running",
2035
+ "task.detail.completed": "Completed and delivered",
2036
+ "task.detail.noPrerequisite": "No prerequisites; ready to start",
2037
+ "task.detail.ready": "Prerequisites ready; can start",
2038
+ "task.detail.waitingOn": "Waiting for {tasks}",
2039
+ "task.detail.noDownstream": "No downstream tasks",
2040
+ "task.detail.unlocks": "Unlocks {tasks} when complete",
2041
+ "team.ended": "Ended",
2042
+ "team.stats.members": "{count} members",
2043
+ "team.stats.completed": "{completed}/{total} completed",
2044
+ "team.stats.messages": "{count} messages",
2045
+ "delegation.aria": "Captain delegation map",
2046
+ "captain.name": "Captain",
2047
+ "captain.role": "Break down · Delegate · Synthesize",
2048
+ "captain.summary": "Assigned {tasks} tasks to {members} members",
2049
+ "captain.state.working": "{count} active",
2050
+ "captain.state.collected": "All reports received",
2051
+ "captain.state.waiting": "Waiting for reports",
2052
+ "members.toggle": "Members {count}",
2053
+ "members.collapse": "Collapse",
2054
+ "members.expand": "Expand",
2055
+ "members.empty": "No members yet; waiting for the captain to assemble the team",
2056
+ "assignment.label": "Captain assigned",
2057
+ "assignment.empty": "No tasks",
2058
+ "archive.label": "Ended · Archived history"
2059
+ };
2060
+ //#endregion
1883
2061
  //#region lib/client/session-navigation.js
1884
2062
  /** Version-tolerant navigation into durable AgentTeams member transcripts. */
1885
2063
  /**
@@ -1906,11 +2084,12 @@ window.__ModuleLoader__.load({
1906
2084
  }
1907
2085
  //#endregion
1908
2086
  //#region lib/client/index.js
1909
- /** Required services: conversation nodes, slots, and sessions navigation. */
2087
+ /** Required services: conversation nodes, slots, sessions navigation, and locale. */
1910
2088
  const inject = [
1911
2089
  "conversationEvents",
1912
2090
  "slots",
1913
- "sessions"
2091
+ "sessions",
2092
+ "locale"
1914
2093
  ];
1915
2094
  /** The replayed user message is the canonical transcript entry. */
1916
2095
  function HiddenAgentTeamsCommand() {
@@ -1922,20 +2101,26 @@ window.__ModuleLoader__.load({
1922
2101
  * monitor via a window event — the recovery path for an old session.
1923
2102
  */
1924
2103
  function apply(ctx) {
2104
+ ctx.effect(() => ctx.locale.register(AGENT_TEAMS_LOCALE_NAMESPACE, {
2105
+ zh,
2106
+ en
2107
+ }), "agent-teams: dictionaries");
1925
2108
  const openMember = (parentId, childId) => {
1926
2109
  openAgentTeamMember(ctx.sessions, parentId, childId).catch((error) => {
1927
2110
  console.warn(`agent-teams: failed to open member transcript ${childId}: ${String(error)}`);
1928
2111
  });
1929
2112
  };
1930
- const Panel = () => (0, react_jsx_runtime.jsx)(ActivityPanel, {
2113
+ const Panel = ({ t }) => (0, react_jsx_runtime.jsx)(ActivityPanel, {
1931
2114
  sessionsList: ctx.sessions.list,
1932
- openMember
2115
+ openMember,
2116
+ t
1933
2117
  });
1934
2118
  ctx.slots.inject("shell.overlay", () => ctx.slots.register({
1935
2119
  name: "shell.overlay",
1936
2120
  id: "agent-teams-activity",
1937
2121
  order: 80,
1938
- label: "AgentTeams activity"
2122
+ label: "AgentTeams activity",
2123
+ locale: AGENT_TEAMS_LOCALE_NAMESPACE
1939
2124
  }, Panel));
1940
2125
  ctx.slots.inject("conversation.chat.commandview", () => ctx.slots.register({
1941
2126
  name: "conversation.chat.commandview",
@@ -1945,6 +2130,7 @@ window.__ModuleLoader__.load({
1945
2130
  ctx.slots.inject("conversation.chat.node", () => ctx.slots.register({
1946
2131
  name: "conversation.chat.node",
1947
2132
  key: "agent-teams",
2133
+ locale: AGENT_TEAMS_LOCALE_NAMESPACE,
1948
2134
  inject: () => ({ openMember })
1949
2135
  }, AgentTeamsCard));
1950
2136
  }