@lmzhen/dsh-evolution-curator 0.6.1 → 0.8.0
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 +2 -2
- package/lib/index.js +3 -5
- package/lib/types/index.d.ts +0 -2
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -24,11 +24,11 @@ Deterministic skill lifecycle and recovery
|
|
|
24
24
|
|
|
25
25
|
## Configuration
|
|
26
26
|
|
|
27
|
-
- `autoStart` (default true) arms an HOURLY tick that only asks whether the due-ness interval (`
|
|
27
|
+
- `autoStart` (default true) arms an HOURLY tick that only asks whether the due-ness interval (`curatorIntervalHours`, default 168 h) has elapsed — the tick is not the interval — plus a deferred catch-up check `bootGraceSeconds` (default 10) after host boot. Both decide due-ness from the **persisted** `lastRunAt`, so a restart with an overdue schedule runs the first pass within the boot grace instead of waiting a full interval. `bootGraceSeconds: 0` disables the deferral (not recommended: the check may run against a half-mounted host). All scheduling gates — interval, idle, first-run deferral, and the reentrancy guard — remain inside `run()`.
|
|
28
28
|
- `autoStart: false` disables both automatic checks; `/evolution curator run` (manual, gate-skipping) still works.
|
|
29
29
|
- Deprecated name (G0/S0.3): `intervalHours` is the legacy spelling of the policy
|
|
30
30
|
row's `curatorIntervalHours`, whose value the snapshot shadows. Reading it still
|
|
31
|
-
works; writing it is refused
|
|
31
|
+
works; writing it is refused. Removal was planned for 0.7.0 and is deferred: the alias still ships, so no later version is claimed here.
|
|
32
32
|
|
|
33
33
|
**Runtime invariant:** No companion is published. The platform auto-assembles nothing and the family mounts no `<pkg>/invariant` cordis row, so a companion here would never execute (v37 S2.1 / I-3).
|
|
34
34
|
## Notes and history
|
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_BOOT_GRACE_SECONDS, DEFAULT_CURATOR_INTERVAL_HOURS, DEFAULT_CURATOR_MODEL, DEFAULT_CURATOR_REVIEW_MAX_TOKENS, DEFAULT_HEALTH_THRESHOLDS, DEFAULT_MIN_IDLE_HOURS, DEFAULT_SKILL_LIMITS, DEFAULT_STALE_AFTER_DAYS, EvolutionGateSet, INSTANCE_KEYS, MAX_TIMER_DELAY_MS,
|
|
6
|
+
import { CURATOR_DRY_RUN_BANNER, CURATOR_PROMPT, DEFAULT_ARCHIVE_AFTER_DAYS, DEFAULT_CURATOR_BOOT_GRACE_SECONDS, DEFAULT_CURATOR_INTERVAL_HOURS, DEFAULT_CURATOR_MODEL, DEFAULT_CURATOR_REVIEW_MAX_TOKENS, DEFAULT_HEALTH_THRESHOLDS, DEFAULT_MIN_IDLE_HOURS, DEFAULT_SKILL_LIMITS, DEFAULT_STALE_AFTER_DAYS, EvolutionGateSet, INSTANCE_KEYS, MAX_TIMER_DELAY_MS, SKILL_NAME_RE, buildCuratorRunReport, claimInstance, clampedNumber, computeDedupGroups, computeLifecycleTransitions, computePrefixClusters, computeQualityScores, computeScopeView, emptyRecord, evolutionHome, evolutionIoAdapter, foldCuratorFields, installParamSection, isPresent, isUnknown, loadSuppressedNames, loadUsage, markerEntryName, mutateUsage, newSkillLibrary, paramNamespace, parseCuratorNominations, parseFrontmatter, policyStageLimits, probeList, probeMtime, readNumberParam, relatedSkillNames, releaseInstance, renderCuratorReportMarkdown, transactIo, 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.
|
|
@@ -17,8 +17,6 @@ const DEFAULT_QUALITY_WARN_STALE_AFTER_DAYS = 7;
|
|
|
17
17
|
* 120s matches the review subagent default; the 32-bit ceiling is Node's
|
|
18
18
|
* timer-delay limit (`AbortSignal.timeout` throws above it). */
|
|
19
19
|
const DEFAULT_CURATOR_REVIEW_TIMEOUT_MS = 12e4;
|
|
20
|
-
/** Namespace the curator group's user-writable knobs live in (core's PARAM_NAMESPACES). */
|
|
21
|
-
const CURATOR_SETTINGS_NAMESPACE = "evolution-curator";
|
|
22
20
|
/** Schema the platform validates the user layer against; defaults mirror the core
|
|
23
21
|
* constants and the bounds mirror the row schema, so an empty document resolves to
|
|
24
22
|
* today's behaviour and an out-of-range value is refused instead of clamped. */
|
|
@@ -201,7 +199,7 @@ var EvolutionCurator = class extends Service {
|
|
|
201
199
|
healthStampDensityPerKb: this.healthStampDensityPerKb,
|
|
202
200
|
healthChurnMinPatches: this.healthChurnMinPatches
|
|
203
201
|
};
|
|
204
|
-
this.overrides = installParamSection(ctx,
|
|
202
|
+
this.overrides = installParamSection(ctx, paramNamespace("evolution-curator"), CURATOR_SETTINGS_SCHEMA, this.settingsBase, {
|
|
205
203
|
warn: (message) => {
|
|
206
204
|
this.ctx.logger.warn("dsh-evolution-curator: " + message);
|
|
207
205
|
},
|
|
@@ -1336,4 +1334,4 @@ function reportsSweepLockTarget() {
|
|
|
1336
1334
|
return join(evolutionHome(), "reports", ".retention");
|
|
1337
1335
|
}
|
|
1338
1336
|
//#endregion
|
|
1339
|
-
export {
|
|
1337
|
+
export { CURATOR_SETTINGS_SCHEMA, EvolutionCurator, EvolutionCurator as default, gateConsolidations, validateCuratorSettings };
|
package/lib/types/index.d.ts
CHANGED
|
@@ -61,8 +61,6 @@ export interface Config {
|
|
|
61
61
|
/** Structure-health write-ghost floor: patches at/above with zero reads (A2). */
|
|
62
62
|
healthChurnMinPatches?: number;
|
|
63
63
|
}
|
|
64
|
-
/** Namespace the curator group's user-writable knobs live in (core's PARAM_NAMESPACES). */
|
|
65
|
-
export declare const CURATOR_SETTINGS_NAMESPACE = "evolution-curator";
|
|
66
64
|
/** Curator behaviour a user may change (G3/S3.3). Field names are the CANONICAL
|
|
67
65
|
* parameter ids from the registry, so the settings document, the params output,
|
|
68
66
|
* the doctor report and the cards all spell one name. */
|
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.
|
|
4
|
+
"version": "0.8.0",
|
|
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.
|
|
30
|
+
"@lmzhen/dsh-evolution-core": "^0.8.0"
|
|
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.
|
|
37
|
-
"@lmzhen/dsh-evolution-state": "^0.
|
|
36
|
+
"@lmzhen/dsh-evolution-io": "^0.8.0",
|
|
37
|
+
"@lmzhen/dsh-evolution-state": "^0.8.0"
|
|
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.
|
|
43
|
-
"@lmzhen/dsh-evolution-io": "^0.
|
|
44
|
-
"@lmzhen/dsh-evolution-state": "^0.
|
|
42
|
+
"@lmzhen/dsh-evolution-core": "^0.8.0",
|
|
43
|
+
"@lmzhen/dsh-evolution-io": "^0.8.0",
|
|
44
|
+
"@lmzhen/dsh-evolution-state": "^0.8.0"
|
|
45
45
|
}
|
|
46
46
|
}
|