@numa-tech/numa 1.26.10 → 1.26.12

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
@@ -1448,7 +1448,7 @@ Numa 会清理项目更名前旧版本写入的自定义 `model_provider = "mcex
1448
1448
  ```bash
1449
1449
  numa codex list --server https://code-inbox.mcisaas.com/api --tenant-id numa-realm
1450
1450
  export NUMA_CODEX_SERVICE_URL=https://code-inbox.mcisaas.com/api
1451
- numa config --set profileUrl=https://code-inbox.mcisaas.com/public/v1/tenants/numa-realm/client-configuration
1451
+ numa config --set profileUrl=https://apps-gw-prd.mcisaas.com/mci-devops-platform/public/v1/client-configurations/numa-realm
1452
1452
  numa config --set apiBaseUrl=https://apps-gw-prd.mcisaas.com/mci-devops-platform
1453
1453
  ```
1454
1454
 
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import type { AiRegistryClient } from "./client.js";
3
+ import { AiRegistryError } from "./errors.js";
3
4
  import { type SkillInstallOptions } from "./skill-installer.js";
4
5
  export declare const SkillDependencySchema: z.ZodObject<{
5
6
  name: z.ZodString;
@@ -15,6 +16,13 @@ export declare const SkillBundleSchema: z.ZodObject<{
15
16
  }, z.core.$strict>>>;
16
17
  }, z.core.$strict>;
17
18
  export type SkillDependency = z.infer<typeof SkillDependencySchema>;
19
+ export interface SkillDependencyConsumer {
20
+ name: string;
21
+ version: string;
22
+ path: string;
23
+ requiredVersion: string;
24
+ }
25
+ export declare function dependencyVersionConflict(name: string, targetVersion: string, consumers: SkillDependencyConsumer[]): AiRegistryError;
18
26
  export declare const SkillDependencyChangeSchema: z.ZodObject<{
19
27
  name: z.ZodString;
20
28
  from: z.ZodOptional<z.ZodString>;
@@ -11,6 +11,9 @@ const version = z.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/);
11
11
  export const SkillDependencySchema = z.object({ name, version }).strict();
12
12
  export const SkillBundleSchema = z.object({ schemaVersion: z.literal(1), name, version,
13
13
  dependencies: z.array(SkillDependencySchema).max(16).default([]) }).strict();
14
+ export function dependencyVersionConflict(name, targetVersion, consumers) {
15
+ return new AiRegistryError(`Cannot update ${name}@${targetVersion}: ${consumers.map(c => `${c.name}@${c.version} requires ${name}@${c.requiredVersion}`).join("; ")}.`, "skills_dependency_version_conflict", undefined, undefined, { dependencyConflict: { name, targetVersion, consumers } });
16
+ }
14
17
  export const SkillDependencyChangeSchema = z.object({ name, from: version.optional(), to: version.optional() });
15
18
  export async function readSkillBundle(bytes, expected) {
16
19
  const raw = await readSkillBundleMetadata(bytes);
@@ -150,10 +153,16 @@ export async function assertInstalledDependencies(bytes, installedPath, source,
150
153
  }
151
154
  export async function assertConsumersCompatible(name, nextVersion, installedPath, directory, approvedConsumers, includeUnmanaged = false) {
152
155
  const records = [...(await readSkillUpdates(directory)).installations];
156
+ const conflicts = [];
153
157
  if (includeUnmanaged) {
154
158
  const root = await canonicalPath(dirname(installedPath));
155
159
  const known = new Set(await Promise.all(records.map(r => canonicalPath(r.path))));
156
- for (const entry of await readdir(root, { withFileTypes: true })) {
160
+ const entries = await readdir(root, { withFileTypes: true }).catch((error) => {
161
+ if (error.code === "ENOENT")
162
+ return [];
163
+ throw error;
164
+ });
165
+ for (const entry of entries) {
157
166
  if (entry.name.startsWith(".") || (!entry.isDirectory() && !entry.isSymbolicLink()))
158
167
  continue;
159
168
  const path = join(root, entry.name);
@@ -180,8 +189,10 @@ export async function assertConsumersCompatible(name, nextVersion, installedPath
180
189
  const bundle = SkillBundleSchema.parse(JSON.parse(raw));
181
190
  const dep = (approvedConsumers?.get(await canonicalPath(r.path)) ?? bundle.dependencies).find(d => d.name === name);
182
191
  if (dep && dep.version !== nextVersion)
183
- throw new AiRegistryError(`Installed ${r.name} requires ${name}@${dep.version}; updating it independently would break that dependency.`, "skills_dependency_version_conflict");
192
+ conflicts.push({ name: r.name, version: bundle.version, path: r.path, requiredVersion: dep.version });
184
193
  }
194
+ if (conflicts.length)
195
+ throw dependencyVersionConflict(name, nextVersion, conflicts);
185
196
  }
186
197
  export async function confirmSkillDependencies(plan, options, ask) {
187
198
  if (options.confirmed)
@@ -1 +1 @@
1
- {"version":3,"file":"skill-dependencies.js","sourceRoot":"","sources":["../../src/ai-registry/skill-dependencies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-dependencies.js","sourceRoot":"","sources":["../../src/ai-registry/skill-dependencies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AiRegistryClient } from "./client.js";
2
+ import { type SkillUpdateInstallationResult, type SkillUpdateRecord, type SkillUpdateRunOptions } from "./updates.js";
3
+ type Client = Pick<AiRegistryClient, "getCapabilities" | "resolveNamespace" | "getSkill" | "downloadSkill">;
4
+ /** Freeze all latest choices before writes; only connected installations share a transaction. */
5
+ export declare function updateInstalledSkillBatch(records: SkillUpdateRecord[], clientFor: (signal: AbortSignal) => Client, directory: string | undefined, options: SkillUpdateRunOptions): Promise<{
6
+ ok: boolean;
7
+ installations: SkillUpdateInstallationResult[];
8
+ }>;
9
+ export {};
@@ -0,0 +1,258 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { AiRegistryError } from "./errors.js";
4
+ import { resolveRegistryNamespace } from "./namespace.js";
5
+ import { skillDirectoryDigest, skillArchiveContentDigest } from "./skill-installer.js";
6
+ import { assertUnchangedDependencies, canonicalPath, dependencyVersionConflict, resolveSkillDependencies, SkillBundleSchema } from "./skill-dependencies.js";
7
+ import { applySkillUpdate, prepareSkillGraph } from "./update-plan.js";
8
+ import { newerVersion, publishedLatest, readSkillUpdates, reportProgress, skillUpdatePlanCommand, verifyDownload } from "./updates.js";
9
+ function fail(candidate, error) {
10
+ candidate.result.status = "FAILED";
11
+ candidate.result.code = error instanceof AiRegistryError ? error.code : "skills_update_local_or_network_unavailable";
12
+ if (error instanceof AiRegistryError)
13
+ candidate.result.details = error.details;
14
+ }
15
+ /** Freeze all latest choices before writes; only connected installations share a transaction. */
16
+ export async function updateInstalledSkillBatch(records, clientFor, directory, options) {
17
+ reportProgress(options, { type: "start", total: records.length });
18
+ const candidates = [];
19
+ const clients = batchClientCache(clientFor);
20
+ for (const record of records) {
21
+ options.signal?.throwIfAborted();
22
+ const root = await canonicalPath(dirname(record.path));
23
+ const candidate = { record, root, paths: new Set([join(root, record.name)]), changes: [],
24
+ result: { id: record.id, name: record.name, agent: record.agent, path: record.path, namespace: record.namespace,
25
+ instance: record.instance, previousVersion: record.version, version: record.version,
26
+ status: "CURRENT", code: "skills_update_current" } };
27
+ candidates.push(candidate);
28
+ const stage = (value) => reportProgress(options, { type: "stage", installation: record, stage: value,
29
+ ...(value === "downloading" || value === "verifying" ? { latestVersion: candidate.result.latestVersion } : {}) });
30
+ try {
31
+ stage("waiting");
32
+ stage("checking-local");
33
+ const raw = await readFile(join(record.path, "numa-skill.json"), "utf8").catch((error) => {
34
+ if (error.code === "ENOENT")
35
+ return undefined;
36
+ throw error;
37
+ });
38
+ if (raw)
39
+ for (const dep of SkillBundleSchema.parse(JSON.parse(raw)).dependencies)
40
+ candidate.paths.add(join(root, dep.name));
41
+ if (await skillDirectoryDigest(record.path) !== record.contentDigest) {
42
+ throw new AiRegistryError("Local changes preserved.", "skills_update_local_conflict");
43
+ }
44
+ const signal = AbortSignal.any([AbortSignal.timeout(60_000), ...(options.signal ? [options.signal] : [])]);
45
+ const client = clients(record, signal);
46
+ candidate.client = client;
47
+ stage("checking-latest");
48
+ const context = await resolveRegistryNamespace(client, { namespace: record.namespace, instance: record.instance, requiredAction: "install" });
49
+ if (context.namespace.id !== record.namespaceId || context.namespace.instanceId !== record.instanceId) {
50
+ throw new AiRegistryError("Namespace binding changed.", "skills_update_source_changed");
51
+ }
52
+ const version = publishedLatest(await client.getSkill(record.namespaceId, record.name), record.name);
53
+ candidate.result.latestVersion = version;
54
+ if (version === record.version && !options.plan)
55
+ continue;
56
+ if (version !== record.version && !newerVersion(version, record.version)) {
57
+ throw new AiRegistryError("Latest moved backwards.", "skills_update_downgrade_blocked");
58
+ }
59
+ stage("downloading");
60
+ const download = await client.downloadSkill(record.namespaceId, record.name, { version });
61
+ signal.throwIfAborted();
62
+ verifyDownload(download, version);
63
+ stage("verifying");
64
+ try {
65
+ await assertUnchangedDependencies(download.bytes, record.path);
66
+ }
67
+ catch (error) {
68
+ if (!(error instanceof AiRegistryError) || error.code !== "skills_dependency_confirmation_required")
69
+ throw error;
70
+ candidate.changes = error.details.dependencyChanges;
71
+ candidate.result.dependencyChanges = candidate.changes;
72
+ }
73
+ candidate.nodes = await resolveSkillDependencies(client, record.namespaceId, { name: record.name, version, download, dependencies: [] });
74
+ signal.throwIfAborted();
75
+ for (const node of candidate.nodes)
76
+ candidate.paths.add(join(root, node.name));
77
+ candidate.result.planCommand = skillUpdatePlanCommand(record);
78
+ }
79
+ catch (error) {
80
+ options.signal?.throwIfAborted();
81
+ fail(candidate, error);
82
+ }
83
+ }
84
+ // Old and new edges both matter: a consumer removing a pin must be committed
85
+ // together with the dependency whose upgrade that removal permits.
86
+ const groups = [];
87
+ for (const candidate of candidates) {
88
+ const intersecting = groups.filter(group => group.some(other => other.root === candidate.root
89
+ && [...candidate.paths].some(path => other.paths.has(path))));
90
+ const merged = [candidate, ...intersecting.flat()];
91
+ for (const group of intersecting)
92
+ groups.splice(groups.indexOf(group), 1);
93
+ groups.push(merged);
94
+ }
95
+ const finish = (group) => {
96
+ for (const candidate of group)
97
+ reportProgress(options, { type: "result", installation: candidate.result });
98
+ };
99
+ for (const group of groups) {
100
+ group.sort((a, b) => records.indexOf(a.record) - records.indexOf(b.record));
101
+ options.signal?.throwIfAborted();
102
+ const active = group.filter(c => c.nodes);
103
+ if (!active.length) {
104
+ finish(group);
105
+ continue;
106
+ }
107
+ for (const candidate of active)
108
+ candidate.result.planCommand = skillUpdatePlanCommand(candidate.record, group.map(c => c.record.id));
109
+ const broken = group.find(c => c.result.status === "FAILED");
110
+ if (broken) {
111
+ for (const candidate of active)
112
+ if (candidate !== broken)
113
+ fail(candidate, new AiRegistryError("Another installation in this dependency group could not be verified.", "skills_update_dependency_group_blocked", undefined, undefined, { blockedBy: { name: broken.record.name, code: broken.result.code } }));
114
+ finish(group);
115
+ continue;
116
+ }
117
+ let prepared;
118
+ try {
119
+ const leader = active[0];
120
+ if (active.some(c => c.record.namespaceId !== leader.record.namespaceId || c.record.instanceId !== leader.record.instanceId
121
+ || c.record.namespace !== leader.record.namespace || c.record.instance !== leader.record.instance)) {
122
+ throw new AiRegistryError("A dependency group crosses source bindings.", "skills_update_source_changed");
123
+ }
124
+ const nodes = await mergeNodes(group);
125
+ const expected = new Map(group.map(c => [join(c.root, c.record.name), c.record]));
126
+ prepared = await prepareSkillGraph(leader.record, nodes, leader.client, directory, undefined, expected);
127
+ prepared.plan.name = active.map(c => c.record.name).join(", ");
128
+ if (active.length > 1)
129
+ prepared.plan.roots = active.map(c => ({ name: c.record.name, version: c.result.latestVersion, path: c.record.path }));
130
+ // One shared plan is shown once; per-root results still carry their exact versions.
131
+ for (const candidate of active)
132
+ candidate.result.plan = prepared.plan;
133
+ if (options.plan) {
134
+ for (const candidate of active) {
135
+ candidate.result.status = "PLANNED";
136
+ candidate.result.code = "skills_update_planned";
137
+ }
138
+ finish(group);
139
+ continue;
140
+ }
141
+ const consentRequired = active.some(c => c.changes.length)
142
+ || prepared.plan.packages.some(p => p.adopt || p.action !== "REUSE" && !expected.has(p.path));
143
+ if (consentRequired) {
144
+ const consent = options.withDependencies && (!prepared.plan.packages.some(p => p.adopt) || options.adoptDependencies)
145
+ || await options.confirmDependencies?.(prepared.plan);
146
+ options.signal?.throwIfAborted();
147
+ if (!consent) {
148
+ for (const candidate of active) {
149
+ candidate.result.status = "NEEDS_CONFIRMATION";
150
+ candidate.result.code = prepared.plan.packages.some(p => p.adopt) ? "skills_dependency_adoption_required" : "skills_dependency_confirmation_required";
151
+ }
152
+ finish(group);
153
+ continue;
154
+ }
155
+ }
156
+ const signal = AbortSignal.any([AbortSignal.timeout(60_000), ...(options.signal ? [options.signal] : [])]);
157
+ await applySkillUpdate(prepared, leader.record, directory, { ...options, signal });
158
+ const saved = await readSkillUpdates(directory);
159
+ for (const candidate of group) {
160
+ const updated = saved.installations.find(r => r.id === candidate.record.id);
161
+ candidate.result.version = updated.version;
162
+ if (updated.version !== candidate.record.version) {
163
+ candidate.result.status = "UPDATED";
164
+ candidate.result.code = "skills_updated_reload_agent";
165
+ candidate.result.backupPath = updated.backupPath;
166
+ reportProgress(options, { type: "stage", installation: candidate.record, stage: "recording", latestVersion: updated.version });
167
+ }
168
+ }
169
+ }
170
+ catch (error) {
171
+ options.signal?.throwIfAborted();
172
+ for (const candidate of active) {
173
+ // Rolled-back transactions have no successful backup result to display.
174
+ if (prepared)
175
+ for (const p of prepared.plan.packages)
176
+ delete p.backupPath;
177
+ fail(candidate, error);
178
+ }
179
+ }
180
+ finish(group);
181
+ }
182
+ const installations = candidates.map(c => c.result);
183
+ return { ok: installations.every(i => ["UPDATED", "CURRENT", "PLANNED"].includes(i.status)), installations };
184
+ }
185
+ /** Immutable versions are shared within one source; failed reads are not cached. */
186
+ function batchClientCache(clientFor) {
187
+ const metadata = new Map();
188
+ const downloads = new Map();
189
+ let downloadedBytes = 0;
190
+ function memo(cache, key, fetch) {
191
+ const existing = cache.get(key);
192
+ if (existing)
193
+ return existing;
194
+ const promise = fetch().catch(error => { cache.delete(key); throw error; });
195
+ cache.set(key, promise);
196
+ return promise;
197
+ }
198
+ return (record, signal) => {
199
+ const client = clientFor(signal);
200
+ const source = [record.namespace, record.instance, record.namespaceId, record.instanceId];
201
+ return {
202
+ getCapabilities: () => client.getCapabilities(),
203
+ resolveNamespace: (...args) => client.resolveNamespace(...args),
204
+ getSkill: (...args) => memo(metadata, JSON.stringify([source, args]), () => client.getSkill(...args)),
205
+ downloadSkill: (...args) => memo(downloads, JSON.stringify([source, args]), async () => {
206
+ const download = await client.downloadSkill(...args);
207
+ if (downloadedBytes + download.bytes.length > 100 * 1024 * 1024) {
208
+ throw new AiRegistryError("Batch downloads exceed 100 MiB.", "skills_dependency_limit");
209
+ }
210
+ downloadedBytes += download.bytes.length;
211
+ return download;
212
+ }),
213
+ };
214
+ };
215
+ }
216
+ async function mergeNodes(group) {
217
+ const nodes = new Map();
218
+ // Selected roots own their latest target; a dependency cannot silently lower it.
219
+ const targets = new Map(group.map(c => [c.record.name, c.result.latestVersion]));
220
+ for (const candidate of group)
221
+ for (const node of candidate.nodes ?? []) {
222
+ const previous = nodes.get(node.name);
223
+ const target = targets.get(node.name) ?? previous?.version ?? node.version;
224
+ if (node.version !== target) {
225
+ const consumers = group.flatMap(c => (c.nodes ?? []).flatMap(parent => parent.dependencies
226
+ .filter(dep => dep.name === node.name && dep.version !== target)
227
+ .map(dep => ({ name: parent.name, version: parent.version, path: join(c.root, parent.name), requiredVersion: dep.version }))));
228
+ throw dependencyVersionConflict(node.name, target, consumers);
229
+ }
230
+ if (previous && await skillArchiveContentDigest(previous.download.bytes) !== await skillArchiveContentDigest(node.download.bytes)) {
231
+ throw new AiRegistryError("Published content changed between downloads.", "skills_dependency_integrity_failed");
232
+ }
233
+ nodes.set(node.name, previous ?? node);
234
+ }
235
+ const result = [], visiting = new Set(), done = new Set();
236
+ function visit(name, depth = 0) {
237
+ if (depth > 8 || nodes.size > 32)
238
+ throw new AiRegistryError("Dependency group exceeds limits.", "skills_dependency_limit");
239
+ if (visiting.has(name))
240
+ throw new AiRegistryError("Cyclic dependency group.", "skills_dependency_cycle");
241
+ if (done.has(name))
242
+ return;
243
+ visiting.add(name);
244
+ const node = nodes.get(name);
245
+ for (const dep of node.dependencies)
246
+ visit(dep.name, depth + 1);
247
+ visiting.delete(name);
248
+ done.add(name);
249
+ result.push(node);
250
+ }
251
+ for (const name of nodes.keys())
252
+ visit(name);
253
+ if (result.reduce((sum, node) => sum + node.download.bytes.length, 0) > 100 * 1024 * 1024) {
254
+ throw new AiRegistryError("Dependency group downloads exceed 100 MiB.", "skills_dependency_limit");
255
+ }
256
+ return result;
257
+ }
258
+ //# sourceMappingURL=update-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-batch.js","sourceRoot":"","sources":["../../src/ai-registry/update-batch.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export function registerSkillUpdateCommands(skills, dependencies = {}) {
14
14
  .option("-n, --namespace <key>", "只更新指定 namespace 的已登记安装")
15
15
  .option("-i, --instance <id-or-code>", "只更新指定实例的已登记安装")
16
16
  .option("--installation-id <id>", "只更新 skills updates status 中的指定安装")
17
+ .option("--installation-ids <ids>", "联合更新指定安装 ID(逗号分隔);保持确认过的更新范围", value => value.split(",").map(id => id.trim()).filter(Boolean))
17
18
  .option("--plan", "只读预览完整依赖计划,不修改安装")
18
19
  .option("--with-dependencies", "确认安装/升级计划中的同来源精确版本依赖(非交互模式)")
19
20
  .option("--adopt-dependencies", "与 --with-dependencies 配合,确认接管内容与同来源已发布旧版本一致的未登记依赖")
@@ -25,7 +26,8 @@ export function registerSkillUpdateCommands(skills, dependencies = {}) {
25
26
  const ui = dependencies.ui ?? terminalUi;
26
27
  const interactive = useInteractive(options, false, json, dependencies.tty);
27
28
  const identity = await (dependencies.identity ?? requireIdentity)();
28
- let selection = { name, agent: options.agent, namespace: options.namespace, instance: options.instance, installationId: options.installationId };
29
+ let selection = { name, agent: options.agent, namespace: options.namespace, instance: options.instance, installationId: options.installationId,
30
+ installationIds: options.installationIds };
29
31
  if (interactive && !options.plan) {
30
32
  const approved = await chooseSkillUpdateScope(identity, selection, ui, dependencies.directory);
31
33
  if (!approved)
@@ -1 +1 @@
1
- {"version":3,"file":"update-commands.js","sourceRoot":"","sources":["../../src/ai-registry/update-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-commands.js","sourceRoot":"","sources":["../../src/ai-registry/update-commands.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,11 @@ export interface SkillUpdatePlan {
7
7
  agent: string;
8
8
  namespace: string;
9
9
  instance: string;
10
+ roots?: Array<{
11
+ name: string;
12
+ version: string;
13
+ path: string;
14
+ }>;
10
15
  packages: Array<{
11
16
  name: string;
12
17
  from?: string;
@@ -24,7 +29,7 @@ interface LegacyBaseline {
24
29
  contentDigest: string;
25
30
  archiveSha256: string;
26
31
  }
27
- interface PreparedPlan {
32
+ export interface PreparedPlan {
28
33
  plan: SkillUpdatePlan;
29
34
  nodes: SkillInstallNode[];
30
35
  records: Array<SkillUpdateRecord | undefined>;
@@ -34,7 +39,7 @@ interface PreparedPlan {
34
39
  /** Resolve a complete exact-version graph before asking for consent. No inventory or file writes. */
35
40
  export declare function prepareSkillUpdate(record: SkillUpdateRecord, client: Client, directory?: string): Promise<PreparedPlan>;
36
41
  /** Shared preflight for updates and install wizards, including verified legacy dependencies. */
37
- export declare function prepareSkillGraph(record: SkillUpdateRecord, nodes: SkillInstallNode[], client: Client, directory?: string, approvedRoot?: SkillInstallNode): Promise<PreparedPlan>;
42
+ export declare function prepareSkillGraph(record: SkillUpdateRecord, nodes: SkillInstallNode[], client: Client, directory?: string, approvedRoot?: SkillInstallNode, expectedRoots?: ReadonlyMap<string, SkillUpdateRecord>): Promise<PreparedPlan>;
38
43
  /** Commit the approved graph under the inventory lock; restore completed replacements on failure. */
39
44
  export declare function applySkillUpdate(prepared: PreparedPlan, root: SkillUpdateRecord, directory: string | undefined, options: SkillUpdateRunOptions): Promise<SkillUpdatePlan>;
40
45
  export {};
@@ -69,7 +69,7 @@ export async function prepareSkillUpdate(record, client, directory) {
69
69
  }
70
70
  }
71
71
  /** Shared preflight for updates and install wizards, including verified legacy dependencies. */
72
- export async function prepareSkillGraph(record, nodes, client, directory, approvedRoot) {
72
+ export async function prepareSkillGraph(record, nodes, client, directory, approvedRoot, expectedRoots) {
73
73
  const state = await readSkillUpdates(directory);
74
74
  const root = await canonicalPath(dirname(record.path));
75
75
  const plan = { name: record.name, agent: record.agent, namespace: record.namespace, instance: record.instance, packages: [] };
@@ -101,6 +101,10 @@ export async function prepareSkillGraph(record, nodes, client, directory, approv
101
101
  }
102
102
  if (node.name === record.name && (!old || old.id !== record.id || old.updatedAt !== record.updatedAt))
103
103
  throw fail("inventory_changed");
104
+ const expected = expectedRoots?.get(path);
105
+ if (expected && JSON.stringify(old) !== JSON.stringify(expected)) {
106
+ throw new AiRegistryError("Installation changed during planning.", "skills_update_inventory_changed");
107
+ }
104
108
  if (info && !old)
105
109
  legacy.set(path, await verifyLegacy(node, path, client, record.namespaceId));
106
110
  const baseline = old ?? legacy.get(path);
@@ -128,7 +132,7 @@ async function validateConsumers(plan, directory, approvedRoot) {
128
132
  if (approvedRoot && plan.packages.length)
129
133
  approved.set(join(dirname(plan.packages[0].path), approvedRoot.name), approvedRoot.dependencies);
130
134
  for (const p of plan.packages)
131
- await assertConsumersCompatible(p.name, p.version, p.path, directory, approved, plan.packages.some(item => item.adopt));
135
+ await assertConsumersCompatible(p.name, p.version, p.path, directory, approved, true);
132
136
  }
133
137
  /** Commit the approved graph under the inventory lock; restore completed replacements on failure. */
134
138
  export async function applySkillUpdate(prepared, root, directory, options) {
@@ -158,18 +162,19 @@ export async function applySkillUpdate(prepared, root, directory, options) {
158
162
  const baseline = before ?? legacy.get(p.path);
159
163
  const result = p.action === "REUSE"
160
164
  ? { agent: root.agent, scope: root.scope, skillName: node.name, installedPath: p.path, files: 0, expandedBytes: 0, contentDigest: baseline.contentDigest }
161
- : await installSkillArchive(node.download.bytes, { ...root, skillName: node.name,
165
+ : await installSkillArchive(node.download.bytes, { ...root, ...before, skillName: node.name,
162
166
  force: Boolean(baseline), maintenanceBackup: true, dependencyPlanVerified: true,
163
167
  expectedInstalledPath: p.path, expectedInstalledDigest: baseline?.contentDigest,
164
168
  onProgress: stage => { try {
165
- options.onProgress?.({ type: "stage", installation: { ...root, name: node.name, version: baseline?.version ?? "未安装" }, stage, latestVersion: node.version });
169
+ options.onProgress?.({ type: "stage", installation: { ...(before ?? root), name: node.name, version: baseline?.version ?? "未安装" }, stage, latestVersion: node.version });
166
170
  }
167
171
  catch { /* UI is best effort. */ } } });
168
172
  if (p.action !== "REUSE")
169
173
  done.push({ result, index: i });
170
- const updated = { ...(before ?? root), id: before?.id ?? maintenanceKey([root.identity, root.namespace, root.instance, p.path]),
171
- name: node.name, path: p.path, customRoot: root.agent === "custom" ? dirname(p.path) : root.customRoot,
172
- ...(root.workspace ? { workspace: resolve(root.workspace) } : {}), version: node.version, archiveSha256: node.download.sha256,
174
+ const owner = before ?? root;
175
+ const updated = { ...owner, id: before?.id ?? maintenanceKey([root.identity, root.namespace, root.instance, p.path]),
176
+ name: node.name, path: p.path, customRoot: owner.agent === "custom" ? dirname(p.path) : owner.customRoot,
177
+ ...(owner.workspace ? { workspace: resolve(owner.workspace) } : {}), version: node.version, archiveSha256: node.download.sha256,
173
178
  contentDigest: result.contentDigest, policy: before?.policy ?? "pinned", backupPath: result.backupPath,
174
179
  updatedAt: Date.now(), lastStatus: "skills_updated_reload_agent" };
175
180
  state.installations = state.installations.filter(r => r.path !== p.path);