@lmzhen/dsh-evolution-review 0.3.37 → 0.3.38
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/index.js +35 -2
- package/package.json +10 -10
package/lib/index.js
CHANGED
|
@@ -62,16 +62,20 @@ function apply(ctx, rawConfig) {
|
|
|
62
62
|
const turnStarts = /* @__PURE__ */ new Map();
|
|
63
63
|
const cumulativeToolCalls = /* @__PURE__ */ new Map();
|
|
64
64
|
const completionInjected = /* @__PURE__ */ new Set();
|
|
65
|
+
const pendingCadenceReviews = /* @__PURE__ */ new Map();
|
|
66
|
+
const pendingCadenceWarned = /* @__PURE__ */ new Set();
|
|
65
67
|
let reviewInFlight = false;
|
|
66
68
|
const policy = () => ctx.get("evolutionPolicy")?.get();
|
|
67
69
|
ctx.on("session/event", (session, event) => {
|
|
68
70
|
if (event.type === "turn/start") turnStarts.set(session.id, session.seq - 1);
|
|
69
71
|
if (event.type !== "turn/end") return;
|
|
70
|
-
if (turnStarts.size >= COUNTER_SWEEP_THRESHOLD || cumulativeToolCalls.size >= COUNTER_SWEEP_THRESHOLD || completionInjected.size >= COUNTER_SWEEP_THRESHOLD) {
|
|
72
|
+
if (turnStarts.size >= COUNTER_SWEEP_THRESHOLD || cumulativeToolCalls.size >= COUNTER_SWEEP_THRESHOLD || completionInjected.size >= COUNTER_SWEEP_THRESHOLD || pendingCadenceReviews.size >= COUNTER_SWEEP_THRESHOLD) {
|
|
71
73
|
const isAlive = (id) => ctx.agents.get(id) !== void 0;
|
|
72
74
|
sweepDeadSessionEntries(turnStarts, isAlive);
|
|
73
75
|
sweepDeadSessionEntries(cumulativeToolCalls, isAlive);
|
|
74
76
|
sweepDeadSessionEntries(completionInjected, isAlive);
|
|
77
|
+
sweepDeadSessionEntries(pendingCadenceReviews, isAlive);
|
|
78
|
+
sweepDeadSessionEntries(pendingCadenceWarned, isAlive);
|
|
75
79
|
}
|
|
76
80
|
onTurnEnd(session, event);
|
|
77
81
|
});
|
|
@@ -115,6 +119,28 @@ function apply(ctx, rawConfig) {
|
|
|
115
119
|
await stateService?.saveReviewState(session.id, state);
|
|
116
120
|
const cumulative = (cumulativeToolCalls.get(session.id) ?? 0) + signal.toolCalls;
|
|
117
121
|
cumulativeToolCalls.set(session.id, cumulative);
|
|
122
|
+
if (event.data.reason.kind === "completed") {
|
|
123
|
+
const pendingKind = pendingCadenceReviews.get(session.id);
|
|
124
|
+
if (pendingKind !== void 0) {
|
|
125
|
+
pendingCadenceReviews.delete(session.id);
|
|
126
|
+
try {
|
|
127
|
+
agent.inject(createUserMessage({
|
|
128
|
+
content: [{
|
|
129
|
+
type: "text",
|
|
130
|
+
text: reviewPrompt(pendingKind)
|
|
131
|
+
}],
|
|
132
|
+
source: {
|
|
133
|
+
kind: "plugin",
|
|
134
|
+
plugin: "dsh-evolution-review",
|
|
135
|
+
form: "notice",
|
|
136
|
+
summary: "auto-review"
|
|
137
|
+
}
|
|
138
|
+
}));
|
|
139
|
+
} catch (injectError) {
|
|
140
|
+
ctx.logger.warn(`dsh-evolution-review: deferred review inject failed: ${injectError instanceof Error ? injectError.message : String(injectError)}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
118
144
|
if (kind) {
|
|
119
145
|
if (await trySubagentReview(session, agent, kind, signal)) ctx.emit("evolution/review-scheduled", {
|
|
120
146
|
sessionId: session.id,
|
|
@@ -123,7 +149,7 @@ function apply(ctx, rawConfig) {
|
|
|
123
149
|
userChars: signal.userChars,
|
|
124
150
|
assistantChars: signal.assistantChars
|
|
125
151
|
});
|
|
126
|
-
else agent.inject(createUserMessage({
|
|
152
|
+
else if ((policy()?.reviewMode ?? config.reviewMode) === "inject") agent.inject(createUserMessage({
|
|
127
153
|
content: [{
|
|
128
154
|
type: "text",
|
|
129
155
|
text: reviewPrompt(kind)
|
|
@@ -135,6 +161,13 @@ function apply(ctx, rawConfig) {
|
|
|
135
161
|
summary: "auto-review"
|
|
136
162
|
}
|
|
137
163
|
}));
|
|
164
|
+
else {
|
|
165
|
+
pendingCadenceReviews.set(session.id, kind);
|
|
166
|
+
if (!pendingCadenceWarned.has(session.id)) {
|
|
167
|
+
pendingCadenceWarned.add(session.id);
|
|
168
|
+
ctx.logger.warn(`dsh-evolution-review: ${kind} review could not run on a subagent this turn; deferred to the end of the conversation (no mid-task injection)`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
138
171
|
return;
|
|
139
172
|
}
|
|
140
173
|
const trigger = config.skillReviewTrigger;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lmzhen/dsh-evolution-review",
|
|
3
3
|
"description": "Background review orchestration (community build)",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.38",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
34
|
-
"@lmzhen/dsh-evolution-approval": "^0.3.
|
|
35
|
-
"@lmzhen/dsh-evolution-core": "^0.3.
|
|
36
|
-
"@lmzhen/dsh-evolution-plan-validator": "^0.3.
|
|
34
|
+
"@lmzhen/dsh-evolution-approval": "^0.3.38",
|
|
35
|
+
"@lmzhen/dsh-evolution-core": "^0.3.38",
|
|
36
|
+
"@lmzhen/dsh-evolution-plan-validator": "^0.3.38"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"@deepseek-ai/dsh-llm": "^0.1.1-rc.2",
|
|
43
43
|
"@deepseek-ai/dsh-session": "^0.1.1-rc.2",
|
|
44
44
|
"@deepseek-ai/dsh-tools": "^0.1.1-rc.2",
|
|
45
|
-
"@lmzhen/dsh-evolution-state": "^0.3.
|
|
46
|
-
"@lmzhen/dsh-evolution-policy": "^0.3.
|
|
45
|
+
"@lmzhen/dsh-evolution-state": "^0.3.38",
|
|
46
|
+
"@lmzhen/dsh-evolution-policy": "^0.3.38"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@deepseek-ai/dsh-agent": "^0.1.1-rc.2",
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
"@deepseek-ai/dsh-session-persistence": "^0.1.1-rc.2",
|
|
55
55
|
"@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.1-rc.2",
|
|
56
56
|
"@deepseek-ai/dsh-tools": "^0.1.1-rc.2",
|
|
57
|
-
"@lmzhen/dsh-evolution-approval": "^0.3.
|
|
58
|
-
"@lmzhen/dsh-evolution-core": "^0.3.
|
|
59
|
-
"@lmzhen/dsh-evolution-plan-validator": "^0.3.
|
|
60
|
-
"@lmzhen/dsh-evolution-state": "^0.3.
|
|
57
|
+
"@lmzhen/dsh-evolution-approval": "^0.3.38",
|
|
58
|
+
"@lmzhen/dsh-evolution-core": "^0.3.38",
|
|
59
|
+
"@lmzhen/dsh-evolution-plan-validator": "^0.3.38",
|
|
60
|
+
"@lmzhen/dsh-evolution-state": "^0.3.38"
|
|
61
61
|
}
|
|
62
62
|
}
|