@nanmicoder/dsh-agent-teams 0.1.14 → 0.1.15-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -9
- package/README_ZH.md +38 -9
- package/lib/client/index.js +2 -2
- package/lib/client.js +2 -2
- package/lib/client.js.map +1 -1
- package/lib/index.js +4 -2
- package/lib/types/client/ActivityPanel.d.ts +2 -1
- package/lib/types/client/agent-teams-card-definition.d.ts +2 -2
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/session-navigation.d.ts +2 -1
- package/lib/types/web-routes.d.ts +13 -0
- package/lib/web-routes.js +26 -0
- package/package.json +80 -39
- package/release-notes/v0.1.15-alpha.1.md +61 -0
package/lib/index.js
CHANGED
|
@@ -26,6 +26,7 @@ import { collectArchivedTeamsActivity, collectTeamsActivity } from "./snapshot.j
|
|
|
26
26
|
import { findTeamByCaptain } from "./state.js";
|
|
27
27
|
import { formatProfilesForPrompt } from "./profiles.js";
|
|
28
28
|
import { qualityPlanningPrompt } from "./quality-gates.js";
|
|
29
|
+
import { authenticatedWebRoutes } from "./web-routes.js";
|
|
29
30
|
/** Web-server service key candidates, newest first. */
|
|
30
31
|
const WEB_SERVER_KEYS = ['webServer', 'httpServer'];
|
|
31
32
|
/** Workspace registry service key candidates, newest first. */
|
|
@@ -159,10 +160,11 @@ export function apply(ctx, config) {
|
|
|
159
160
|
const registerWebSurface = () => {
|
|
160
161
|
if (webRegistered)
|
|
161
162
|
return;
|
|
162
|
-
const
|
|
163
|
+
const rawWebServer = (ctx.get(WEB_SERVER_KEYS[0]) ?? ctx.get(WEB_SERVER_KEYS[1]));
|
|
163
164
|
const workspaceRegistry = (ctx.get(WORKSPACE_KEYS[0]) ?? ctx.get(WORKSPACE_KEYS[1]));
|
|
164
|
-
if (
|
|
165
|
+
if (rawWebServer === undefined || workspaceRegistry === undefined)
|
|
165
166
|
return;
|
|
167
|
+
const webServer = authenticatedWebRoutes(rawWebServer, () => ctx.get('connection'));
|
|
166
168
|
webRegistered = true;
|
|
167
169
|
// Activity panel data route: the browser floater polls this for team
|
|
168
170
|
// snapshots (disk truth + live subagent activity). Mirrors the Claude
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
import type { ModelDirectoryResolver } from '@deepseek-ai/dsh-client-ui-model-selection/client';
|
|
20
20
|
import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
|
|
21
21
|
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
22
|
-
import type { ObservableSnapshot
|
|
22
|
+
import type { ObservableSnapshot } from '@deepseek-ai/dsh-client-store';
|
|
23
|
+
import type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client';
|
|
23
24
|
/** The top-right activity floater. Teams follow the current session: live
|
|
24
25
|
* snapshots and historic card summaries are only shown while their captain
|
|
25
26
|
* session is the one currently open. */
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* the card survives restarts without writing an out-of-repo event type.
|
|
11
11
|
* @module dsh-agent-teams/client/card
|
|
12
12
|
*/
|
|
13
|
-
import type { ConversationNodeDefinition } from '@deepseek-ai/dsh-client-
|
|
13
|
+
import type { ConversationNodeDefinition } from '@deepseek-ai/dsh-client-ui-conversation/client';
|
|
14
14
|
/** Final keyed Chat payload for the team summary card. */
|
|
15
15
|
export interface AgentTeamsCardData {
|
|
16
16
|
readonly teamId: string;
|
|
@@ -23,7 +23,7 @@ export interface AgentTeamsCardData {
|
|
|
23
23
|
readonly role: string;
|
|
24
24
|
}[];
|
|
25
25
|
}
|
|
26
|
-
declare module '@deepseek-ai/dsh-client-ui-
|
|
26
|
+
declare module '@deepseek-ai/dsh-client-ui-chat/client' {
|
|
27
27
|
interface ChatNodeDataMap {
|
|
28
28
|
/** Lightweight team summary card anchoring the conversation. */
|
|
29
29
|
'agent-teams': AgentTeamsCardData;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Browser plugin for the AgentTeams activity floater and conversation card. */
|
|
2
|
-
import type { ClientContext } from '@deepseek-ai/
|
|
2
|
+
import type { Context as ClientContext } from '@deepseek-ai/cordis';
|
|
3
3
|
import { type AgentTeamsLocaleKey } from './locales.ts';
|
|
4
4
|
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
5
5
|
interface LocaleNamespaceMap {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Version-tolerant navigation into durable AgentTeams member transcripts. */
|
|
2
|
-
import type { SessionId
|
|
2
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
3
|
+
import type { SubagentAddress } from '@deepseek-ai/dsh-subagent/client';
|
|
3
4
|
/** Narrow sessions-service face used by the activity panel and team card. */
|
|
4
5
|
export interface AgentTeamsSessionNavigator {
|
|
5
6
|
/** Legacy/ordinary session navigation. */
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import type { HostConnectionService } from '@deepseek-ai/dsh-client-connection';
|
|
3
|
+
/** Public WebServer route surface used by the plugin. */
|
|
4
|
+
export interface WebRouteHost {
|
|
5
|
+
register(route: {
|
|
6
|
+
kind: 'exact' | 'prefix';
|
|
7
|
+
path: string;
|
|
8
|
+
handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
|
|
9
|
+
}): () => void;
|
|
10
|
+
}
|
|
11
|
+
export type BrowserRequestGate = Pick<HostConnectionService, 'requestRejection'>;
|
|
12
|
+
/** Raw WebServer routes do not inherit Connection's authentication fence. */
|
|
13
|
+
export declare function authenticatedWebRoutes(server: WebRouteHost, connection: () => BrowserRequestGate | undefined): WebRouteHost;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Raw WebServer routes do not inherit Connection's authentication fence. */
|
|
2
|
+
export function authenticatedWebRoutes(server, connection) {
|
|
3
|
+
return {
|
|
4
|
+
register(route) {
|
|
5
|
+
return server.register({
|
|
6
|
+
...route,
|
|
7
|
+
async handler(req, res) {
|
|
8
|
+
const gate = connection();
|
|
9
|
+
// Missing/disposing Connection is an assembly failure, never an
|
|
10
|
+
// invitation to expose workspace state or accept plan mutations.
|
|
11
|
+
const rejection = gate === undefined ? 503 : gate.requestRejection(req);
|
|
12
|
+
if (rejection !== undefined) {
|
|
13
|
+
res.writeHead(rejection, {
|
|
14
|
+
'content-type': 'application/json; charset=utf-8',
|
|
15
|
+
'cache-control': 'no-store',
|
|
16
|
+
});
|
|
17
|
+
res.end(JSON.stringify({ error: rejection === 503 ? 'authentication unavailable'
|
|
18
|
+
: rejection === 401 ? 'unauthorized' : 'forbidden' }));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
await route.handler(req, res);
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nanmicoder/dsh-agent-teams",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.15-alpha.1",
|
|
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",
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public",
|
|
59
|
+
"tag": "alpha",
|
|
59
60
|
"registry": "https://registry.npmjs.org/"
|
|
60
61
|
},
|
|
61
62
|
"dsh": {
|
|
@@ -65,10 +66,12 @@
|
|
|
65
66
|
"client": {
|
|
66
67
|
"inject": [
|
|
67
68
|
"@deepseek-ai/dsh-client-locale",
|
|
68
|
-
"@deepseek-ai/dsh-client-runtime",
|
|
69
69
|
"@deepseek-ai/dsh-client-ui-conversation",
|
|
70
70
|
"@deepseek-ai/dsh-client-ui-layout",
|
|
71
|
-
"@deepseek-ai/dsh-client-ui-model-selection"
|
|
71
|
+
"@deepseek-ai/dsh-client-ui-model-selection",
|
|
72
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
73
|
+
"@deepseek-ai/dsh-client-ui-session",
|
|
74
|
+
"@deepseek-ai/dsh-client-ui-chat"
|
|
72
75
|
],
|
|
73
76
|
"platform": "web"
|
|
74
77
|
}
|
|
@@ -78,26 +81,35 @@
|
|
|
78
81
|
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit",
|
|
79
82
|
"sync:skill": "node scripts/sync-skill.mjs",
|
|
80
83
|
"verify:skill": "node scripts/sync-skill.mjs --check",
|
|
81
|
-
"verify": "node scripts/verify.mjs && node scripts/fallback-tdd.mjs && node scripts/quality-gates-tdd.mjs && node scripts/lifecycle-verify.mjs && node scripts/stress-verify.mjs && pnpm verify:skill",
|
|
82
|
-
"prepublishOnly": "pnpm build && pnpm verify"
|
|
84
|
+
"verify": "node scripts/verify.mjs && node scripts/fallback-tdd.mjs && node scripts/quality-gates-tdd.mjs && node scripts/lifecycle-verify.mjs && node scripts/stress-verify.mjs && pnpm verify:web-routes && pnpm verify:release && pnpm verify:skill",
|
|
85
|
+
"prepublishOnly": "pnpm build && pnpm verify",
|
|
86
|
+
"verify:web-routes": "node scripts/web-routes-verify.mjs",
|
|
87
|
+
"verify:release": "node --test scripts/release-metadata.test.mjs"
|
|
83
88
|
},
|
|
84
89
|
"peerDependencies": {
|
|
85
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
86
|
-
"@deepseek-ai/dsh-agent": "^0.1.
|
|
87
|
-
"@deepseek-ai/dsh-
|
|
88
|
-
"@deepseek-ai/dsh-client-
|
|
89
|
-
"@deepseek-ai/dsh-client-
|
|
90
|
-
"@deepseek-ai/dsh-client-
|
|
91
|
-
"@deepseek-ai/dsh-client-ui-
|
|
92
|
-
"@deepseek-ai/dsh-client-ui-
|
|
93
|
-
"@deepseek-ai/dsh-client-ui-
|
|
94
|
-
"@deepseek-ai/dsh-
|
|
95
|
-
"@deepseek-ai/dsh-
|
|
96
|
-
"@deepseek-ai/dsh-
|
|
97
|
-
"@deepseek-ai/dsh-
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-
|
|
100
|
-
"@deepseek-ai/
|
|
90
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
91
|
+
"@deepseek-ai/dsh-agent": "^0.1.2-alpha.2",
|
|
92
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.2-alpha.2",
|
|
93
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.2",
|
|
94
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.2",
|
|
95
|
+
"@deepseek-ai/dsh-client-store": "^0.1.2-alpha.2",
|
|
96
|
+
"@deepseek-ai/dsh-client-ui-chat": "^0.1.2-alpha.2",
|
|
97
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.2",
|
|
98
|
+
"@deepseek-ai/dsh-client-ui-layout": "^0.1.2-alpha.2",
|
|
99
|
+
"@deepseek-ai/dsh-client-ui-model-selection": "^0.1.2-alpha.2",
|
|
100
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.2-alpha.2",
|
|
101
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.2",
|
|
102
|
+
"@deepseek-ai/dsh-client-ui-session": "^0.1.2-alpha.2",
|
|
103
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.2",
|
|
104
|
+
"@deepseek-ai/dsh-commands": "^0.1.2-alpha.2",
|
|
105
|
+
"@deepseek-ai/dsh-llm": "^0.1.2-alpha.2",
|
|
106
|
+
"@deepseek-ai/dsh-session": "^0.1.2-alpha.2",
|
|
107
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.2",
|
|
108
|
+
"@deepseek-ai/dsh-subagent": "^0.1.2-alpha.2",
|
|
109
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.2-alpha.2",
|
|
110
|
+
"@deepseek-ai/dsh-tools": "^0.1.2-alpha.2",
|
|
111
|
+
"@deepseek-ai/dsh-util-values": "^0.1.2-alpha.2",
|
|
112
|
+
"@deepseek-ai/schemastery": "^3.18.2",
|
|
101
113
|
"react": "^18.2.0"
|
|
102
114
|
},
|
|
103
115
|
"peerDependenciesMeta": {
|
|
@@ -107,10 +119,19 @@
|
|
|
107
119
|
"@deepseek-ai/dsh-agent": {
|
|
108
120
|
"optional": true
|
|
109
121
|
},
|
|
122
|
+
"@deepseek-ai/dsh-api-session-controller": {
|
|
123
|
+
"optional": true
|
|
124
|
+
},
|
|
125
|
+
"@deepseek-ai/dsh-client-connection": {
|
|
126
|
+
"optional": true
|
|
127
|
+
},
|
|
110
128
|
"@deepseek-ai/dsh-client-locale": {
|
|
111
129
|
"optional": true
|
|
112
130
|
},
|
|
113
|
-
"@deepseek-ai/dsh-client-
|
|
131
|
+
"@deepseek-ai/dsh-client-store": {
|
|
132
|
+
"optional": true
|
|
133
|
+
},
|
|
134
|
+
"@deepseek-ai/dsh-client-ui-chat": {
|
|
114
135
|
"optional": true
|
|
115
136
|
},
|
|
116
137
|
"@deepseek-ai/dsh-client-ui-conversation": {
|
|
@@ -125,6 +146,12 @@
|
|
|
125
146
|
"@deepseek-ai/dsh-client-ui-primitives": {
|
|
126
147
|
"optional": true
|
|
127
148
|
},
|
|
149
|
+
"@deepseek-ai/dsh-client-ui-renderer": {
|
|
150
|
+
"optional": true
|
|
151
|
+
},
|
|
152
|
+
"@deepseek-ai/dsh-client-ui-session": {
|
|
153
|
+
"optional": true
|
|
154
|
+
},
|
|
128
155
|
"@deepseek-ai/dsh-client-ui-slots": {
|
|
129
156
|
"optional": true
|
|
130
157
|
},
|
|
@@ -137,6 +164,9 @@
|
|
|
137
164
|
"@deepseek-ai/dsh-session": {
|
|
138
165
|
"optional": true
|
|
139
166
|
},
|
|
167
|
+
"@deepseek-ai/dsh-session-projection": {
|
|
168
|
+
"optional": true
|
|
169
|
+
},
|
|
140
170
|
"@deepseek-ai/dsh-subagent": {
|
|
141
171
|
"optional": true
|
|
142
172
|
},
|
|
@@ -146,6 +176,9 @@
|
|
|
146
176
|
"@deepseek-ai/dsh-tools": {
|
|
147
177
|
"optional": true
|
|
148
178
|
},
|
|
179
|
+
"@deepseek-ai/dsh-util-values": {
|
|
180
|
+
"optional": true
|
|
181
|
+
},
|
|
149
182
|
"@deepseek-ai/schemastery": {
|
|
150
183
|
"optional": true
|
|
151
184
|
},
|
|
@@ -154,23 +187,31 @@
|
|
|
154
187
|
}
|
|
155
188
|
},
|
|
156
189
|
"devDependencies": {
|
|
157
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
158
|
-
"@deepseek-ai/dsh
|
|
159
|
-
"@deepseek-ai/dsh-
|
|
160
|
-
"@deepseek-ai/dsh-
|
|
161
|
-
"@deepseek-ai/dsh-client-
|
|
162
|
-
"@deepseek-ai/dsh-client-
|
|
163
|
-
"@deepseek-ai/dsh-client-
|
|
164
|
-
"@deepseek-ai/dsh-client-ui-
|
|
165
|
-
"@deepseek-ai/dsh-client-ui-
|
|
166
|
-
"@deepseek-ai/dsh-
|
|
167
|
-
"@deepseek-ai/dsh-
|
|
168
|
-
"@deepseek-ai/dsh-
|
|
169
|
-
"@deepseek-ai/dsh-
|
|
170
|
-
"@deepseek-ai/dsh-
|
|
171
|
-
"@deepseek-ai/dsh-
|
|
172
|
-
"@deepseek-ai/dsh-
|
|
173
|
-
"@deepseek-ai/
|
|
190
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
191
|
+
"@deepseek-ai/dsh": "0.1.2-alpha.2",
|
|
192
|
+
"@deepseek-ai/dsh-agent": "0.1.2-alpha.2",
|
|
193
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.2-alpha.2",
|
|
194
|
+
"@deepseek-ai/dsh-client-connection": "0.1.2-alpha.2",
|
|
195
|
+
"@deepseek-ai/dsh-client-locale": "0.1.2-alpha.2",
|
|
196
|
+
"@deepseek-ai/dsh-client-store": "0.1.2-alpha.2",
|
|
197
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.1.2-alpha.2",
|
|
198
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.2-alpha.2",
|
|
199
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.1.2-alpha.2",
|
|
200
|
+
"@deepseek-ai/dsh-client-ui-model-selection": "0.1.2-alpha.2",
|
|
201
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.2-alpha.2",
|
|
202
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.2-alpha.2",
|
|
203
|
+
"@deepseek-ai/dsh-client-ui-session": "0.1.2-alpha.2",
|
|
204
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.2-alpha.2",
|
|
205
|
+
"@deepseek-ai/dsh-commands": "0.1.2-alpha.2",
|
|
206
|
+
"@deepseek-ai/dsh-llm": "0.1.2-alpha.2",
|
|
207
|
+
"@deepseek-ai/dsh-session": "0.1.2-alpha.2",
|
|
208
|
+
"@deepseek-ai/dsh-session-projection": "0.1.2-alpha.2",
|
|
209
|
+
"@deepseek-ai/dsh-subagent": "0.1.2-alpha.2",
|
|
210
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.2-alpha.2",
|
|
211
|
+
"@deepseek-ai/dsh-tools": "0.1.2-alpha.2",
|
|
212
|
+
"@deepseek-ai/dsh-util-values": "0.1.2-alpha.2",
|
|
213
|
+
"@deepseek-ai/dsh-workspace": "0.1.2-alpha.2",
|
|
214
|
+
"@deepseek-ai/schemastery": "^3.18.2",
|
|
174
215
|
"@types/node": "^24.13.3",
|
|
175
216
|
"@types/react": "~18.3.1",
|
|
176
217
|
"@types/react-dom": "^18.3.7",
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# AgentTeams v0.1.15-alpha.1
|
|
2
|
+
|
|
3
|
+
## Compatibility first
|
|
4
|
+
|
|
5
|
+
**Requires DeepSeek Harness 0.1.2-alpha.2.** This is an opt-in Alpha release,
|
|
6
|
+
published to npm **alpha**. **latest remains 0.1.14** for the previous host line.
|
|
7
|
+
There is no dual-version adapter and the plugin does not upgrade Harness for you.
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
# First verify that the Harness instance you run is 0.1.2-alpha.2.
|
|
11
|
+
dsh --version
|
|
12
|
+
dsh plugin --profile web add @nanmicoder/dsh-agent-teams@0.1.15-alpha.1
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Keep a working older host/plugin pair if you cannot update Harness. The previous
|
|
16
|
+
baseline was Harness **0.1.0-rc.8 + plugin 0.1.14**:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
dsh plugin --profile web add @nanmicoder/dsh-agent-teams@0.1.14
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Restart the matching host and refresh the browser. Source users must update and
|
|
23
|
+
rebuild the actual Harness checkout too. See the README for upgrade and rollback
|
|
24
|
+
instructions; neither every older RC nor future Alpha versions are claimed as supported.
|
|
25
|
+
|
|
26
|
+
## Changes
|
|
27
|
+
|
|
28
|
+
- Restore the Web client on Alpha.2 using its current conversation, session,
|
|
29
|
+
store and subagent APIs; remove the retired client-runtime dependency.
|
|
30
|
+
- Pin the development dependency graph to Alpha.2 and validate the packaged plugin.
|
|
31
|
+
- Protect raw state, plan, halt and artwork routes with host authentication and
|
|
32
|
+
Host/Origin checks; fail closed when the Connection service is unavailable.
|
|
33
|
+
- Keep prereleases away from npm/GitHub latest through explicit channel metadata,
|
|
34
|
+
publication flags and regression checks.
|
|
35
|
+
|
|
36
|
+
## Validation
|
|
37
|
+
|
|
38
|
+
Real DeepSeek API calls in `/tmp`, including a three-member order-settlement
|
|
39
|
+
workflow producing JSON, offline HTML and an independent review. Human UI tests
|
|
40
|
+
covered plan revision/approval/discard, invalid dependencies, member navigation,
|
|
41
|
+
interruption/continuation, refresh recovery, locales/themes and 390px layouts.
|
|
42
|
+
Model output mistakes required human correction and member continuation; this
|
|
43
|
+
does not claim unattended business correctness. See
|
|
44
|
+
[the acceptance record](https://github.com/NanmiCoder/dsh-agent-teams/blob/v0.1.15-alpha.1/docs/alpha2-release-acceptance.md).
|
|
45
|
+
|
|
46
|
+
Full build/verification and real HTTP authentication regression checks passed
|
|
47
|
+
locally. Real API/UI coverage is macOS arm64 + Alpha.2 + DeepSeek Flash; Docker
|
|
48
|
+
was unavailable. Linux Actions run the build and automated checks before publish.
|
|
49
|
+
|
|
50
|
+
## 中文说明
|
|
51
|
+
|
|
52
|
+
本版只对应 **Harness 0.1.2-alpha.2**,通过 **alpha** 渠道发布,
|
|
53
|
+
**latest 保留 0.1.14**。没有安装 Alpha.2、或实际运行的 Harness 源码未更新,
|
|
54
|
+
请保留原先可用的旧插件;原验证基线为宿主 0.1.0-rc.8 + 插件 0.1.14。
|
|
55
|
+
升级插件不会自动升级宿主。更新后必须重启对应宿主并刷新浏览器;
|
|
56
|
+
回退时也要匹配宿主与插件版本,不需要删除凭据或团队数据。
|
|
57
|
+
|
|
58
|
+
本次修复 Alpha.2 下插件无法加载的问题,并补齐 Web 路由认证。
|
|
59
|
+
已用真实 API 完成订单分析、报表生成和独立复核,并在真实 UI 中验证计划审核、
|
|
60
|
+
修改、取消、成员续跑、刷新、多语言、主题和手机宽度。
|
|
61
|
+
业务产物曾出现模型执行偏差,已通过人工反馈和成员续跑修正,详见验收记录。
|