@lmzhen/dsh-evolution-core 0.28.0 → 0.29.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/lib/index.js CHANGED
@@ -7057,7 +7057,7 @@ function renderLongRunTable() {
7057
7057
  * `client` probes run in the browser half, where the host has no view of the seats.
7058
7058
  * @module @lmzhen/dsh-evolution-core
7059
7059
  */
7060
- /** The 25 probes, in service-name order (the guard checks this list against the tree). */
7060
+ /** The 26 probes, in service-name order (the guard checks this list against the tree). */
7061
7061
  const PLATFORM_SERVICE_PROBES = Object.freeze([
7062
7062
  {
7063
7063
  service: "agents",
@@ -7104,6 +7104,11 @@ const PLATFORM_SERVICE_PROBES = Object.freeze([
7104
7104
  feature: "the memory-budget divergence section of this report",
7105
7105
  side: "host"
7106
7106
  },
7107
+ {
7108
+ service: "evolutionMerge",
7109
+ feature: "the merge command and its read-only panel routes",
7110
+ side: "host"
7111
+ },
7107
7112
  {
7108
7113
  service: "evolutionPolicy",
7109
7114
  feature: "the policy snapshot that shadows row knobs",
@@ -11881,6 +11886,12 @@ var SkillLibrary = class {
11881
11886
  * @returns the expired entry names ([] when the backend has no mtime probe,
11882
11887
  * because an unknown age must never read as expired).
11883
11888
  */
11889
+ /** Names currently in .archive, for target occupancy; unknown listing is null. */
11890
+ async archivedNames() {
11891
+ const listed = await probeList(this.io, join(this.root, ".archive"));
11892
+ if (isUnknown(listed)) return null;
11893
+ return isPresent(listed) ? listed.value.slice() : [];
11894
+ }
11884
11895
  async expiredArchives() {
11885
11896
  const archiveRoot = join(this.root, ".archive");
11886
11897
  const listed = await probeList(this.io, archiveRoot);
@@ -14031,6 +14042,17 @@ const PARAM_EXPOSURE = Object.freeze([
14031
14042
  docAnchor: "PARAMETERS.md#merge",
14032
14043
  summary: "Wall-clock budget of one pair round (a stuck child guard).",
14033
14044
  why: "internal"
14045
+ },
14046
+ {
14047
+ id: "mergeModelsRoot",
14048
+ group: "merge",
14049
+ tier: "E2",
14050
+ authority: "cordis",
14051
+ owner: "evolution-merge",
14052
+ applies: "none",
14053
+ docAnchor: "PARAMETERS.md#merge",
14054
+ summary: "Local model root containing the int8 and pca64 model directories; empty falls back to SKILL_MERGE_MODELS_ROOT. No auto provisioning.",
14055
+ why: "path"
14034
14056
  }
14035
14057
  ]);
14036
14058
  /** The settings namespace each OWNER PACKAGE registers (design §7.2).
@@ -208,6 +208,7 @@ export const PARAM_EXPOSURE = Object.freeze([
208
208
  { id: 'mergeSkippedTtlDays', group: 'merge', tier: 'E3', authority: 'cordis', owner: 'evolution-merge', applies: 'live', docAnchor: 'PARAMETERS.md#merge', summary: 'Days a skipped pair stays out of screening; 0 means it never expires.', label: '无需合并保留天数', hint: '判定无需合并的对,多少天内不再参与筛选;0 表示一直保留。', control: 'number', unit: '天', values: '', card: 'evolution-merge' },
209
209
  { id: 'mergeRunTimeoutMinutes', group: 'merge', tier: 'E3', authority: 'cordis', owner: 'evolution-merge', applies: 'live', docAnchor: 'PARAMETERS.md#merge', summary: 'Wall-clock budget of one merge run; 0 means no limit.', label: '单次运行上限', hint: '一次合并运行最多持续多少分钟;0 表示不设上限。', control: 'number', unit: '分钟', values: '', card: 'evolution-merge' },
210
210
  { id: 'mergePairTimeoutMinutes', group: 'merge', tier: 'E2', authority: 'cordis', owner: 'evolution-merge', applies: 'none', docAnchor: 'PARAMETERS.md#merge', summary: 'Wall-clock budget of one pair round (a stuck child guard).', why: 'internal' },
211
+ { id: 'mergeModelsRoot', group: 'merge', tier: 'E2', authority: 'cordis', owner: 'evolution-merge', applies: 'none', docAnchor: 'PARAMETERS.md#merge', summary: 'Local model root containing the int8 and pca64 model directories; empty falls back to SKILL_MERGE_MODELS_ROOT. No auto provisioning.', why: 'path' },
211
212
  ]);
212
213
  /** The settings namespace each OWNER PACKAGE registers (design §7.2).
213
214
  *
@@ -20,7 +20,7 @@ export interface PlatformServiceProbe {
20
20
  /** Where the probe runs. */
21
21
  readonly side: 'host' | 'client';
22
22
  }
23
- /** The 25 probes, in service-name order (the guard checks this list against the tree). */
23
+ /** The 26 probes, in service-name order (the guard checks this list against the tree). */
24
24
  export declare const PLATFORM_SERVICE_PROBES: readonly PlatformServiceProbe[];
25
25
  /**
26
26
  * The HOST-side probes that do not resolve in this runtime — what `/evolution doctor` prints as
@@ -11,7 +11,7 @@
11
11
  * `client` probes run in the browser half, where the host has no view of the seats.
12
12
  * @module @lmzhen/dsh-evolution-core
13
13
  */
14
- /** The 25 probes, in service-name order (the guard checks this list against the tree). */
14
+ /** The 26 probes, in service-name order (the guard checks this list against the tree). */
15
15
  export const PLATFORM_SERVICE_PROBES = Object.freeze([
16
16
  { service: 'agents', feature: 'review and curator subagent wake-ups', side: 'host' },
17
17
  { service: 'approval', feature: 'the platform approval policy the approval row shadows', side: 'host' },
@@ -22,6 +22,7 @@ export const PLATFORM_SERVICE_PROBES = Object.freeze([
22
22
  { service: 'evolutionIo', feature: 'every durable read and write (the IO seam)', side: 'host' },
23
23
  { service: 'hmr', feature: 'the preset install read-merge-write commit (the platform HMR lock serializes it)', side: 'host' },
24
24
  { service: 'evolutionMemoryBudget', feature: 'the memory-budget divergence section of this report', side: 'host' },
25
+ { service: 'evolutionMerge', feature: 'the merge command and its read-only panel routes', side: 'host' },
25
26
  { service: 'evolutionPolicy', feature: 'the policy snapshot that shadows row knobs', side: 'host' },
26
27
  { service: 'evolutionReplay', feature: '/evolution replay', side: 'host' },
27
28
  { service: 'evolutionState', feature: 'the state facade behind activity and replay', side: 'host' },
@@ -667,6 +667,8 @@ export declare class SkillLibrary {
667
667
  * @returns the expired entry names ([] when the backend has no mtime probe,
668
668
  * because an unknown age must never read as expired).
669
669
  */
670
+ /** Names currently in .archive, for target occupancy; unknown listing is null. */
671
+ archivedNames(): Promise<string[] | null>;
670
672
  expiredArchives(): Promise<string[] | null>;
671
673
  /** V4 (design §16.6): support-file char policy, resolved at the call site. */
672
674
  supportFileCharPolicy(): 'report' | 'enforce';
@@ -3094,6 +3094,13 @@ export class SkillLibrary {
3094
3094
  * @returns the expired entry names ([] when the backend has no mtime probe,
3095
3095
  * because an unknown age must never read as expired).
3096
3096
  */
3097
+ /** Names currently in .archive, for target occupancy; unknown listing is null. */
3098
+ async archivedNames() {
3099
+ const listed = await probeList(this.io, join(this.root, '.archive'));
3100
+ if (isUnknown(listed))
3101
+ return null;
3102
+ return isPresent(listed) ? listed.value.slice() : [];
3103
+ }
3097
3104
  async expiredArchives() {
3098
3105
  const archiveRoot = join(this.root, '.archive');
3099
3106
  // Three-state read (N14), the same helper every other listing uses: a
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lmzhen/dsh-evolution-core",
3
3
  "description": "Shared stores, prompts, signals and lifecycle logic for the dsh-evolution plugin family (community build)",
4
- "version": "0.28.0",
4
+ "version": "0.29.0",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },