@numa-tech/numa 1.26.1 → 1.26.3

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.
Files changed (39) hide show
  1. package/README.md +10 -9
  2. package/dist/ai-registry/skill-installer.d.ts +1 -0
  3. package/dist/ai-registry/skill-installer.js +10 -1
  4. package/dist/ai-registry/skill-installer.js.map +1 -1
  5. package/dist/ai-registry/update-commands.d.ts +10 -1
  6. package/dist/ai-registry/update-commands.js +47 -2
  7. package/dist/ai-registry/update-commands.js.map +1 -1
  8. package/dist/ai-registry/update-progress.d.ts +10 -0
  9. package/dist/ai-registry/update-progress.js +74 -0
  10. package/dist/ai-registry/update-progress.js.map +1 -0
  11. package/dist/ai-registry/updates.d.ts +42 -0
  12. package/dist/ai-registry/updates.js +67 -6
  13. package/dist/ai-registry/updates.js.map +1 -1
  14. package/dist/authorization/application-schemas.d.ts +0 -5
  15. package/dist/authorization/application-schemas.js +0 -7
  16. package/dist/authorization/application-schemas.js.map +1 -1
  17. package/dist/authorization/commands.js +0 -2
  18. package/dist/authorization/commands.js.map +1 -1
  19. package/dist/cli.js +0 -7
  20. package/dist/cli.js.map +1 -1
  21. package/dist/command-catalog.js +7 -0
  22. package/dist/command-catalog.js.map +1 -1
  23. package/dist/server.js +1 -5
  24. package/dist/server.js.map +1 -1
  25. package/dist/web-console.js +3 -14
  26. package/dist/web-console.js.map +1 -1
  27. package/docs/application-explicit-access.md +13 -0
  28. package/docs/module-maintenance-and-skills-updates.md +31 -0
  29. package/package.json +5 -5
  30. package/dist/authorization/enrollment-client.d.ts +0 -40
  31. package/dist/authorization/enrollment-client.js +0 -56
  32. package/dist/authorization/enrollment-client.js.map +0 -1
  33. package/dist/authorization/enrollment-commands.d.ts +0 -5
  34. package/dist/authorization/enrollment-commands.js +0 -30
  35. package/dist/authorization/enrollment-commands.js.map +0 -1
  36. package/dist/authorization/enrollment.d.ts +0 -14
  37. package/dist/authorization/enrollment.js +0 -83
  38. package/dist/authorization/enrollment.js.map +0 -1
  39. package/docs/application-default-groups.md +0 -109
package/README.md CHANGED
@@ -40,17 +40,11 @@ numa notion page create --grant 41 --file page.json --json
40
40
 
41
41
  Jev 企业接入已开始实施:定制 Skill 指导 Agent 调用平台原生 MCP,平台统一授权并经指定代理访问 OpenRouter。终端 Agent、ChatGPT 和 K8s Agent 的接口、身份及验收边界见 [Jev 详细设计](docs/design/jev-integration.md),源码包见 [numa-jev Skill](skills/numa-jev/SKILL.md) 和 [应用示例](examples/jev/README.md)。当前是未发布源码;ChatGPT 远程 OAuth 仍按设计待实施,Skill 安装不等于 MCP 已连接。
42
42
 
43
- ## 应用默认组
43
+ ## 显式用户授权
44
44
 
45
- 支持该 API 的 DevOps 后端部署后,普通用户 CLI 登录成功会显式初始化本人应用成员资格和默认组;不是给全部 realm 用户授权。`auth status` 和以下 status 命令均只读,机器及已暂停/撤销成员不自动入组:
45
+ 登录只建立认证会话,不自动入组或授予角色。管理员在 DevOps 的 Realm 用户组、用户授权入口管理成员与 Client 角色;应用只是可选筛选条件,没有登记应用的 Client 也可以选择。
46
46
 
47
- ```sh
48
- numa authorization enrollment status --json
49
- numa authorization enrollment initialize --json
50
- numa authorization application --app 42 identity sources --json
51
- ```
52
-
53
- 管理员现在通过 `authorization application --app <id>` 管理完整定义、环境、Client/Group 草稿、关系、统一发布及凭证。旧独立 role/group 命令已删除;save 仅保存草稿,freeze 后显式 plan → prepare → apply 一个阶段。普通用户 enrollment 和 access-request 保留。完整流程见 [应用授权指南](docs/application-default-groups.md)。这是 API 与 CLI 协同的破坏性升级,尚未发布到 npm 或部署生产。
47
+ `authorization enrollment` 与登录后的 `/api/v1/me/enrollment` 调用已移除。已有 Keycloak 组、成员与角色保持不变。Client 草稿不再接受默认组或登录信任字段。详见[显式授权迁移说明](docs/application-explicit-access.md)。
54
48
 
55
49
  ## 环境与安装
56
50
 
@@ -592,6 +586,13 @@ numa maintenance status --json
592
586
  numa maintenance run --force --json
593
587
  ```
594
588
 
589
+ 已安装的用户级 Skill 可用 `numa skills update <name>` 比较版本并一次性升级到已发布的
590
+ `latest`;省略名称检查当前身份的全部受管用户级安装,可加 `--agent claude` 或
591
+ `--installation-id <id>` 筛选。相同版本跳过,升级前备份,保留本地修改及原自动更新设置。
592
+ 项目级安装仍使用 `registry upgrade`;旧安装需先按下文接管。
593
+ 文本模式使用 TUI 进度条实时显示当前 Skill、版本与更新阶段,结束汇总结果;非终端使用
594
+ 逐行进度。进度写入 stderr,`--json` 保持单个完整报告且不显示进度动画。
595
+
595
596
  自动升级只接受已发布的稳定 `latest`,保留修改过的文件和恢复备份;项目安装、固定版本和
596
597
  平台 Bootstrap 的固定版本默认不跟随全局开关。更新不会刷新 Agent 当前会话,需重新加载。
597
598
  已有旧版安装需使用 `skills updates adopt --workspace <原安装项目>` 核对接管,或显式重新安装。
@@ -14,6 +14,7 @@ export interface SkillInstallOptions {
14
14
  expectedInstalledPath?: string;
15
15
  /** Keep automatic-update backups outside the live Skills discovery directory. */
16
16
  maintenanceBackup?: boolean;
17
+ onProgress?: (stage: "extracting" | "backing-up" | "replacing") => void;
17
18
  }
18
19
  export interface SkillInstallResult {
19
20
  agent: SkillAgentTarget;
@@ -62,6 +62,12 @@ export async function installSkillArchive(archive, options) {
62
62
  return withTokenFileLock(join(root, `.numa-install-${skillName}`), () => installSkillArchiveLocked(archive, options), { timeoutMilliseconds: 1_000 });
63
63
  }
64
64
  async function installSkillArchiveLocked(archive, options) {
65
+ const progress = (stage) => {
66
+ try {
67
+ options.onProgress?.(stage);
68
+ }
69
+ catch { /* Never interrupt replacement for a UI failure. */ }
70
+ };
65
71
  const bundle = await (await import("./skill-dependencies.js")).readSkillBundle(archive);
66
72
  if (bundle?.dependencies.length && !options.dependencyPlanVerified) {
67
73
  throw new AiRegistryError("This Skill requires a verified dependency plan; use skills install --plan first.", "skills_dependency_confirmation_required");
@@ -95,7 +101,7 @@ async function installSkillArchiveLocked(archive, options) {
95
101
  throw new AiRegistryError("Refusing to replace a symbolic-link Skill target.", "ai_registry_install_target_invalid");
96
102
  }
97
103
  if (existing && !options.force) {
98
- throw new AiRegistryError(`Skill already exists at ${destination}; pass --force to replace it with a recoverable backup.`, "ai_registry_install_exists");
104
+ throw new AiRegistryError(`Skill already exists at ${destination}; use skills update ${skillName} for a managed user installation, or pass --force to replace it with a recoverable backup.`, "ai_registry_install_exists");
99
105
  }
100
106
  const stage = join(targetRoot, `.numa-stage-${skillName}-${randomBytes(6).toString("hex")}`);
101
107
  let backupRoot = targetRoot;
@@ -113,16 +119,19 @@ async function installSkillArchiveLocked(archive, options) {
113
119
  let movedExisting = false;
114
120
  let contentDigest;
115
121
  try {
122
+ progress("extracting");
116
123
  await extractArchive(archive, inspected.root, stage);
117
124
  contentDigest = await skillDirectoryDigest(stage);
118
125
  if (options.expectedInstalledDigest && await skillDirectoryDigest(destination) !== options.expectedInstalledDigest) {
119
126
  throw new AiRegistryError("Local Skill was modified; automatic update stopped.", "skills_update_local_conflict");
120
127
  }
121
128
  if (backup) {
129
+ progress("backing-up");
122
130
  await renameSkillDirectory(destination, backup);
123
131
  movedExisting = true;
124
132
  }
125
133
  try {
134
+ progress("replacing");
126
135
  await renameSkillDirectory(stage, destination);
127
136
  }
128
137
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"skill-installer.js","sourceRoot":"","sources":["../../src/ai-registry/skill-installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-installer.js","sourceRoot":"","sources":["../../src/ai-registry/skill-installer.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,11 @@
1
1
  import type { Command } from "commander";
2
- export declare function registerSkillUpdateCommands(skills: Command): void;
2
+ import { createSkillUpdateProgress } from "./update-progress.js";
3
+ import { updateInstalledSkills } from "./updates.js";
4
+ export declare function registerSkillUpdateCommands(skills: Command, dependencies?: {
5
+ identity?: typeof requireIdentity;
6
+ clientFor?: Parameters<typeof updateInstalledSkills>[1];
7
+ directory?: string;
8
+ progress?: typeof createSkillUpdateProgress;
9
+ }): void;
10
+ declare function requireIdentity(): Promise<string>;
11
+ export {};
@@ -1,9 +1,54 @@
1
+ import { loadAppConfig } from "../app-config.js";
1
2
  import { loadConfig } from "../config.js";
2
3
  import { maintenanceIdentity } from "../maintenance/identity.js";
3
4
  import { runMaintenance } from "../maintenance/scheduler.js";
4
5
  import { maintenanceRegistryClient } from "../maintenance/modules.js";
5
- import { adoptLockedUserSkills, createSkillUpdateTasks, readSkillUpdates, setSkillTracking, updateSkillPreferences } from "./updates.js";
6
- export function registerSkillUpdateCommands(skills) {
6
+ import { createSkillUpdateProgress } from "./update-progress.js";
7
+ import { adoptLockedUserSkills, createSkillUpdateTasks, readSkillUpdates, setSkillTracking, updateSkillPreferences, updateInstalledSkills } from "./updates.js";
8
+ export function registerSkillUpdateCommands(skills, dependencies = {}) {
9
+ skills.command("update [name]").description("一次性比较并升级已安装用户级 Skills 到已发布 latest;省略名称检查全部,不改变自动更新设置")
10
+ .option("-a, --agent <agent>", "只更新指定客户端的已登记安装")
11
+ .option("-n, --namespace <key>", "只更新指定 namespace 的已登记安装")
12
+ .option("-i, --instance <id-or-code>", "只更新指定实例的已登记安装")
13
+ .option("--installation-id <id>", "只更新 skills updates status 中的指定安装")
14
+ .addHelpText("after", "\nExamples:\n numa skills update\n numa skills update numa-cli --agent claude\n numa skills update --installation-id ID --json\n\n仅更新当前身份的受管用户级安装(包括 pinned/off);保留本地修改和备份。\n旧安装先用 skills updates adopt 接管;项目级安装使用 registry upgrade。\n")
15
+ .action(async (name, options, command) => {
16
+ const json = Boolean(command.optsWithGlobals().json || (await loadAppConfig()).output === "json");
17
+ const identity = await (dependencies.identity ?? requireIdentity)();
18
+ const controller = new AbortController();
19
+ const view = json ? undefined : (dependencies.progress ?? createSkillUpdateProgress)({
20
+ onCancel: () => controller.abort(new Error("Skills 更新已取消;已完成的更新与备份保留。")),
21
+ });
22
+ let result;
23
+ try {
24
+ result = await updateInstalledSkills(identity, dependencies.clientFor ?? maintenanceRegistryClient, { ...options, name }, dependencies.directory, { onProgress: view?.update, signal: controller.signal });
25
+ }
26
+ catch (error) {
27
+ view?.close(true);
28
+ throw error;
29
+ }
30
+ finally {
31
+ view?.close();
32
+ }
33
+ if (json) {
34
+ process.stdout.write(JSON.stringify(result, null, 2) + "\n");
35
+ }
36
+ else {
37
+ for (const item of result.installations) {
38
+ process.stdout.write(`${item.name} (${item.agent}) ${item.previousVersion} -> ${item.version}: ${item.status}\n ${item.path}\n`);
39
+ if (item.backupPath)
40
+ process.stdout.write(` 备份: ${item.backupPath}\n`);
41
+ if (item.status === "FAILED")
42
+ process.stdout.write(` ${item.code}\n`);
43
+ }
44
+ if (!result.installations.length)
45
+ process.stdout.write("当前身份没有已登记的用户级 Skill 安装;可用 skills updates status 查看,旧安装用 skills updates adopt 接管。\n");
46
+ if (result.installations.some(item => item.status === "UPDATED"))
47
+ process.stdout.write("Skills 已更新,请刷新宿主 Skill 列表或新建会话。\n");
48
+ }
49
+ if (!result.ok)
50
+ process.exitCode = 1;
51
+ });
7
52
  const updates = skills.command("updates").description("管理已登记用户级 Skills 的 latest 自动追踪");
8
53
  updates.command("status").description("显示总开关、逐项策略、安装路径与上次更新结果(本地)")
9
54
  .action(async () => print(await readSkillUpdates()));
@@ -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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"}
@@ -0,0 +1,10 @@
1
+ import type { SkillUpdateProgress } from "./updates.js";
2
+ export interface SkillUpdateProgressView {
3
+ update(event: SkillUpdateProgress): void;
4
+ close(error?: boolean): void;
5
+ }
6
+ /** Animated Clack component on terminals; readable stage lines in redirected output. */
7
+ export declare function createSkillUpdateProgress(options?: {
8
+ output?: NodeJS.WriteStream;
9
+ onCancel?: () => void;
10
+ }): SkillUpdateProgressView;
@@ -0,0 +1,74 @@
1
+ import { progress } from "@clack/prompts";
2
+ import { safeTerminal } from "../interactive/prompts.js";
3
+ const stages = {
4
+ waiting: "等待更新锁", "checking-local": "检查本地文件", "checking-latest": "查询 latest / 比较版本",
5
+ downloading: "下载", verifying: "校验包与依赖", extracting: "解包", "backing-up": "备份旧版本",
6
+ replacing: "替换文件", recording: "保存更新记录",
7
+ };
8
+ /** Animated Clack component on terminals; readable stage lines in redirected output. */
9
+ export function createSkillUpdateProgress(options = {}) {
10
+ const output = options.output ?? process.stderr;
11
+ let bar;
12
+ let total = 0, completed = 0, updated = 0, current = 0, failed = 0;
13
+ let closed = false;
14
+ const summary = () => `Skills 更新 ${completed}/${total} · 已更新 ${updated} · 已是最新 ${current} · 失败 ${failed}`;
15
+ return {
16
+ update(event) {
17
+ if (closed)
18
+ return;
19
+ if (event.type === "start") {
20
+ total = event.total;
21
+ if (!total)
22
+ return;
23
+ if (output.isTTY && process.env.TERM !== "dumb") {
24
+ bar = progress({ max: total, size: Math.min(24, Math.max(8, Math.floor((output.columns || 80) / 4))),
25
+ output, indicator: "timer", onCancel: options.onCancel, cancelMessage: "已请求取消 Skills 更新", withGuide: false });
26
+ bar.start(summary());
27
+ }
28
+ else
29
+ output.write(`${summary()}\n`);
30
+ return;
31
+ }
32
+ const item = event.installation;
33
+ if (event.type === "stage") {
34
+ const version = event.latestVersion ? `${item.version} → ${event.latestVersion}` : item.version;
35
+ const message = safeTerminal(`[${completed + 1}/${total}] ${item.name} (${item.agent}) ${version} · ${stages[event.stage]}`);
36
+ if (bar)
37
+ bar.message(message);
38
+ else
39
+ output.write(`${message}\n`);
40
+ }
41
+ else {
42
+ completed++;
43
+ if (event.installation.status === "UPDATED")
44
+ updated++;
45
+ else if (event.installation.status === "CURRENT")
46
+ current++;
47
+ else
48
+ failed++;
49
+ const result = event.installation;
50
+ const message = safeTerminal(`${result.name} (${result.agent}) ${result.previousVersion} → ${result.version}: ${result.status}`
51
+ + (result.status === "FAILED" ? ` · ${result.code}` : ""));
52
+ if (bar)
53
+ bar.advance(1, `${message} · ${summary()}`);
54
+ else
55
+ output.write(`[${completed}/${total}] ${message}\n`);
56
+ }
57
+ },
58
+ close(error = false) {
59
+ if (closed)
60
+ return;
61
+ closed = true;
62
+ const message = `${summary()}${error ? " · 已中止" : ""}`;
63
+ if (bar) {
64
+ if (error || failed)
65
+ bar.error(message);
66
+ else
67
+ bar.stop(message);
68
+ }
69
+ else if (total)
70
+ output.write(`${message}\n`);
71
+ },
72
+ };
73
+ }
74
+ //# sourceMappingURL=update-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-progress.js","sourceRoot":"","sources":["../../src/ai-registry/update-progress.ts"],"names":[],"mappings":"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"}
@@ -123,6 +123,48 @@ export declare function setSkillTracking(id: string, enabled: boolean, directory
123
123
  type Client = Pick<AiRegistryClient, "getCapabilities" | "resolveNamespace" | "getSkill" | "downloadSkill">;
124
124
  export declare function publishedLatest(detail: Record<string, unknown>, name: string): string;
125
125
  export declare function createSkillUpdateTasks(identity: string, clientFor: (signal: AbortSignal) => Client, directory?: string): Promise<MaintenanceTask[]>;
126
+ export interface SkillUpdateSelection {
127
+ name?: string;
128
+ agent?: string;
129
+ namespace?: string;
130
+ instance?: string;
131
+ installationId?: string;
132
+ }
133
+ export interface SkillUpdateInstallationResult {
134
+ id: string;
135
+ name: string;
136
+ agent: string;
137
+ path: string;
138
+ namespace: string;
139
+ instance: string;
140
+ previousVersion: string;
141
+ version: string;
142
+ status: "UPDATED" | "CURRENT" | "FAILED";
143
+ code: string;
144
+ backupPath?: string;
145
+ }
146
+ export type SkillUpdateStage = "waiting" | "checking-local" | "checking-latest" | "downloading" | "verifying" | "extracting" | "backing-up" | "replacing" | "recording";
147
+ export type SkillUpdateProgress = {
148
+ type: "start";
149
+ total: number;
150
+ } | {
151
+ type: "stage";
152
+ installation: Pick<SkillUpdateRecord, "id" | "name" | "agent" | "version">;
153
+ stage: SkillUpdateStage;
154
+ latestVersion?: string;
155
+ } | {
156
+ type: "result";
157
+ installation: SkillUpdateInstallationResult;
158
+ };
159
+ export interface SkillUpdateRunOptions {
160
+ onProgress?: (event: SkillUpdateProgress) => void;
161
+ signal?: AbortSignal;
162
+ }
163
+ /** One-shot updates use the recorded source and destination, without opting into future updates. */
164
+ export declare function updateInstalledSkills(identity: string, clientFor: (signal: AbortSignal) => Client, selection?: SkillUpdateSelection, directory?: string, options?: SkillUpdateRunOptions): Promise<{
165
+ ok: boolean;
166
+ installations: SkillUpdateInstallationResult[];
167
+ }>;
126
168
  /** Explicit migration only: verify legacy lock hash AND installed tree; never overwrite during adoption. */
127
169
  export declare function adoptLockedUserSkills(client: Client, identity: string, workspace?: string, directory?: string): Promise<{
128
170
  name: string;
@@ -5,7 +5,7 @@ import { dirname, join, resolve } from "node:path";
5
5
  import { z } from "zod";
6
6
  import { appConfigDirectory } from "../app-config.js";
7
7
  import { readState, stateLock, writeState } from "../maintenance/storage.js";
8
- import { maintenanceKey } from "../maintenance/scheduler.js";
8
+ import { maintenanceKey, runMaintenance } from "../maintenance/scheduler.js";
9
9
  import { AiRegistryError } from "./errors.js";
10
10
  import { resolveRegistryNamespace } from "./namespace.js";
11
11
  import { installSkillArchive, skillDirectoryDigest } from "./skill-installer.js";
@@ -109,22 +109,74 @@ function verifyDownload(download, version) {
109
109
  }
110
110
  }
111
111
  export async function createSkillUpdateTasks(identity, clientFor, directory) {
112
+ return buildSkillUpdateTasks(identity, clientFor, directory);
113
+ }
114
+ // Presentation failures must never interrupt an atomic replacement or change its outcome.
115
+ function reportProgress(options, event) {
116
+ try {
117
+ options.onProgress?.(event);
118
+ }
119
+ catch { /* Progress is best effort. */ }
120
+ }
121
+ /** One-shot updates use the recorded source and destination, without opting into future updates. */
122
+ export async function updateInstalledSkills(identity, clientFor, selection = {}, directory, options = {}) {
123
+ if (selection.agent && !["chatgpt", "codex", "claude", "cursor", "workbuddy", "openclaw", "agents", "custom"].includes(selection.agent)) {
124
+ throw new AiRegistryError("Unsupported Skill agent target.", "ai_registry_install_target_invalid");
125
+ }
126
+ const state = await readSkillUpdates(directory);
127
+ const selected = state.installations.filter(item => item.identity === identity && item.scope === "user"
128
+ && (!selection.name || item.name === selection.name)
129
+ && (!selection.agent || item.agent === selection.agent)
130
+ && (!selection.namespace || item.namespace === selection.namespace)
131
+ && (!selection.instance || item.instance === selection.instance || String(item.instanceId) === selection.instance)
132
+ && (!selection.installationId || item.id === selection.installationId));
133
+ if (!selected.length && Object.values(selection).some(Boolean)) {
134
+ throw new AiRegistryError("No matching managed user Skill installation for the current identity. Run skills updates status; adopt legacy installations with skills updates adopt --workspace PATH. Use registry upgrade for project Skills.", "skills_update_not_installed");
135
+ }
136
+ const tasks = await buildSkillUpdateTasks(identity, clientFor, directory, new Set(selected.map(item => item.id)), options);
137
+ reportProgress(options, { type: "start", total: tasks.length });
138
+ const installations = [];
139
+ for (const task of tasks) {
140
+ options.signal?.throwIfAborted();
141
+ const original = selected.find(item => task.id === `skills.update.${item.id.slice(0, 16)}`);
142
+ reportProgress(options, { type: "stage", installation: original, stage: "waiting" });
143
+ // Give every selected installation its own budget and retain the automatic updater's process lock.
144
+ const [outcome] = await runMaintenance([task], { directory, force: true, budgetMs: 60_000 });
145
+ const current = (await readSkillUpdates(directory)).installations.find(item => item.id === original.id);
146
+ const code = outcome?.result.code ?? "skills_update_not_checked";
147
+ const installation = { id: original.id, name: original.name, agent: original.agent, path: original.path,
148
+ namespace: original.namespace, instance: original.instance, previousVersion: original.version,
149
+ version: current?.version ?? original.version,
150
+ status: code === "skills_updated_reload_agent" ? "UPDATED" : code === "skills_update_current" ? "CURRENT" : "FAILED",
151
+ code, ...(code === "skills_updated_reload_agent" ? { backupPath: current?.backupPath } : {}) };
152
+ installations.push(installation);
153
+ reportProgress(options, { type: "result", installation });
154
+ }
155
+ options.signal?.throwIfAborted();
156
+ return { ok: installations.every(item => item.status !== "FAILED"), installations };
157
+ }
158
+ async function buildSkillUpdateTasks(identity, clientFor, directory, explicitIds, options = {}) {
159
+ const eligible = (item, all) => item.identity === identity
160
+ && (explicitIds ? item.scope === "user" && explicitIds.has(item.id) : tracksLatest(item, all));
112
161
  const state = await readSkillUpdates(directory);
113
162
  // Oldest checked first so startup budgets don't starve installations at the end of the list.
114
- return state.installations.filter((item) => item.identity === identity && tracksLatest(item, state.autoUpdateAll))
163
+ return state.installations.filter((item) => eligible(item, state.autoUpdateAll))
115
164
  .sort((a, b) => a.updatedAt - b.updatedAt).map((item) => ({
116
165
  id: `skills.update.${item.id.slice(0, 16)}`, scope: identity,
117
- intervalMs: 6 * 60 * 60_000, retryMs: 15 * 60_000, timeoutMs: 10_000,
166
+ intervalMs: 6 * 60 * 60_000, retryMs: 15 * 60_000, timeoutMs: explicitIds ? 60_000 : 10_000,
118
167
  run: async (signal) => {
168
+ if (options.signal)
169
+ signal = AbortSignal.any([signal, options.signal]);
119
170
  const path = updateStatePath(directory);
120
171
  const snapshot = await readSkillUpdates(directory);
121
172
  const original = snapshot.installations.find((entry) => entry.id === item.id);
122
- if (!original || original.identity !== identity || !tracksLatest(original, snapshot.autoUpdateAll)) {
173
+ if (!original || !eligible(original, snapshot.autoUpdateAll)) {
123
174
  return { status: "SKIPPED", code: "skills_update_disabled" };
124
175
  }
125
176
  let code = "skills_update_current";
126
177
  let status = "OK";
127
178
  let candidate;
179
+ const progress = (stage, latestVersion) => reportProgress(options, { type: "stage", installation: original, stage, latestVersion });
128
180
  const failure = (error) => {
129
181
  status = "WARNING";
130
182
  code = signal.aborted ? "skills_update_timeout" : error instanceof AiRegistryError
@@ -134,10 +186,13 @@ export async function createSkillUpdateTasks(identity, clientFor, directory) {
134
186
  };
135
187
  // Network work holds no global inventory lock: disabling tracking must remain responsive.
136
188
  try {
189
+ signal.throwIfAborted();
190
+ progress("checking-local");
137
191
  if (await skillDirectoryDigest(original.path) !== original.contentDigest) {
138
192
  throw new AiRegistryError("Local changes preserved.", "skills_update_local_conflict");
139
193
  }
140
194
  const client = clientFor(signal);
195
+ progress("checking-latest");
141
196
  const context = await resolveRegistryNamespace(client, {
142
197
  namespace: original.namespace, instance: original.instance, requiredAction: "install",
143
198
  });
@@ -148,7 +203,9 @@ export async function createSkillUpdateTasks(identity, clientFor, directory) {
148
203
  if (version !== original.version) {
149
204
  if (!newerVersion(version, original.version))
150
205
  throw new AiRegistryError("Latest moved backwards; explicit install required.", "skills_update_downgrade_blocked");
206
+ progress("downloading", version);
151
207
  const download = await client.downloadSkill(original.namespaceId, original.name, { version });
208
+ progress("verifying", version);
152
209
  verifyDownload(download, version);
153
210
  await assertUnchangedDependencies(download.bytes, original.path);
154
211
  await assertConsumersCompatible(original.name, version, original.path, directory);
@@ -163,11 +220,12 @@ export async function createSkillUpdateTasks(identity, clientFor, directory) {
163
220
  return stateLock(path, async () => {
164
221
  const current = await readSkillUpdates(directory);
165
222
  const record = current.installations.find((entry) => entry.id === item.id);
166
- if (!record || record.identity !== identity || !tracksLatest(record, current.autoUpdateAll)) {
223
+ if (!record || !eligible(record, current.autoUpdateAll)) {
167
224
  return { status: "SKIPPED", code: "skills_update_disabled" };
168
225
  }
169
226
  if (record.updatedAt !== original.updatedAt || record.contentDigest !== original.contentDigest
170
- || record.version !== original.version || record.namespaceId !== original.namespaceId || record.instanceId !== original.instanceId) {
227
+ || record.version !== original.version || record.namespaceId !== original.namespaceId || record.instanceId !== original.instanceId
228
+ || record.policy !== original.policy) {
171
229
  return { status: "SKIPPED", code: "skills_update_inventory_changed" };
172
230
  }
173
231
  try {
@@ -178,6 +236,7 @@ export async function createSkillUpdateTasks(identity, clientFor, directory) {
178
236
  const result = await installSkillArchive(candidate.download.bytes, { agent: record.agent, scope: record.scope,
179
237
  dependencyPlanVerified: true,
180
238
  skillName: record.name, workspace: record.workspace, customRoot: record.customRoot, force: true, maintenanceBackup: true,
239
+ onProgress: stage => progress(stage, candidate.version),
181
240
  expectedInstalledDigest: record.contentDigest, expectedInstalledPath: record.path });
182
241
  record.version = candidate.version;
183
242
  record.archiveSha256 = candidate.download.sha256;
@@ -192,6 +251,8 @@ export async function createSkillUpdateTasks(identity, clientFor, directory) {
192
251
  }
193
252
  record.updatedAt = Date.now();
194
253
  record.lastStatus = code;
254
+ if (code === "skills_updated_reload_agent")
255
+ progress("recording", record.version);
195
256
  await writeState(path, current);
196
257
  return { status, code };
197
258
  }, 100);