@lmzhen/dsh-evolution-review 0.1.0-rc.32 → 0.1.0-rc.34

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.
Files changed (2) hide show
  1. package/lib/index.js +27 -2
  2. package/package.json +7 -7
package/lib/index.js CHANGED
@@ -173,6 +173,7 @@ function apply(ctx, rawConfig) {
173
173
  }
174
174
  }
175
175
  });
176
+ const childReads = run.localAgent ? collectReadSkillNames(run.localAgent.session) : /* @__PURE__ */ new Set();
176
177
  const result = await run.result;
177
178
  await run.dispose();
178
179
  if (!result.structured) return true;
@@ -188,7 +189,7 @@ function apply(ctx, rawConfig) {
188
189
  maxSkillContentChars: snapshot?.skillContentChars ?? DEFAULT_SKILL_CONTENT_CHARS
189
190
  });
190
191
  const acceptedSkillOps = validation.accepted.skillOps ?? [];
191
- const skippedUnread = filterUnreadSkillOps(acceptedSkillOps, collectReadSkillNames(session));
192
+ const skippedUnread = filterUnreadSkillOps(acceptedSkillOps, new Set([...collectReadSkillNames(session), ...childReads]));
192
193
  validation.accepted.skillOps = acceptedSkillOps;
193
194
  const actions = await executePlan(validation.accepted);
194
195
  const evidenceQuotes = [...validation.accepted.memoryOps ?? [], ...acceptedSkillOps].reduce((total, op) => total + (Array.isArray(op.evidence) ? op.evidence.length : 0), 0);
@@ -258,8 +259,25 @@ function apply(ctx, rawConfig) {
258
259
  ok: false,
259
260
  message: decision.message
260
261
  };
262
+ if (approval.isEnabled === false) return await runnerDirect(kind, runnerArgs);
261
263
  return await approval.run(kind, runnerArgs);
262
264
  }
265
+ /** Direct execution for the approval-disabled case (parallel to executeSkillDirect). */
266
+ async function runnerDirect(kind, args) {
267
+ if (kind === "memory") {
268
+ const memory = ctx.get("memory");
269
+ const op = args;
270
+ if (!memory?.applyBatch) return void 0;
271
+ return await memory.applyBatch(op.target === "user" ? "user" : "memory", [{
272
+ action: op.action ?? "add",
273
+ facts: op.facts ?? op.content,
274
+ old_text: op.old_text
275
+ }]);
276
+ }
277
+ const wrapped = args ?? {};
278
+ if (!wrapped.operation) return void 0;
279
+ return await executeSkillDirect(wrapped.operation);
280
+ }
263
281
  /**
264
282
  * Approval-disabled path: execute the skill op through SkillLibrary with an
265
283
  * EXPLICIT background_review origin. Going through ctx.tools.execute would
@@ -280,7 +298,14 @@ function apply(ctx, rawConfig) {
280
298
  if (op.action === "create") return await library.create(name, op.content ?? "", origin);
281
299
  if (op.action === "edit" || op.action === "update") return await library.update(name, op.content ?? "", origin);
282
300
  if (op.action === "patch") return await library.patch(name, op.old_string ?? "", op.new_string ?? "", op.file_path ?? "", false, origin);
283
- if (op.action === "delete") return await library.archive(name, op.absorbed_into ? { absorbedInto: op.absorbed_into } : {});
301
+ if (op.action === "delete") {
302
+ const into = (op.absorbed_into ?? "").trim();
303
+ if (!into || !await library.read(into)) return {
304
+ ok: false,
305
+ message: "delete requires an existing absorbed_into target"
306
+ };
307
+ return await library.archive(name, { absorbedInto: into });
308
+ }
284
309
  if (op.action === "write_file") return await library.writeSupportFile(name, op.file_path ?? "", op.file_content ?? op.content ?? "", origin);
285
310
  if (op.action === "remove_file") return await library.removeSupportFile(name, op.file_path ?? "", origin);
286
311
  return {
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.1.0-rc.32",
4
+ "version": "0.1.0-rc.34",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -33,8 +33,8 @@
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
35
  "@deepseek-ai/schemastery": "^3.18.1",
36
- "@lmzhen/dsh-evolution-core": "^0.1.0-rc.32",
37
- "@lmzhen/dsh-evolution-plan-validator": "^0.1.0-rc.32"
36
+ "@lmzhen/dsh-evolution-core": "^0.1.0-rc.34",
37
+ "@lmzhen/dsh-evolution-plan-validator": "^0.1.0-rc.34"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@deepseek-ai/cordis": "^4.0.1",
@@ -43,7 +43,7 @@
43
43
  "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
44
44
  "@deepseek-ai/dsh-session": "^0.1.0-rc.6",
45
45
  "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
46
- "@lmzhen/dsh-evolution-state": "^0.1.0-rc.32"
46
+ "@lmzhen/dsh-evolution-state": "^0.1.0-rc.34"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@deepseek-ai/dsh-agent": "^0.1.0-rc.6",
@@ -52,8 +52,8 @@
52
52
  "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
53
53
  "@deepseek-ai/dsh-session": "^0.1.0-rc.6",
54
54
  "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
55
- "@lmzhen/dsh-evolution-core": "^0.1.0-rc.32",
56
- "@lmzhen/dsh-evolution-plan-validator": "^0.1.0-rc.32",
57
- "@lmzhen/dsh-evolution-state": "^0.1.0-rc.32"
55
+ "@lmzhen/dsh-evolution-core": "^0.1.0-rc.34",
56
+ "@lmzhen/dsh-evolution-plan-validator": "^0.1.0-rc.34",
57
+ "@lmzhen/dsh-evolution-state": "^0.1.0-rc.34"
58
58
  }
59
59
  }