@lmzhen/dsh-evolution-maintenance 0.3.56 → 0.3.58

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 CHANGED
@@ -213,6 +213,16 @@ function validateAndNormalizeMaintainPlan(raw, report, validSignals) {
213
213
  }
214
214
  }
215
215
  const notes = Array.isArray(raw.notes) ? raw.notes.filter((note) => isNonEmptyString(note)) : [];
216
+ const overSignals = /* @__PURE__ */ new Set();
217
+ for (const signal of report.library) if (signal.verdict === "over") overSignals.add(signal.id);
218
+ for (const skill of report.skills) for (const signal of skill.signals) if (signal.verdict === "over") overSignals.add(signal.id);
219
+ const covered = new Set(plan.flatMap((item) => item.evidence.map((ev) => ev.signal)));
220
+ const notesText = notes.join("\n");
221
+ if (verdict === "issues") if (plan.length === 0 && notes.length === 0 && overSignals.size > 0) errors.push("completeness: verdict=issues with an empty plan AND no notes — every over signal must be covered by evidence or named in a note (§3)");
222
+ else {
223
+ const uncovered = [...overSignals].filter((id) => !covered.has(id) && !notesText.includes(id));
224
+ if (uncovered.length > 0) errors.push(`completeness: over signal(s) not covered by any plan evidence nor named in a note (${uncovered.join(", ")}) — §3 requires each over signal to be addressed or explicitly explained away`);
225
+ }
216
226
  if (errors.length > 0) return {
217
227
  ok: false,
218
228
  errors,
package/lib/tools.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { i as snapshotFromLibrary, n as PROBE_SIGNALS, r as computeProbe, t as buildEnrichment } from "./enrichment-B7tEHkM5.js";
2
2
  import { SkillLibrary, redactSecrets, resolveSkillsRoot } from "@lmzhen/dsh-evolution-core";
3
+ import z from "@deepseek-ai/schemastery";
3
4
  import { defineTool } from "@deepseek-ai/dsh-tools";
4
5
  //#region lib/types/tools.js
5
6
  /**
@@ -13,6 +14,7 @@ import { defineTool } from "@deepseek-ai/dsh-tools";
13
14
  * @module @lmzhen/dsh-evolution-maintenance-tools
14
15
  */
15
16
  const name = "evolution-maintenance-tools";
17
+ const Config = z.object({ skillsRoot: z.string().default("") });
16
18
  function apply(ctx, rawConfig = {}) {
17
19
  const config = rawConfig;
18
20
  ctx.inject(["tools"], (toolCtx) => {
@@ -79,4 +81,4 @@ function apply(ctx, rawConfig = {}) {
79
81
  });
80
82
  }
81
83
  //#endregion
82
- export { apply, name };
84
+ export { Config, apply, name };
@@ -9,11 +9,17 @@
9
9
  * @module @lmzhen/dsh-evolution-maintenance-tools
10
10
  */
11
11
  import type { Context } from '@deepseek-ai/cordis';
12
+ import z from '@deepseek-ai/schemastery';
12
13
  export declare const name = "evolution-maintenance-tools";
13
14
  export interface Config {
14
15
  /** Skill-tree root for probe reads; empty uses skillsRoot(). Align with
15
16
  * tool-skill-manage/skill-usage/evolution-skill-catalog/commands rows (A7). */
16
17
  skillsRoot?: string | undefined;
17
18
  }
19
+ export declare const Config: z<Schemastery.ObjectS<{
20
+ skillsRoot: z<string, string>;
21
+ }>, Schemastery.ObjectT<{
22
+ skillsRoot: z<string, string>;
23
+ }>>;
18
24
  export declare function apply(ctx: Context, rawConfig?: Config): void;
19
25
  //# sourceMappingURL=tools.d.ts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lmzhen/dsh-evolution-maintenance",
3
3
  "description": "Deterministic maintenance-scan surface: skill-library snapshot assembly, drift signals and mechanical-facts rendering (design 011) (community build)",
4
- "version": "0.3.56",
4
+ "version": "0.3.58",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -34,7 +34,8 @@
34
34
  ],
35
35
  "license": "MIT",
36
36
  "dependencies": {
37
- "@lmzhen/dsh-evolution-core": "^0.3.56"
37
+ "@deepseek-ai/schemastery": "^3.18.1",
38
+ "@lmzhen/dsh-evolution-core": "^0.3.58"
38
39
  },
39
40
  "peerDependencies": {
40
41
  "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",