@nanmicoder/dsh-agent-teams 0.1.22 → 0.1.24-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -13
- package/README_ZH.md +35 -13
- package/compatibility.json +6 -2
- package/lib/artifacts.js +342 -0
- package/lib/capabilities.js +6 -4
- package/lib/client/ActivityPanel.js +5 -2
- package/lib/client/agent-teams-card-definition.js +100 -6
- package/lib/client.js +90 -7
- package/lib/client.js.map +1 -1
- package/lib/command.js +3 -2
- package/lib/git-artifact-stamp.json +2 -2
- package/lib/harness-compat.js +139 -24
- package/lib/index.js +26 -3
- package/lib/lineage.js +198 -0
- package/lib/mailbox.js +59 -34
- package/lib/members.js +355 -82
- package/lib/profiles.js +3 -2
- package/lib/quality-gates.js +850 -65
- package/lib/scheduler.js +22 -3
- package/lib/snapshot.js +22 -1
- package/lib/state.js +282 -13
- package/lib/tool-policies.js +187 -0
- package/lib/tools.js +382 -109
- package/lib/types/artifacts.d.ts +66 -0
- package/lib/types/client/activity-monitor.d.ts +6 -0
- package/lib/types/client/agent-teams-card-definition.d.ts +56 -0
- package/lib/types/harness-compat.d.ts +78 -15
- package/lib/types/index.d.ts +26 -1
- package/lib/types/lineage.d.ts +92 -0
- package/lib/types/members.d.ts +113 -2
- package/lib/types/profiles.d.ts +6 -0
- package/lib/types/quality-gates.d.ts +216 -10
- package/lib/types/scheduler.d.ts +2 -1
- package/lib/types/snapshot.d.ts +20 -0
- package/lib/types/state.d.ts +22 -5
- package/lib/types/tool-policies.d.ts +119 -0
- package/lib/types/tools.d.ts +12 -1
- package/lib/types/types.d.ts +100 -0
- package/lib/types/workspace-audit.d.ts +27 -0
- package/lib/workspace-audit.js +52 -0
- package/package.json +61 -54
- package/pnpm-workspace.yaml +304 -273
- package/release-notes/v0.1.23.md +34 -0
- package/release-notes/v0.1.24-rc.1.md +13 -0
- package/scripts/legacy-session-source-repair.mjs +344 -0
package/lib/types/types.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* survives harness restarts.
|
|
8
8
|
* @module dsh-agent-teams/types
|
|
9
9
|
*/
|
|
10
|
+
import type { MemberToolFilter } from './tool-policies.ts';
|
|
10
11
|
/** Task lifecycle statuses in progression order. */
|
|
11
12
|
export type TaskStatus = 'pending' | 'claimed' | 'in_progress' | 'completed' | 'failed' | 'cancelled';
|
|
12
13
|
/** Statuses after which a task can no longer be claimed or worked on. */
|
|
@@ -44,6 +45,49 @@ export interface CommandResult {
|
|
|
44
45
|
exitCode?: number;
|
|
45
46
|
evidence?: string;
|
|
46
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Identity of one workspace path at one instant. A verdict is evidence about a
|
|
50
|
+
* revision, so recording the bytes it judged (not only the task id) lets the
|
|
51
|
+
* delivery check refuse to advertise a revision no review ever saw.
|
|
52
|
+
*/
|
|
53
|
+
export interface ArtifactDigest {
|
|
54
|
+
/** Workspace-relative POSIX path. */
|
|
55
|
+
path: string;
|
|
56
|
+
/** Whether a regular file existed when the digest was taken. */
|
|
57
|
+
present: boolean;
|
|
58
|
+
/** Lowercase hex sha256 of the file bytes; absent unless the file was read. */
|
|
59
|
+
sha256?: string;
|
|
60
|
+
/** File size in bytes; absent unless the file was read. */
|
|
61
|
+
size?: number;
|
|
62
|
+
/** File mtime in epoch ms; lets a legacy record detect a later edit. */
|
|
63
|
+
mtimeMs?: number;
|
|
64
|
+
/**
|
|
65
|
+
* The path exists but could not be read or safely resolved (permissions,
|
|
66
|
+
* symlink escaping the workspace, I/O error). Never conflated with "absent":
|
|
67
|
+
* unreadable bytes cannot be claimed as unchanged.
|
|
68
|
+
*/
|
|
69
|
+
unreadable?: boolean;
|
|
70
|
+
/** Why the path could not be read, when `unreadable` is set. */
|
|
71
|
+
reason?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A declared scope that could not be fully enumerated (file cap reached,
|
|
75
|
+
* unreadable directory, path that is not workspace-relative). Recorded so a
|
|
76
|
+
* partial artifact list is never mistaken for complete coverage.
|
|
77
|
+
*/
|
|
78
|
+
export interface ArtifactScopeGap {
|
|
79
|
+
/** The pattern or path that could not be fully resolved. */
|
|
80
|
+
pattern: string;
|
|
81
|
+
reason: string;
|
|
82
|
+
}
|
|
83
|
+
/** One set of artifact digests captured at a single instant. */
|
|
84
|
+
export interface ArtifactSnapshot {
|
|
85
|
+
/** Epoch ms when these bytes were read. */
|
|
86
|
+
at: number;
|
|
87
|
+
artifacts: ArtifactDigest[];
|
|
88
|
+
/** Present when the recorded coverage is known to be incomplete. */
|
|
89
|
+
gaps?: ArtifactScopeGap[];
|
|
90
|
+
}
|
|
47
91
|
/** Profile / team review-loop limits. */
|
|
48
92
|
export interface ReviewPolicy {
|
|
49
93
|
requirementsMinRounds?: number;
|
|
@@ -121,9 +165,47 @@ export interface TeamTask {
|
|
|
121
165
|
/** Supplemental observations, attributed to their original execution generation. */
|
|
122
166
|
supplementalEvidence?: TaskEvidence[];
|
|
123
167
|
reviewedTaskId?: string;
|
|
168
|
+
/** Execution generation of the reviewed task at the moment of judgment. */
|
|
124
169
|
reviewedAttempt?: number;
|
|
170
|
+
/**
|
|
171
|
+
* Bytes this verdict judged, read from the workspace when the gate closed.
|
|
172
|
+
* A later edit, deletion or re-attempt invalidates the verdict.
|
|
173
|
+
*/
|
|
174
|
+
reviewedArtifacts?: ArtifactDigest[];
|
|
175
|
+
/** Scope of that verdict that could not be fully enumerated, if any. */
|
|
176
|
+
reviewedGaps?: ArtifactScopeGap[];
|
|
177
|
+
/**
|
|
178
|
+
* Scope patterns the verdict bound (e.g. `lib/`). A file that appears under
|
|
179
|
+
* one of them later was never reviewed, so the verdict must not claim it.
|
|
180
|
+
*/
|
|
181
|
+
reviewedScope?: string[];
|
|
182
|
+
/**
|
|
183
|
+
* Drift observed while this verdict was being formed (the workspace changed
|
|
184
|
+
* between claim and close). The verdict cannot be read as binding a stable
|
|
185
|
+
* revision.
|
|
186
|
+
*/
|
|
187
|
+
reviewedDuringDrift?: string[];
|
|
188
|
+
/**
|
|
189
|
+
* Workspace snapshot taken when this verdict's attempt started, so a close
|
|
190
|
+
* can tell whether it judged a revision that was changing underneath it.
|
|
191
|
+
*/
|
|
192
|
+
verdictStartSnapshot?: ArtifactSnapshot;
|
|
193
|
+
/**
|
|
194
|
+
* Workspace snapshot an auto-generated contract (acceptance / inScope /
|
|
195
|
+
* verify) was derived from. When a cited artifact changes underneath it the
|
|
196
|
+
* work order is marked stale instead of being read as authoritative.
|
|
197
|
+
*/
|
|
198
|
+
contractSnapshot?: ArtifactSnapshot;
|
|
125
199
|
/** Repair source: the implementation / previous successful artifact. */
|
|
126
200
|
sourceTaskId?: string;
|
|
201
|
+
/**
|
|
202
|
+
* The failed gate task(s) whose findings this repair fixes. Recorded as an
|
|
203
|
+
* explicit causal edge because `dependencies` cannot carry it: a failed task
|
|
204
|
+
* never reaches `completed`, so a dependency on it would make the repair
|
|
205
|
+
* permanently unclaimable. Delivery reads this to tell a closed loop from
|
|
206
|
+
* genuinely unresolved work (issue #175A).
|
|
207
|
+
*/
|
|
208
|
+
findingSourceTaskIds?: string[];
|
|
127
209
|
sourceFindingIds?: string[];
|
|
128
210
|
/** User-constraint / goal items this task claims to cover. */
|
|
129
211
|
coverageOf?: string[];
|
|
@@ -157,6 +239,24 @@ export interface TeamMember {
|
|
|
157
239
|
activeModel?: string;
|
|
158
240
|
/** Whether the fallback route is currently active. */
|
|
159
241
|
fallbackActive?: boolean;
|
|
242
|
+
/**
|
|
243
|
+
* Owner-declared tool-policy id this member selected (`#59`), absent for a
|
|
244
|
+
* member without a policy (the unchanged default behavior). The Captain
|
|
245
|
+
* model may only select a configured id; it never submits raw tool lists.
|
|
246
|
+
*/
|
|
247
|
+
toolPolicy?: string;
|
|
248
|
+
/**
|
|
249
|
+
* The immutable effective tool filter resolved when the member was created
|
|
250
|
+
* and handed to the child's `toolFilter`. `team.json` keeps it for audit,
|
|
251
|
+
* status, and recovery diagnostics; the continuable descriptor remains the
|
|
252
|
+
* authority that reapplies the filter to a cold-resumed child.
|
|
253
|
+
*/
|
|
254
|
+
toolFilter?: MemberToolFilter;
|
|
255
|
+
/** Exact child-scoped setup restored on hosts with managed activations. */
|
|
256
|
+
runtimeSetup?: {
|
|
257
|
+
persona: string;
|
|
258
|
+
toolFilter: MemberToolFilter;
|
|
259
|
+
};
|
|
160
260
|
joinedAt: number;
|
|
161
261
|
status: MemberStatus;
|
|
162
262
|
/** Execution admission is closed while a failed/pending handoff is drained. */
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single workspace audit shared by every surface that reports a delivery
|
|
3
|
+
* or quality-loop conclusion.
|
|
4
|
+
*
|
|
5
|
+
* `agent_teams_status`, the activity-panel route and any Web API consumer must
|
|
6
|
+
* read the same current bytes: if only one of them compared recorded verdicts
|
|
7
|
+
* against the workspace, the other would keep advertising a passing gate over
|
|
8
|
+
* a revision no review ever saw (issue #161).
|
|
9
|
+
*
|
|
10
|
+
* The audit consumes the artifact reader's *complete* result — digests, the
|
|
11
|
+
* enumeration gaps and unreadable paths — because a partial read must never
|
|
12
|
+
* look like a clean one: a scope that outgrew its cap after the review would
|
|
13
|
+
* otherwise be reported as fully verified.
|
|
14
|
+
* @module dsh-agent-teams/workspace-audit
|
|
15
|
+
*/
|
|
16
|
+
import type { DeliveryAudit } from './quality-gates.ts';
|
|
17
|
+
import type { TeamState } from './types.ts';
|
|
18
|
+
/**
|
|
19
|
+
* Read the current workspace bytes a team's recorded verdicts and generated
|
|
20
|
+
* work orders depend on.
|
|
21
|
+
* @param workspace - absolute path of the owning workspace.
|
|
22
|
+
* @param team - the durable team record.
|
|
23
|
+
* @returns digests of every recorded path, the current contents of the scopes
|
|
24
|
+
* the verdicts bound (so a new file cannot slip into a broad scope), and every
|
|
25
|
+
* gap that makes this audit incomplete.
|
|
26
|
+
*/
|
|
27
|
+
export declare function auditTeamWorkspace(workspace: string, team: TeamState): DeliveryAudit;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single workspace audit shared by every surface that reports a delivery
|
|
3
|
+
* or quality-loop conclusion.
|
|
4
|
+
*
|
|
5
|
+
* `agent_teams_status`, the activity-panel route and any Web API consumer must
|
|
6
|
+
* read the same current bytes: if only one of them compared recorded verdicts
|
|
7
|
+
* against the workspace, the other would keep advertising a passing gate over
|
|
8
|
+
* a revision no review ever saw (issue #161).
|
|
9
|
+
*
|
|
10
|
+
* The audit consumes the artifact reader's *complete* result — digests, the
|
|
11
|
+
* enumeration gaps and unreadable paths — because a partial read must never
|
|
12
|
+
* look like a clean one: a scope that outgrew its cap after the review would
|
|
13
|
+
* otherwise be reported as fully verified.
|
|
14
|
+
* @module dsh-agent-teams/workspace-audit
|
|
15
|
+
*/
|
|
16
|
+
import { readArtifactScope } from "./artifacts.js";
|
|
17
|
+
import { deliveryArtifactPaths, deliveryScopePatterns } from "./quality-gates.js";
|
|
18
|
+
/**
|
|
19
|
+
* Read the current workspace bytes a team's recorded verdicts and generated
|
|
20
|
+
* work orders depend on.
|
|
21
|
+
* @param workspace - absolute path of the owning workspace.
|
|
22
|
+
* @param team - the durable team record.
|
|
23
|
+
* @returns digests of every recorded path, the current contents of the scopes
|
|
24
|
+
* the verdicts bound (so a new file cannot slip into a broad scope), and every
|
|
25
|
+
* gap that makes this audit incomplete.
|
|
26
|
+
*/
|
|
27
|
+
export function auditTeamWorkspace(workspace, team) {
|
|
28
|
+
const paths = deliveryArtifactPaths(team);
|
|
29
|
+
const scopePatterns = deliveryScopePatterns(team);
|
|
30
|
+
const pathRead = paths.length === 0 ? { artifacts: [], gaps: [] } : readArtifactScope(workspace, paths);
|
|
31
|
+
const scopeRead = scopePatterns.length === 0 ? { artifacts: [], gaps: [] } : readArtifactScope(workspace, scopePatterns);
|
|
32
|
+
const gaps = [...pathRead.gaps, ...scopeRead.gaps];
|
|
33
|
+
const seen = new Set(gaps.map((gap) => `${gap.pattern}\u0000${gap.reason}`));
|
|
34
|
+
const recordGap = (pattern, reason) => {
|
|
35
|
+
const key = `${pattern}\u0000${reason}`;
|
|
36
|
+
if (seen.has(key))
|
|
37
|
+
return;
|
|
38
|
+
seen.add(key);
|
|
39
|
+
gaps.push({ pattern, reason });
|
|
40
|
+
};
|
|
41
|
+
for (const artifact of [...pathRead.artifacts, ...scopeRead.artifacts]) {
|
|
42
|
+
// An unreadable path is not a gap in enumeration but a gap in evidence:
|
|
43
|
+
// report it the same way so no surface treats it as a clean read.
|
|
44
|
+
if (artifact.unreadable === true)
|
|
45
|
+
recordGap(artifact.path, artifact.reason ?? 'path could not be read');
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
artifacts: pathRead.artifacts,
|
|
49
|
+
expandedScope: scopeRead.artifacts.map((artifact) => ({ path: artifact.path, present: artifact.present })),
|
|
50
|
+
...gaps.length === 0 ? {} : { gaps },
|
|
51
|
+
};
|
|
52
|
+
}
|
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.24-rc.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",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"compatibility.json",
|
|
30
30
|
"scripts/doctor.mjs",
|
|
31
31
|
"scripts/compatibility.mjs",
|
|
32
|
-
"pnpm-workspace.yaml"
|
|
32
|
+
"pnpm-workspace.yaml",
|
|
33
|
+
"scripts/legacy-session-source-repair.mjs"
|
|
33
34
|
],
|
|
34
35
|
"license": "MIT",
|
|
35
36
|
"author": {
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
},
|
|
61
62
|
"publishConfig": {
|
|
62
63
|
"access": "public",
|
|
63
|
-
"tag": "
|
|
64
|
+
"tag": "next",
|
|
64
65
|
"registry": "https://registry.npmjs.org/"
|
|
65
66
|
},
|
|
66
67
|
"dsh": {
|
|
@@ -83,27 +84,27 @@
|
|
|
83
84
|
},
|
|
84
85
|
"peerDependencies": {
|
|
85
86
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
86
|
-
"@deepseek-ai/dsh-agent": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
87
|
-
"@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
88
|
-
"@deepseek-ai/dsh-client-connection": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
89
|
-
"@deepseek-ai/dsh-client-locale": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
90
|
-
"@deepseek-ai/dsh-client-store": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
91
|
-
"@deepseek-ai/dsh-client-ui-chat": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
92
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
93
|
-
"@deepseek-ai/dsh-client-ui-layout": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
94
|
-
"@deepseek-ai/dsh-client-ui-model-selection": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
95
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
96
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
97
|
-
"@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
98
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
99
|
-
"@deepseek-ai/dsh-commands": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
100
|
-
"@deepseek-ai/dsh-llm": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
101
|
-
"@deepseek-ai/dsh-session": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
102
|
-
"@deepseek-ai/dsh-session-projection": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
103
|
-
"@deepseek-ai/dsh-subagent": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
104
|
-
"@deepseek-ai/dsh-system-prompt": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
105
|
-
"@deepseek-ai/dsh-tools": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
106
|
-
"@deepseek-ai/dsh-util-values": "0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
87
|
+
"@deepseek-ai/dsh-agent": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
88
|
+
"@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
89
|
+
"@deepseek-ai/dsh-client-connection": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
90
|
+
"@deepseek-ai/dsh-client-locale": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
91
|
+
"@deepseek-ai/dsh-client-store": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
92
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
93
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
94
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
95
|
+
"@deepseek-ai/dsh-client-ui-model-selection": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
96
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
97
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
98
|
+
"@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
99
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
100
|
+
"@deepseek-ai/dsh-commands": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
101
|
+
"@deepseek-ai/dsh-llm": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
102
|
+
"@deepseek-ai/dsh-session": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
103
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
104
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
105
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
106
|
+
"@deepseek-ai/dsh-tools": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
107
|
+
"@deepseek-ai/dsh-util-values": "0.2.1-rc.1 || 0.2.0-rc.2 || 0.1.7-rc.2 || 0.1.5-rc.3 || 0.1.5-rc.2 || 0.1.5-rc.1 || 0.1.2-rc.1 || 0.1.2-alpha.5 || 0.1.2-alpha.2",
|
|
107
108
|
"@deepseek-ai/schemastery": "^3.18.2",
|
|
108
109
|
"react": "^18.2.0"
|
|
109
110
|
},
|
|
@@ -182,33 +183,33 @@
|
|
|
182
183
|
}
|
|
183
184
|
},
|
|
184
185
|
"devDependencies": {
|
|
185
|
-
"@deepseek-ai/cordis": "4.0.
|
|
186
|
-
"@deepseek-ai/dsh": "0.2.
|
|
187
|
-
"@deepseek-ai/dsh-agent": "0.2.
|
|
188
|
-
"@deepseek-ai/dsh-api-session-controller": "0.2.
|
|
189
|
-
"@deepseek-ai/dsh-client-connection": "0.2.
|
|
190
|
-
"@deepseek-ai/dsh-client-locale": "0.2.
|
|
191
|
-
"@deepseek-ai/dsh-client-store": "0.2.
|
|
192
|
-
"@deepseek-ai/dsh-client-ui-chat": "0.2.
|
|
193
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.2.
|
|
194
|
-
"@deepseek-ai/dsh-client-ui-layout": "0.2.
|
|
195
|
-
"@deepseek-ai/dsh-client-ui-model-selection": "0.2.
|
|
196
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.2.
|
|
197
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.2.
|
|
198
|
-
"@deepseek-ai/dsh-client-ui-session": "0.2.
|
|
199
|
-
"@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.
|
|
200
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.2.
|
|
201
|
-
"@deepseek-ai/dsh-commands": "0.2.
|
|
202
|
-
"@deepseek-ai/dsh-llm": "0.2.
|
|
203
|
-
"@deepseek-ai/dsh-llm-retry": "0.2.
|
|
204
|
-
"@deepseek-ai/dsh-session": "0.2.
|
|
205
|
-
"@deepseek-ai/dsh-session-projection": "0.2.
|
|
206
|
-
"@deepseek-ai/dsh-subagent": "0.2.
|
|
207
|
-
"@deepseek-ai/dsh-system-prompt": "0.2.
|
|
208
|
-
"@deepseek-ai/dsh-tools": "0.2.
|
|
209
|
-
"@deepseek-ai/dsh-util-values": "0.2.
|
|
210
|
-
"@deepseek-ai/dsh-workspace": "0.2.
|
|
211
|
-
"@deepseek-ai/schemastery": "3.18.
|
|
186
|
+
"@deepseek-ai/cordis": "4.0.5",
|
|
187
|
+
"@deepseek-ai/dsh": "0.2.1-rc.1",
|
|
188
|
+
"@deepseek-ai/dsh-agent": "0.2.1-rc.1",
|
|
189
|
+
"@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.1",
|
|
190
|
+
"@deepseek-ai/dsh-client-connection": "0.2.1-rc.1",
|
|
191
|
+
"@deepseek-ai/dsh-client-locale": "0.2.1-rc.1",
|
|
192
|
+
"@deepseek-ai/dsh-client-store": "0.2.1-rc.1",
|
|
193
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.2.1-rc.1",
|
|
194
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.1",
|
|
195
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.1",
|
|
196
|
+
"@deepseek-ai/dsh-client-ui-model-selection": "0.2.1-rc.1",
|
|
197
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.1",
|
|
198
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.1",
|
|
199
|
+
"@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.1",
|
|
200
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.1-rc.1",
|
|
201
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.1",
|
|
202
|
+
"@deepseek-ai/dsh-commands": "0.2.1-rc.1",
|
|
203
|
+
"@deepseek-ai/dsh-llm": "0.2.1-rc.1",
|
|
204
|
+
"@deepseek-ai/dsh-llm-retry": "0.2.1-rc.1",
|
|
205
|
+
"@deepseek-ai/dsh-session": "0.2.1-rc.1",
|
|
206
|
+
"@deepseek-ai/dsh-session-projection": "0.2.1-rc.1",
|
|
207
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-rc.1",
|
|
208
|
+
"@deepseek-ai/dsh-system-prompt": "0.2.1-rc.1",
|
|
209
|
+
"@deepseek-ai/dsh-tools": "0.2.1-rc.1",
|
|
210
|
+
"@deepseek-ai/dsh-util-values": "0.2.1-rc.1",
|
|
211
|
+
"@deepseek-ai/dsh-workspace": "0.2.1-rc.1",
|
|
212
|
+
"@deepseek-ai/schemastery": "3.18.5",
|
|
212
213
|
"@types/node": "^24.13.3",
|
|
213
214
|
"@types/react": "~18.3.1",
|
|
214
215
|
"@types/react-dom": "^18.3.7",
|
|
@@ -228,8 +229,10 @@
|
|
|
228
229
|
"update:skills": "node scripts/update-skills.mjs",
|
|
229
230
|
"test:skills-updater": "node --test scripts/update-skills.test.mjs",
|
|
230
231
|
"verify:skill": "node scripts/sync-skill.mjs --check",
|
|
231
|
-
"verify": "node scripts/verify.mjs && node scripts/fallback-tdd.mjs && node scripts/member-failure-tdd.mjs && pnpm verify:quality-gates && node scripts/lifecycle-verify.mjs && node scripts/stress-verify.mjs && node --test scripts/issue-159.test.mjs && pnpm verify:web-routes && pnpm verify:release && pnpm verify:readme && pnpm verify:skill && pnpm verify:harness-contract && pnpm verify:http-body && pnpm verify:compatibility && pnpm verify:capabilities && pnpm verify:member-spawn-recovery && pnpm test:git-install && pnpm verify:source-runner && pnpm verify:git-artifact",
|
|
232
|
-
"verify:quality-gates": "node scripts/quality-gates-tdd.mjs && node --test scripts/quality-gates-repair-scope.test.mjs scripts/quality-gates-amend.test.mjs",
|
|
232
|
+
"verify": "node scripts/verify.mjs && node scripts/fallback-tdd.mjs && node scripts/member-failure-tdd.mjs && pnpm verify:issue-regressions && pnpm verify:quality-gates && node scripts/lifecycle-verify.mjs && node scripts/stress-verify.mjs && node --test scripts/issue-159.test.mjs && pnpm verify:issue-203 && pnpm verify:corrupt-state && pnpm verify:web-routes && pnpm verify:release && pnpm verify:readme && pnpm verify:skill && pnpm verify:harness-contract && pnpm verify:http-body && pnpm verify:compatibility && pnpm verify:capabilities && pnpm verify:tool-policies && pnpm verify:member-spawn-recovery && pnpm test:git-install && pnpm verify:source-runner && pnpm verify:lineage-identity && pnpm verify:legacy-session-repair && pnpm verify:git-artifact",
|
|
233
|
+
"verify:quality-gates": "node scripts/quality-gates-tdd.mjs && node --test scripts/quality-gates-repair-scope.test.mjs scripts/quality-gates-amend.test.mjs scripts/quality-gates-content-bound.test.mjs scripts/quality-gates-work-order.test.mjs scripts/quality-gates-repair-wiring.test.mjs scripts/quality-gates-excluded-scope.test.mjs scripts/quality-gates-cross-binding.test.mjs",
|
|
234
|
+
"verify:issue-203": "node --test scripts/issue-203-card.test.mjs",
|
|
235
|
+
"verify:corrupt-state": "node --test scripts/corrupt-teamjson.test.mjs",
|
|
233
236
|
"verify:web-routes": "node scripts/web-routes-verify.mjs",
|
|
234
237
|
"verify:release": "node --test scripts/release-metadata.test.mjs",
|
|
235
238
|
"verify:readme": "node scripts/readme-version.mjs && node --test scripts/readme-version.test.mjs",
|
|
@@ -238,9 +241,13 @@
|
|
|
238
241
|
"verify:http-body": "node --test scripts/http-body.test.mjs",
|
|
239
242
|
"doctor": "node scripts/doctor.mjs",
|
|
240
243
|
"verify:capabilities": "node --test scripts/capabilities.test.mjs",
|
|
244
|
+
"verify:tool-policies": "node --test scripts/tool-policies.test.mjs",
|
|
241
245
|
"verify:member-spawn-recovery": "node --test scripts/member-spawn-recovery.test.mjs",
|
|
242
246
|
"test:git-install": "node --test scripts/git-artifacts.test.mjs",
|
|
243
247
|
"verify:source-runner": "node --test scripts/harness-source-verify.test.mjs",
|
|
244
|
-
"verify:git-artifact": "node scripts/git-artifacts.mjs"
|
|
248
|
+
"verify:git-artifact": "node scripts/git-artifacts.mjs",
|
|
249
|
+
"verify:issue-regressions": "node --test scripts/issue-188.test.mjs scripts/issue-189.test.mjs scripts/issue-205.test.mjs",
|
|
250
|
+
"verify:legacy-session-repair": "node --test scripts/legacy-session-source-repair.test.mjs",
|
|
251
|
+
"verify:lineage-identity": "node --test scripts/lineage-identity.test.mjs"
|
|
245
252
|
}
|
|
246
253
|
}
|