@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.
@@ -16,12 +16,14 @@
16
16
  * always-available monitor.
17
17
  * @module dsh-agent-teams/client/activity
18
18
  */
19
+ import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
19
20
  import type { SessionId } from '@deepseek-ai/dsh-session/types';
20
21
  import type { ObservableSnapshot, SessionListState } from '@deepseek-ai/dsh-client-runtime/client';
21
22
  /** The top-right activity floater. Teams follow the current session: live
22
23
  * snapshots and historic card summaries are only shown while their captain
23
24
  * session is the one currently open. */
24
- export declare function ActivityPanel({ sessionsList, openMember }: {
25
+ export type ActivityPanelProps = {
25
26
  readonly sessionsList: ObservableSnapshot<SessionListState>;
26
27
  readonly openMember: (parentId: SessionId, childId: SessionId) => void;
27
- }): import("react").JSX.Element | null;
28
+ } & PropsLocale<'agentTeams'>;
29
+ export declare function ActivityPanel({ sessionsList, openMember, t }: ActivityPanelProps): import("react").JSX.Element | null;
@@ -20,4 +20,4 @@ export interface AgentTeamsCardInjected {
20
20
  /** Complete keyed Chat renderer props. */
21
21
  export type AgentTeamsCardProps = PropsRuntime<'conversation.chat.node', 'agent-teams'> & PropsLocale<'agentTeams'> & AgentTeamsCardInjected;
22
22
  /** Render one durable team as a compact conversation card. */
23
- export declare function AgentTeamsCard({ node, openMember, sessionId }: AgentTeamsCardProps): import("react").JSX.Element;
23
+ export declare function AgentTeamsCard({ node, openMember, sessionId, t }: AgentTeamsCardProps): import("react").JSX.Element;
@@ -1,6 +1,13 @@
1
1
  /** Browser plugin for the AgentTeams activity floater and conversation card. */
2
2
  import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
3
- /** Required services: conversation nodes, slots, and sessions navigation. */
3
+ import { type AgentTeamsLocaleKey } from './locales.ts';
4
+ declare module '@deepseek-ai/dsh-client-ui-slots' {
5
+ interface LocaleNamespaceMap {
6
+ /** AgentTeams conversation card and activity monitor copy. */
7
+ agentTeams: AgentTeamsLocaleKey;
8
+ }
9
+ }
10
+ /** Required services: conversation nodes, slots, sessions navigation, and locale. */
4
11
  export declare const inject: string[];
5
12
  /**
6
13
  * Register the activity monitor in the shell's additive overlay and the
@@ -0,0 +1,169 @@
1
+ /** `agentTeams` namespace dictionaries for every plugin-owned Web surface. */
2
+ /** Dictionary namespace owned by the AgentTeams client plugin. */
3
+ export declare const AGENT_TEAMS_LOCALE_NAMESPACE = "agentTeams";
4
+ /** Simplified Chinese dictionary (the key-set source of truth). */
5
+ export declare const zh: {
6
+ 'card.memberCount': string;
7
+ 'action.openActivityPanel': string;
8
+ 'activity.panelButton': string;
9
+ 'activity.badgeAria': string;
10
+ 'activity.panelAria': string;
11
+ 'activity.title': string;
12
+ 'activity.float': string;
13
+ 'activity.dockRight': string;
14
+ 'activity.collapse': string;
15
+ 'activity.empty': string;
16
+ 'format.listSeparator': string;
17
+ 'task.status.pending': string;
18
+ 'task.status.claimed': string;
19
+ 'task.status.inProgress': string;
20
+ 'task.status.completed': string;
21
+ 'task.status.failed': string;
22
+ 'task.status.cancelled': string;
23
+ 'member.state.working': string;
24
+ 'member.state.failed': string;
25
+ 'member.state.waiting': string;
26
+ 'member.state.delivered': string;
27
+ 'member.state.left': string;
28
+ 'member.state.removed': string;
29
+ 'member.state.pending': string;
30
+ 'member.state.unassigned': string;
31
+ 'member.status.executing': string;
32
+ 'member.status.working': string;
33
+ 'member.status.waitingOn': string;
34
+ 'member.status.waitingPrerequisite': string;
35
+ 'member.status.waitingAssignment': string;
36
+ 'member.status.delivered': string;
37
+ 'member.status.idle': string;
38
+ 'member.status.unknown': string;
39
+ 'task.assignee.unclaimed': string;
40
+ 'task.summary.waitingBreakdown': string;
41
+ 'task.summary.allDelivered': string;
42
+ 'task.summary.blockedAndRunning': string;
43
+ 'task.summary.more': string;
44
+ 'task.summary.running': string;
45
+ 'task.summary.ready': string;
46
+ 'task.summary.blocked': string;
47
+ 'task.summary.waitingSchedule': string;
48
+ 'progress.aria': string;
49
+ 'progress.title': string;
50
+ 'progress.running': string;
51
+ 'progress.blocked': string;
52
+ 'progress.delivered': string;
53
+ 'dependency.aria': string;
54
+ 'dependency.parallel': string;
55
+ 'dependency.title': string;
56
+ 'dependency.hint.parallel': string;
57
+ 'dependency.hint.chain': string;
58
+ 'dependency.hint.pinned': string;
59
+ 'task.runningAria': string;
60
+ 'task.detail.completed': string;
61
+ 'task.detail.noPrerequisite': string;
62
+ 'task.detail.ready': string;
63
+ 'task.detail.waitingOn': string;
64
+ 'task.detail.noDownstream': string;
65
+ 'task.detail.unlocks': string;
66
+ 'team.ended': string;
67
+ 'team.stats.members': string;
68
+ 'team.stats.completed': string;
69
+ 'team.stats.messages': string;
70
+ 'delegation.aria': string;
71
+ 'captain.name': string;
72
+ 'captain.role': string;
73
+ 'captain.summary': string;
74
+ 'captain.state.working': string;
75
+ 'captain.state.collected': string;
76
+ 'captain.state.waiting': string;
77
+ 'members.toggle': string;
78
+ 'members.collapse': string;
79
+ 'members.expand': string;
80
+ 'members.empty': string;
81
+ 'assignment.label': string;
82
+ 'assignment.empty': string;
83
+ 'archive.label': string;
84
+ };
85
+ /** AgentTeams namespace key union. */
86
+ export type AgentTeamsLocaleKey = keyof typeof zh;
87
+ /** English dictionary, checked complete against the Chinese source key set. */
88
+ export declare const en: {
89
+ 'card.memberCount': string;
90
+ 'action.openActivityPanel': string;
91
+ 'activity.panelButton': string;
92
+ 'activity.badgeAria': string;
93
+ 'activity.panelAria': string;
94
+ 'activity.title': string;
95
+ 'activity.float': string;
96
+ 'activity.dockRight': string;
97
+ 'activity.collapse': string;
98
+ 'activity.empty': string;
99
+ 'format.listSeparator': string;
100
+ 'task.status.pending': string;
101
+ 'task.status.claimed': string;
102
+ 'task.status.inProgress': string;
103
+ 'task.status.completed': string;
104
+ 'task.status.failed': string;
105
+ 'task.status.cancelled': string;
106
+ 'member.state.working': string;
107
+ 'member.state.failed': string;
108
+ 'member.state.waiting': string;
109
+ 'member.state.delivered': string;
110
+ 'member.state.left': string;
111
+ 'member.state.removed': string;
112
+ 'member.state.pending': string;
113
+ 'member.state.unassigned': string;
114
+ 'member.status.executing': string;
115
+ 'member.status.working': string;
116
+ 'member.status.waitingOn': string;
117
+ 'member.status.waitingPrerequisite': string;
118
+ 'member.status.waitingAssignment': string;
119
+ 'member.status.delivered': string;
120
+ 'member.status.idle': string;
121
+ 'member.status.unknown': string;
122
+ 'task.assignee.unclaimed': string;
123
+ 'task.summary.waitingBreakdown': string;
124
+ 'task.summary.allDelivered': string;
125
+ 'task.summary.blockedAndRunning': string;
126
+ 'task.summary.more': string;
127
+ 'task.summary.running': string;
128
+ 'task.summary.ready': string;
129
+ 'task.summary.blocked': string;
130
+ 'task.summary.waitingSchedule': string;
131
+ 'progress.aria': string;
132
+ 'progress.title': string;
133
+ 'progress.running': string;
134
+ 'progress.blocked': string;
135
+ 'progress.delivered': string;
136
+ 'dependency.aria': string;
137
+ 'dependency.parallel': string;
138
+ 'dependency.title': string;
139
+ 'dependency.hint.parallel': string;
140
+ 'dependency.hint.chain': string;
141
+ 'dependency.hint.pinned': string;
142
+ 'task.runningAria': string;
143
+ 'task.detail.completed': string;
144
+ 'task.detail.noPrerequisite': string;
145
+ 'task.detail.ready': string;
146
+ 'task.detail.waitingOn': string;
147
+ 'task.detail.noDownstream': string;
148
+ 'task.detail.unlocks': string;
149
+ 'team.ended': string;
150
+ 'team.stats.members': string;
151
+ 'team.stats.completed': string;
152
+ 'team.stats.messages': string;
153
+ 'delegation.aria': string;
154
+ 'captain.name': string;
155
+ 'captain.role': string;
156
+ 'captain.summary': string;
157
+ 'captain.state.working': string;
158
+ 'captain.state.collected': string;
159
+ 'captain.state.waiting': string;
160
+ 'members.toggle': string;
161
+ 'members.collapse': string;
162
+ 'members.expand': string;
163
+ 'members.empty': string;
164
+ 'assignment.label': string;
165
+ 'assignment.empty': string;
166
+ 'archive.label': string;
167
+ };
168
+ /** Translation function consumed by pure view helpers. */
169
+ export type AgentTeamsTranslate = (key: AgentTeamsLocaleKey, params?: Record<string, unknown>) => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanmicoder/dsh-agent-teams",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "AgentTeams for DeepSeek Harness: multi-agent team collaboration (captain, members, tasks with dependencies, messaging) driven by natural language, with a tree monitor in the web GUI",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -0,0 +1,54 @@
1
+ # AgentTeams v0.1.12
2
+
3
+ This release adds host-native English and Simplified Chinese localization to the AgentTeams Web UI.
4
+
5
+ ## New & Improved
6
+
7
+ - **Official Harness locale integration**: the plugin registers its own `agentTeams` namespace with the Harness locale service instead of inspecting or rewriting host DOM.
8
+ - **Complete localized Web surfaces**: the conversation card and activity panel now translate task and member states, dynamic summaries, progress labels, dependency guidance, archive markers, controls, and accessibility text.
9
+ - **Live language switching**: changing the Harness language updates the active AgentTeams card and panel immediately without a page reload or a separate plugin setting.
10
+ - **Consistent fallback behavior**: English remains the fallback for missing locale entries, and dictionary keys and placeholders are verified as a release contract.
11
+
12
+ The `/agent-teams` slash-command description and input hint remain stable English metadata because the current Harness command protocol does not expose a locale namespace.
13
+
14
+ ## Verification
15
+
16
+ - Ran a real DeepSeek API workflow in an isolated `/tmp` Git project with one captain, two members, two dependent tasks, durable messaging, generated artifacts, and a successful project verification command.
17
+ - Verified English → Chinese → English live switching in the real Harness Web UI, including panel folding, dock/floating mode, task dependencies, and member transcript navigation.
18
+ - Passed type checking, production build, offline verification, lifecycle verification, the eight-member complex stress suite, and the Skill mirror check.
19
+
20
+ ## Installation
21
+
22
+ ```sh
23
+ dsh plugin --profile web add @nanmicoder/dsh-agent-teams
24
+ ```
25
+
26
+ <details>
27
+ <summary><b>中文版本 / Chinese Version</b></summary>
28
+
29
+ # AgentTeams v0.1.12
30
+
31
+ 本次更新为 AgentTeams Web UI 增加基于宿主官方能力的简体中文与英文多语言支持。
32
+
33
+ ## 新增与改进
34
+
35
+ - **接入 Harness 官方多语言服务**:插件注册独立的 `agentTeams` 命名空间,不读取或改写宿主 DOM。
36
+ - **完整覆盖 Web 界面**:对话卡片与活动面板中的任务/成员状态、动态摘要、进度、依赖提示、归档标识、操作按钮及无障碍文案均已适配。
37
+ - **语言实时切换**:修改 Harness 语言后,当前 AgentTeams 卡片和面板无需刷新即可同步更新,也不需要插件自己的语言设置。
38
+ - **稳定回退与发布校验**:缺失文案按官方机制回退到英文,发布验证会检查中英文字典的键和模板参数保持一致。
39
+
40
+ 由于当前 Harness 命令协议尚未提供 locale namespace,`/agent-teams` 在 slash 菜单中的描述和输入提示暂时保留稳定的英文元数据。
41
+
42
+ ## 验证
43
+
44
+ - 在隔离的 `/tmp` Git 项目中使用真实 DeepSeek API 完成队长、两名成员、两个依赖任务、持久消息、真实产物及项目校验的完整链路。
45
+ - 在真实 Harness Web UI 中验证英文 → 中文 → 英文实时切换,以及面板收起、停靠/浮动、任务依赖和成员记录跳转。
46
+ - 通过类型检查、生产构建、离线验证、生命周期验证、八成员复杂压力测试及 Skill 镜像检查。
47
+
48
+ ## 安装
49
+
50
+ ```sh
51
+ dsh plugin --profile web add @nanmicoder/dsh-agent-teams
52
+ ```
53
+
54
+ </details>