@lmzhen/dsh-evolution-curator 0.3.57 → 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/README.md CHANGED
@@ -22,7 +22,11 @@ Independent of request-prefix construction. This package does not alter the asse
22
22
 
23
23
 
24
24
  - LLM nomination pass is advisory and disabled by default; deterministic lifecycle remains authoritative.
25
- - Consolidation is control-plane only (`/evolution consolidate <target> <source...>`): no LLM pass proposes merge groups yet, and merged source bodies are appended verbatim rather than rewritten into a synthesized skill.
25
+ - Consolidation is a REAL merger path: the LLM nomination (when enabled / via `recommend()`) proposes
26
+ merge groups, the control plane gates them and applies the mutation — merged source bodies are appended
27
+ verbatim rather than rewritten into a synthesized skill. The one-click `/evolution consolidate
28
+ <target> <source...>` remains the direct manual path (P2-8, v11: the earlier "no LLM pass proposes
29
+ merge groups" wording contradicted the tested nomination chain).
26
30
 
27
31
  ## Recovery and consolidation
28
32
 
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@ import { randomUUID } from "node:crypto";
3
3
  import { join } from "node:path";
4
4
  import { BlockAssembler, createUserMessage } from "@deepseek-ai/dsh-llm";
5
5
  import z from "@deepseek-ai/schemastery";
6
- import { CURATOR_DRY_RUN_BANNER, CURATOR_PROMPT, DEFAULT_ARCHIVE_AFTER_DAYS, DEFAULT_CURATOR_INTERVAL_HOURS, DEFAULT_HEALTH_THRESHOLDS, DEFAULT_MIN_IDLE_HOURS, DEFAULT_STALE_AFTER_DAYS, EvolutionGateSet, SKILL_NAME_RE, SkillLibrary, buildCuratorRunReport, clampedNumber, computeDedupGroups, computeLifecycleTransitions, computePrefixClusters, computeQualityScores, computeScopeView, emptyRecord, evolutionHome, evolutionIoAdapter, foldCuratorFields, loadSuppressedNames, loadUsage, markerEntryName, mutateUsage, parseCuratorNominations, parseFrontmatter, relatedSkillNames, renderCuratorReportMarkdown, updateSuppressedNames, usageObserved } from "@lmzhen/dsh-evolution-core";
6
+ import { CURATOR_DRY_RUN_BANNER, CURATOR_PROMPT, DEFAULT_ARCHIVE_AFTER_DAYS, DEFAULT_CURATOR_INTERVAL_HOURS, DEFAULT_HEALTH_THRESHOLDS, DEFAULT_MIN_IDLE_HOURS, DEFAULT_STALE_AFTER_DAYS, EvolutionGateSet, SKILL_NAME_RE, SkillLibrary, buildCuratorRunReport, clampedNumber, computeDedupGroups, computeLifecycleTransitions, computePrefixClusters, computeQualityScores, computeScopeView, emptyRecord, evolutionHome, evolutionIoAdapter, foldCuratorFields, loadSuppressedNames, loadUsage, markerEntryName, mutateUsage, parseCuratorNominations, parseFrontmatter, relatedSkillNames, renderCuratorReportMarkdown, resolveSkillsRoot, updateSuppressedNames, usageObserved } from "@lmzhen/dsh-evolution-core";
7
7
  //#region lib/types/index.js
8
8
  /**
9
9
  * Deterministic skill lifecycle curator with interval gate and archive.
@@ -75,7 +75,7 @@ var EvolutionCurator = class extends Service {
75
75
  constructor(ctx, config = {}) {
76
76
  super(ctx, "evolutionCurator");
77
77
  this.io = evolutionIoAdapter(() => ctx.evolutionIo.provider());
78
- this.skills = new SkillLibrary(void 0, this.io, void 0, (event) => {
78
+ this.skills = new SkillLibrary(resolveSkillsRoot({ root: config.root }), this.io, void 0, (event) => {
79
79
  this.ctx.emit("evolution/skill-mutated", event);
80
80
  });
81
81
  this.enabled = config.enabled ?? true;
@@ -17,6 +17,11 @@ export interface Config {
17
17
  intervalHours?: number;
18
18
  staleAfterDays?: number;
19
19
  archiveAfterDays?: number;
20
+ /** Skill-tree root for curator scope/snapshot/archive (D2, v11) — a custom
21
+ * root deployment (review/tool-skill-manage write another tree) must point
22
+ * the curator at the SAME tree or lifecycle decisions land on the default
23
+ * tree and never see the deployed skills. Empty uses skillsRoot(). */
24
+ root?: string;
20
25
  /** Spend one LLM review pass on stale candidates before the deterministic archive step. */
21
26
  llmReview?: boolean;
22
27
  curatorProvider?: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lmzhen/dsh-evolution-curator",
3
3
  "description": "Deterministic skill lifecycle and recovery (community build)",
4
- "version": "0.3.57",
4
+ "version": "0.3.58",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -31,20 +31,20 @@
31
31
  "license": "MIT",
32
32
  "dependencies": {
33
33
  "@deepseek-ai/schemastery": "^3.18.1",
34
- "@lmzhen/dsh-evolution-core": "^0.3.57"
34
+ "@lmzhen/dsh-evolution-core": "^0.3.58"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@deepseek-ai/cordis": "^4.0.1",
38
38
  "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",
39
39
  "@deepseek-ai/dsh-llm": "^0.1.1-rc.2",
40
- "@lmzhen/dsh-evolution-io": "^0.3.57",
41
- "@lmzhen/dsh-evolution-state": "^0.3.57"
40
+ "@lmzhen/dsh-evolution-io": "^0.3.58",
41
+ "@lmzhen/dsh-evolution-state": "^0.3.58"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",
45
45
  "@deepseek-ai/dsh-llm": "^0.1.1-rc.2",
46
- "@lmzhen/dsh-evolution-core": "^0.3.57",
47
- "@lmzhen/dsh-evolution-io": "^0.3.57",
48
- "@lmzhen/dsh-evolution-state": "^0.3.57"
46
+ "@lmzhen/dsh-evolution-core": "^0.3.58",
47
+ "@lmzhen/dsh-evolution-io": "^0.3.58",
48
+ "@lmzhen/dsh-evolution-state": "^0.3.58"
49
49
  }
50
50
  }