@lmzhen/dsh-evolution-curator 0.3.79 → 0.3.80

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
@@ -59,6 +59,9 @@ var EvolutionCurator = class extends Service {
59
59
  staleAfterDays;
60
60
  archiveAfterDays;
61
61
  llmReview;
62
+ /** S1-C3: one warn per instance when `llmReview` is on but the llm service
63
+ * is absent — the channel silently degrading must be visible at least once. */
64
+ llmAbsentWarned = false;
62
65
  curatorProvider;
63
66
  qualityWarnStaleAfterDays;
64
67
  minIdleHours;
@@ -268,7 +271,16 @@ var EvolutionCurator = class extends Service {
268
271
  };
269
272
  if (candidates.length === 0) return empty;
270
273
  const llm = this.ctx.get("llm");
271
- if (!llm) return empty;
274
+ if (!llm) {
275
+ if (!this.llmAbsentWarned) {
276
+ this.llmAbsentWarned = true;
277
+ this.ctx.logger.warn("evolution-curator: llmReview is enabled but no llm service is mounted — the LLM nomination channel NEVER runs (every pass degrades to deterministic-only). Mount an llm provider or set llmReview:false.");
278
+ }
279
+ return {
280
+ ...empty,
281
+ warnings: [...empty.warnings, "llm channel absent: no llm service is mounted, the LLM nomination pass did not run"]
282
+ };
283
+ }
272
284
  const model = this.ctx.get("evolutionPolicy")?.get()?.curatorModel ?? DEFAULT_CURATOR_MODEL;
273
285
  const clusters = computePrefixClusters(candidates);
274
286
  const clusterLines = clusters.length === 0 ? ["Prefix clusters observed in the candidate list: (none)"] : ["Prefix clusters observed in the candidate list (orientation only — verify against the names above; you may also flag additional clusters):", ...clusters.map((cluster) => `- '${cluster.key}': ${cluster.members.join(", ")}`)];
@@ -96,6 +96,9 @@ export declare class EvolutionCurator extends Service {
96
96
  private readonly staleAfterDays;
97
97
  private readonly archiveAfterDays;
98
98
  private readonly llmReview;
99
+ /** S1-C3: one warn per instance when `llmReview` is on but the llm service
100
+ * is absent — the channel silently degrading must be visible at least once. */
101
+ private llmAbsentWarned;
99
102
  private readonly curatorProvider;
100
103
  private readonly qualityWarnStaleAfterDays;
101
104
  private readonly minIdleHours;
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.79",
4
+ "version": "0.3.80",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -27,20 +27,20 @@
27
27
  "license": "MIT",
28
28
  "dependencies": {
29
29
  "@deepseek-ai/schemastery": "^3.18.1",
30
- "@lmzhen/dsh-evolution-core": "^0.3.79"
30
+ "@lmzhen/dsh-evolution-core": "^0.3.80"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@deepseek-ai/cordis": "^4.0.1",
34
34
  "@deepseek-ai/dsh-llm": "^0.1.5-rc.2",
35
35
  "@deepseek-ai/dsh-session": "^0.1.5-rc.2",
36
- "@lmzhen/dsh-evolution-io": "^0.3.79",
37
- "@lmzhen/dsh-evolution-state": "^0.3.79"
36
+ "@lmzhen/dsh-evolution-io": "^0.3.80",
37
+ "@lmzhen/dsh-evolution-state": "^0.3.80"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@deepseek-ai/dsh-llm": "^0.1.5-rc.2",
41
41
  "@deepseek-ai/dsh-session": "^0.1.5-rc.2",
42
- "@lmzhen/dsh-evolution-core": "^0.3.79",
43
- "@lmzhen/dsh-evolution-io": "^0.3.79",
44
- "@lmzhen/dsh-evolution-state": "^0.3.79"
42
+ "@lmzhen/dsh-evolution-core": "^0.3.80",
43
+ "@lmzhen/dsh-evolution-io": "^0.3.80",
44
+ "@lmzhen/dsh-evolution-state": "^0.3.80"
45
45
  }
46
46
  }