@numa-tech/numa 1.11.13 → 1.12.1

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 (102) hide show
  1. package/README.md +197 -25
  2. package/dist/ai-registry/client.d.ts +65 -0
  3. package/dist/ai-registry/client.js +260 -0
  4. package/dist/ai-registry/client.js.map +1 -0
  5. package/dist/ai-registry/commands.d.ts +2 -0
  6. package/dist/ai-registry/commands.js +438 -0
  7. package/dist/ai-registry/commands.js.map +1 -0
  8. package/dist/ai-registry/errors.d.ts +8 -0
  9. package/dist/ai-registry/errors.js +40 -0
  10. package/dist/ai-registry/errors.js.map +1 -0
  11. package/dist/ai-registry/mcp-installer.d.ts +37 -0
  12. package/dist/ai-registry/mcp-installer.js +273 -0
  13. package/dist/ai-registry/mcp-installer.js.map +1 -0
  14. package/dist/ai-registry/schemas.d.ts +86 -0
  15. package/dist/ai-registry/schemas.js +39 -0
  16. package/dist/ai-registry/schemas.js.map +1 -0
  17. package/dist/ai-registry/skill-installer.d.ts +21 -0
  18. package/dist/ai-registry/skill-installer.js +262 -0
  19. package/dist/ai-registry/skill-installer.js.map +1 -0
  20. package/dist/app-config.d.ts +4 -2
  21. package/dist/app-config.js +15 -3
  22. package/dist/app-config.js.map +1 -1
  23. package/dist/cli.js +40 -12
  24. package/dist/cli.js.map +1 -1
  25. package/dist/codex-module.d.ts +8 -0
  26. package/dist/codex-module.js +152 -0
  27. package/dist/codex-module.js.map +1 -0
  28. package/dist/command-catalog.js +170 -64
  29. package/dist/command-catalog.js.map +1 -1
  30. package/dist/config-page.js +17 -0
  31. package/dist/config-page.js.map +1 -1
  32. package/dist/config.d.ts +4 -1
  33. package/dist/config.js +26 -7
  34. package/dist/config.js.map +1 -1
  35. package/dist/media/commands.js +12 -11
  36. package/dist/media/commands.js.map +1 -1
  37. package/dist/oauth.d.ts +2 -30
  38. package/dist/oauth.js +1 -294
  39. package/dist/oauth.js.map +1 -1
  40. package/dist/pipeline/client.d.ts +126 -0
  41. package/dist/pipeline/client.js +105 -0
  42. package/dist/pipeline/client.js.map +1 -0
  43. package/dist/pipeline/commands.d.ts +17 -0
  44. package/dist/pipeline/commands.js +283 -0
  45. package/dist/pipeline/commands.js.map +1 -0
  46. package/dist/pipeline/errors.d.ts +8 -0
  47. package/dist/pipeline/errors.js +37 -0
  48. package/dist/pipeline/errors.js.map +1 -0
  49. package/dist/pipeline/schemas.d.ts +243 -0
  50. package/dist/pipeline/schemas.js +60 -0
  51. package/dist/pipeline/schemas.js.map +1 -0
  52. package/dist/platform-profile.d.ts +75 -0
  53. package/dist/platform-profile.js +169 -0
  54. package/dist/platform-profile.js.map +1 -0
  55. package/dist/types.d.ts +1 -40
  56. package/dist/web-console-page.d.ts +2 -2
  57. package/dist/web-console-page.js +21 -7
  58. package/dist/web-console-page.js.map +1 -1
  59. package/dist/web-console.d.ts +17 -3
  60. package/dist/web-console.js +70 -5
  61. package/dist/web-console.js.map +1 -1
  62. package/examples/claude-desktop-npx.json +1 -1
  63. package/examples/codex-npx.json +1 -1
  64. package/package.json +30 -14
  65. package/skills/numa-ai-registry/SKILL.md +47 -0
  66. package/skills/numa-ai-registry/evals/evals.json +35 -0
  67. package/skills/numa-ai-registry/references/command-contract.md +53 -0
  68. package/assets/codex-shortcut-icon.icns +0 -0
  69. package/assets/codex-shortcut-icon.ico +0 -0
  70. package/dist/chatgpt-console.d.ts +0 -53
  71. package/dist/chatgpt-console.js +0 -105
  72. package/dist/chatgpt-console.js.map +0 -1
  73. package/dist/codex-auth-agent.d.ts +0 -60
  74. package/dist/codex-auth-agent.js +0 -331
  75. package/dist/codex-auth-agent.js.map +0 -1
  76. package/dist/codex-commands.d.ts +0 -13
  77. package/dist/codex-commands.js +0 -571
  78. package/dist/codex-commands.js.map +0 -1
  79. package/dist/codex-legacy-cleanup.d.ts +0 -5
  80. package/dist/codex-legacy-cleanup.js +0 -77
  81. package/dist/codex-legacy-cleanup.js.map +0 -1
  82. package/dist/codex-process.d.ts +0 -13
  83. package/dist/codex-process.js +0 -193
  84. package/dist/codex-process.js.map +0 -1
  85. package/dist/codex-protocol.d.ts +0 -352
  86. package/dist/codex-protocol.js +0 -116
  87. package/dist/codex-protocol.js.map +0 -1
  88. package/dist/codex-quota-cache.d.ts +0 -20
  89. package/dist/codex-quota-cache.js +0 -82
  90. package/dist/codex-quota-cache.js.map +0 -1
  91. package/dist/codex-selection.d.ts +0 -18
  92. package/dist/codex-selection.js +0 -47
  93. package/dist/codex-selection.js.map +0 -1
  94. package/dist/codex-service-client.d.ts +0 -11
  95. package/dist/codex-service-client.js +0 -91
  96. package/dist/codex-service-client.js.map +0 -1
  97. package/dist/codex-shortcuts.d.ts +0 -43
  98. package/dist/codex-shortcuts.js +0 -429
  99. package/dist/codex-shortcuts.js.map +0 -1
  100. package/dist/codex-tui.d.ts +0 -15
  101. package/dist/codex-tui.js +0 -235
  102. package/dist/codex-tui.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ai-registry/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerAiRegistryCommands(program: Command): void;
@@ -0,0 +1,438 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import process from "node:process";
3
+ import { cancel, confirm, isCancel, select, text } from "@clack/prompts";
4
+ import { loadAppConfig } from "../app-config.js";
5
+ import { loadConfig as loadPlatformConfig } from "../config.js";
6
+ import { AiRegistryClient } from "./client.js";
7
+ import { AiRegistryError, sanitizeRegistryOutput } from "./errors.js";
8
+ import { installMcpDefinition } from "./mcp-installer.js";
9
+ import { installSkillArchive } from "./skill-installer.js";
10
+ // A selected profile must route this module independently from the platform API.
11
+ const loadConfig = (..._args) => loadPlatformConfig("aiRegistry");
12
+ function addExamples(command, examples) {
13
+ return command.addHelpText("after", `\nExamples:\n${examples.map((item) => ` ${item}`).join("\n")}\n`);
14
+ }
15
+ function jsonEnabled(command, configured) {
16
+ return Boolean(command.optsWithGlobals().json || configured === "json");
17
+ }
18
+ async function output(command, payload, textValue) {
19
+ const config = await loadAppConfig();
20
+ if (jsonEnabled(command, config.output)) {
21
+ process.stdout.write(`${JSON.stringify(sanitizeRegistryOutput(payload), null, 2)}\n`);
22
+ }
23
+ else {
24
+ process.stdout.write(`${textValue}\n`);
25
+ }
26
+ }
27
+ function positiveInteger(value, label, fallback, maximum) {
28
+ if (value == null)
29
+ return fallback;
30
+ const parsed = Number(value);
31
+ if (!Number.isInteger(parsed) || parsed < 1 || parsed > maximum) {
32
+ throw new AiRegistryError(`${label} must be an integer between 1 and ${maximum}.`, "ai_registry_input_invalid");
33
+ }
34
+ return parsed;
35
+ }
36
+ async function resolveInstance(client, value) {
37
+ const instances = await client.listInstances();
38
+ const numeric = /^\d+$/u.test(value) ? Number(value) : undefined;
39
+ const matches = instances.filter((instance) => instance.id === numeric || instance.code === value);
40
+ if (matches.length !== 1) {
41
+ throw new AiRegistryError(`Nacos instance not found or ambiguous: ${value}`, "ai_registry_instance_not_found");
42
+ }
43
+ return matches[0];
44
+ }
45
+ async function resolveNamespace(client, options) {
46
+ return client.resolveNamespace(options.namespace, options.instance);
47
+ }
48
+ async function readObject(path) {
49
+ try {
50
+ const parsed = JSON.parse(await readFile(path, "utf8"));
51
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
52
+ throw new Error("root must be an object");
53
+ return parsed;
54
+ }
55
+ catch (error) {
56
+ throw new AiRegistryError(`Cannot read JSON object from ${path}: ${error instanceof Error ? error.message : String(error)}`, "ai_registry_input_invalid");
57
+ }
58
+ }
59
+ function pageItems(page) {
60
+ return Array.isArray(page.pageItems)
61
+ ? page.pageItems.filter((item) => Boolean(item && typeof item === "object" && !Array.isArray(item)))
62
+ : [];
63
+ }
64
+ function itemName(item, fallback) {
65
+ const value = item.name ?? item.skillName ?? item.mcpName;
66
+ return typeof value === "string" ? value : fallback;
67
+ }
68
+ export function registerAiRegistryCommands(program) {
69
+ const registry = program
70
+ .command("registry")
71
+ .alias("ai-registry")
72
+ .description("通过平台 Keycloak 授权安全管理私有 Nacos Skill 与 MCP Registry");
73
+ addExamples(registry.command("tui").description("交互式浏览、安装和治理 Skill/MCP").action(runTui), ["numa registry tui"]);
74
+ const instances = registry.command("instances").alias("services").description("管理数据库中的 Nacos 集群实例与 OIDC 配置");
75
+ addExamples(instances.command("list").description("列出 Nacos 实例(不返回密文或明文 secret)").action(async (_options, command) => {
76
+ const result = await new AiRegistryClient(loadConfig("aiRegistry")).listInstances();
77
+ await output(command, { ok: true, instances: result }, result.map((item) => `${item.id}\t${item.code}\t${item.status}\t${item.credentialConfigured ? "credential-ready" : "credential-missing"}\t${item.displayName}`).join("\n") || "没有配置 Nacos 实例");
78
+ }), ["numa registry instances list --json"]);
79
+ addExamples(instances.command("create <json>").description("创建实例;clientSecret 仅写入平台数据库密文表")
80
+ .action(async (file, _options, command) => {
81
+ const result = await new AiRegistryClient(loadConfig("aiRegistry")).createInstance(await readObject(file));
82
+ await output(command, { ok: true, instance: result }, `Nacos 实例已创建: ${result.id} ${result.code}`);
83
+ }), ["numa registry instances create ./nacos-instance.json --json"]);
84
+ addExamples(instances.command("update <id-or-code> <json>").description("更新实例;JSON 必须包含当前 version,省略 clientSecret 表示保留")
85
+ .action(async (value, file, _options, command) => {
86
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
87
+ const instance = await resolveInstance(client, value);
88
+ const result = await client.updateInstance(instance.id, await readObject(file));
89
+ await output(command, { ok: true, instance: result }, `Nacos 实例已更新: ${result.id} ${result.code}`);
90
+ }), ["numa registry instances update cluster-a ./nacos-instance.json --json"]);
91
+ addExamples(instances.command("delete <id-or-code>").description("删除没有 namespace 的 Nacos 实例")
92
+ .option("--yes", "确认删除")
93
+ .action(async (value, options, command) => {
94
+ if (!options.yes)
95
+ throw new AiRegistryError("Instance delete requires --yes.", "ai_registry_confirmation_required");
96
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
97
+ const instance = await resolveInstance(client, value);
98
+ await client.deleteInstance(instance.id);
99
+ await output(command, { ok: true, deleted: { id: instance.id, code: instance.code } }, `Nacos 实例已删除: ${instance.code}`);
100
+ }), ["numa registry instances delete cluster-a --yes --json"]);
101
+ const namespaces = registry.command("namespaces").description("管理实例下的 namespace 与跨集群默认路由");
102
+ addExamples(namespaces.command("list")
103
+ .option("-i, --instance <id-or-code>", "按实例过滤")
104
+ .option("-n, --namespace <key>", "按 namespaceKey 过滤")
105
+ .action(async (options, command) => {
106
+ const result = await new AiRegistryClient(loadConfig("aiRegistry")).listNamespaces(options);
107
+ await output(command, { ok: true, namespaces: result }, result.map((item) => `${item.id}\t${item.namespaceKey}\t${item.instanceCode}\t${item.isDefault ? "default" : ""}\t${item.status}`).join("\n") || "没有配置 namespace");
108
+ }), ["numa registry namespaces list --namespace team-ai --json"]);
109
+ addExamples(namespaces.command("resolve <namespace>")
110
+ .option("-i, --instance <id-or-code>", "显式指定实例以消歧")
111
+ .action(async (namespace, options, command) => {
112
+ const result = await new AiRegistryClient(loadConfig("aiRegistry")).resolveNamespace(namespace, options.instance);
113
+ await output(command, { ok: true, namespace: result }, `${result.namespaceKey} -> ${result.instanceCode}/${result.namespaceId}${result.isDefault ? " (default)" : ""}`);
114
+ }), ["numa registry namespaces resolve team-ai --json", "numa registry namespaces resolve team-ai --instance cluster-b --json"]);
115
+ addExamples(namespaces.command("create <instance> <json>")
116
+ .action(async (instanceValue, file, _options, command) => {
117
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
118
+ const instance = await resolveInstance(client, instanceValue);
119
+ const result = await client.createNamespace(instance.id, await readObject(file));
120
+ await output(command, { ok: true, namespace: result }, `namespace 已创建: ${result.id} ${result.namespaceKey} @ ${result.instanceCode}`);
121
+ }), ["numa registry namespaces create cluster-a ./namespace.json --json"]);
122
+ addExamples(namespaces.command("update <namespace-id> <json>")
123
+ .action(async (id, file, _options, command) => {
124
+ const result = await new AiRegistryClient(loadConfig("aiRegistry")).updateNamespace(positiveInteger(id, "namespace-id", 0, Number.MAX_SAFE_INTEGER), await readObject(file));
125
+ await output(command, { ok: true, namespace: result }, `namespace 已更新: ${result.id} ${result.namespaceKey}`);
126
+ }), ["numa registry namespaces update 7 ./namespace.json --json"]);
127
+ addExamples(namespaces.command("check <namespace>")
128
+ .option("-i, --instance <id-or-code>", "显式指定实例以消歧")
129
+ .action(async (namespace, options, command) => {
130
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
131
+ const target = await client.resolveNamespace(namespace, options.instance);
132
+ const result = await client.checkNamespace(target.id);
133
+ await output(command, { ok: true, namespace: target, health: result }, `${target.namespaceKey} @ ${target.instanceCode}: health check 完成`);
134
+ }), ["numa registry namespaces check team-ai --json"]);
135
+ addExamples(namespaces.command("delete <namespace-id>")
136
+ .option("--yes", "确认删除")
137
+ .action(async (id, options, command) => {
138
+ if (!options.yes)
139
+ throw new AiRegistryError("Namespace delete requires --yes.", "ai_registry_confirmation_required");
140
+ const namespaceId = positiveInteger(id, "namespace-id", 0, Number.MAX_SAFE_INTEGER);
141
+ await new AiRegistryClient(loadConfig("aiRegistry")).deleteNamespace(namespaceId);
142
+ await output(command, { ok: true, deleted: { id: namespaceId } }, `namespace 已删除: ${namespaceId}`);
143
+ }), ["numa registry namespaces delete 7 --yes --json"]);
144
+ const skill = registry.command("skill").description("查看、上传、治理和安装 Nacos Skills");
145
+ addExamples(skill.command("list")
146
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
147
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
148
+ .option("-q, --search <text>", "搜索关键词")
149
+ .option("--page <number>", "页码", "1")
150
+ .option("--limit <number>", "每页 1-100", "20")
151
+ .action(async (options, command) => {
152
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
153
+ const targetNamespace = await resolveNamespace(client, options);
154
+ const result = await client.listSkills(targetNamespace.id, {
155
+ search: options.search,
156
+ pageNo: positiveInteger(options.page, "page", 1, 1_000_000),
157
+ pageSize: positiveInteger(options.limit, "limit", 20, 100)
158
+ });
159
+ const items = pageItems(result);
160
+ await output(command, { ok: true, namespace: targetNamespace, skills: result }, items.map((item, index) => itemName(item, `skill-${index + 1}`)).join("\n") || "没有找到 Skill");
161
+ }), ["numa registry skill list --namespace team-ai --search deploy --json"]);
162
+ addExamples(skill.command("inspect <name>")
163
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
164
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
165
+ .action(async (name, options, command) => {
166
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
167
+ const targetNamespace = await resolveNamespace(client, options);
168
+ const result = await client.getSkill(targetNamespace.id, name);
169
+ await output(command, { ok: true, namespace: targetNamespace, skill: result }, JSON.stringify(sanitizeRegistryOutput(result), null, 2));
170
+ }), ["numa registry skill inspect release-helper --namespace team-ai --json"]);
171
+ addExamples(skill.command("install <name>")
172
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
173
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
174
+ .requiredOption("-a, --agent <agent>", "chatgpt|codex|claude|cursor|workbuddy|openclaw|agents|custom")
175
+ .option("--scope <scope>", "project|user", "project")
176
+ .option("--version <semver>", "精确版本")
177
+ .option("--label <label>", "路由标签,例如 latest")
178
+ .option("--workspace <path>", "项目根目录")
179
+ .option("--custom-root <path>", "自定义 Skills 根目录")
180
+ .option("--force", "备份并替换已有 Skill")
181
+ .action(async (name, options, command) => {
182
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
183
+ const targetNamespace = await resolveNamespace(client, options);
184
+ const download = await client.downloadSkill(targetNamespace.id, name, { version: options.version, label: options.label });
185
+ const result = await installSkillArchive(download.bytes, {
186
+ agent: skillAgent(options.agent), scope: installScope(options.scope), skillName: name,
187
+ workspace: options.workspace, customRoot: options.customRoot, force: options.force
188
+ });
189
+ await output(command, { ok: true, namespace: targetNamespace, download: { sha256: download.sha256, fileName: download.fileName }, installation: result }, `已安装 ${name}: ${result.installedPath}${result.backupPath ? `\n原版本备份: ${result.backupPath}` : ""}`);
190
+ }), [
191
+ "numa registry skill install release-helper --namespace team-ai --agent claude",
192
+ "numa registry skill install release-helper --namespace team-ai --instance cluster-b --agent cursor --scope user --label latest --json"
193
+ ]);
194
+ addExamples(skill.command("upload <zip>")
195
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
196
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
197
+ .option("--overwrite", "覆盖现有 draft")
198
+ .option("--target-version <semver>", "目标版本")
199
+ .option("--commit-msg <text>", "提交说明")
200
+ .action(async (zip, options, command) => {
201
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
202
+ const targetNamespace = await resolveNamespace(client, options);
203
+ const result = await client.uploadSkill(targetNamespace.id, zip, options);
204
+ await output(command, { ok: true, namespace: targetNamespace, result }, `Skill ZIP 已上传到 ${targetNamespace.displayName}`);
205
+ }), ["numa registry skill upload ./release-helper.zip --namespace team-ai --target-version 1.0.0 --json"]);
206
+ for (const action of ["submit", "publish", "online", "offline"]) {
207
+ addExamples(skill.command(`${action} <name>`)
208
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
209
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
210
+ .option("--version <semver>", "版本(publish 必填)")
211
+ .action(async (name, options, command) => {
212
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
213
+ const targetNamespace = await resolveNamespace(client, options);
214
+ const result = await client.skillAction(targetNamespace.id, name, action, { version: options.version });
215
+ await output(command, { ok: true, namespace: targetNamespace, result }, `Skill ${name}: ${action} 完成`);
216
+ }), [`numa registry skill ${action} release-helper --namespace team-ai${action === "publish" ? " --version 1.0.0" : ""}`]);
217
+ }
218
+ addExamples(skill.command("scope <name> <scope>")
219
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
220
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
221
+ .action(async (name, scope, options, command) => {
222
+ const normalized = scope.toUpperCase();
223
+ if (normalized !== "PUBLIC" && normalized !== "PRIVATE")
224
+ throw new AiRegistryError("scope must be PUBLIC or PRIVATE.", "ai_registry_input_invalid");
225
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
226
+ const targetNamespace = await resolveNamespace(client, options);
227
+ const result = await client.skillAction(targetNamespace.id, name, "scope", { scope: normalized });
228
+ await output(command, { ok: true, namespace: targetNamespace, result }, `Skill ${name} scope 已更新为 ${normalized}`);
229
+ }), ["numa registry skill scope release-helper PRIVATE --namespace team-ai"]);
230
+ addExamples(skill.command("tags <name> <tags...>")
231
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
232
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
233
+ .action(async (name, tags, options, command) => {
234
+ const normalized = [...new Set(tags.map((tag) => tag.trim()).filter(Boolean))];
235
+ if (!normalized.length || normalized.length > 20) {
236
+ throw new AiRegistryError("tags must contain 1-20 non-empty values.", "ai_registry_input_invalid");
237
+ }
238
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
239
+ const targetNamespace = await resolveNamespace(client, options);
240
+ const result = await client.skillAction(targetNamespace.id, name, "biz-tags", { bizTags: normalized });
241
+ await output(command, { ok: true, namespace: targetNamespace, result }, `Skill ${name} tags 已更新`);
242
+ }), ["numa registry skill tags release-helper deploy java --namespace team-ai --json"]);
243
+ addExamples(skill.command("delete <name>")
244
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
245
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
246
+ .option("--yes", "确认不可逆的远端删除")
247
+ .action(async (name, options, command) => {
248
+ if (!options.yes)
249
+ throw new AiRegistryError("Remote delete requires --yes.", "ai_registry_confirmation_required");
250
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
251
+ const targetNamespace = await resolveNamespace(client, options);
252
+ const result = await client.skillAction(targetNamespace.id, name, "delete");
253
+ await output(command, { ok: true, namespace: targetNamespace, result }, `Skill ${name} 已从远端删除`);
254
+ }), ["numa registry skill delete obsolete-skill --namespace team-ai --yes --json"]);
255
+ const mcp = registry.command("mcp").description("查看、维护和安装 Nacos MCP Servers");
256
+ addExamples(mcp.command("list")
257
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
258
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
259
+ .option("-q, --search <text>", "搜索关键词")
260
+ .option("--page <number>", "页码", "1")
261
+ .option("--limit <number>", "每页 1-100", "20")
262
+ .action(async (options, command) => {
263
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
264
+ const targetNamespace = await resolveNamespace(client, options);
265
+ const result = await client.listMcpServers(targetNamespace.id, {
266
+ search: options.search,
267
+ pageNo: positiveInteger(options.page, "page", 1, 1_000_000),
268
+ pageSize: positiveInteger(options.limit, "limit", 20, 100)
269
+ });
270
+ await output(command, { ok: true, namespace: targetNamespace, mcpServers: result }, pageItems(result).map((item, index) => itemName(item, `mcp-${index + 1}`)).join("\n") || "没有找到 MCP Server");
271
+ }), ["numa registry mcp list --namespace team-ai --json"]);
272
+ addExamples(mcp.command("inspect <name>")
273
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
274
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
275
+ .option("--version <semver>", "精确版本")
276
+ .action(async (name, options, command) => {
277
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
278
+ const targetNamespace = await resolveNamespace(client, options);
279
+ const result = await client.getMcpServer(targetNamespace.id, name, options.version);
280
+ await output(command, { ok: true, namespace: targetNamespace, mcpServer: result }, JSON.stringify(sanitizeRegistryOutput(result), null, 2));
281
+ }), ["numa registry mcp inspect internal-docs --namespace team-ai --json"]);
282
+ addExamples(mcp.command("install <name>")
283
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
284
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
285
+ .requiredOption("-a, --agent <agent>", "chatgpt|codex|claude|cursor|workbuddy|openclaw|custom")
286
+ .option("--scope <scope>", "project|user", "project")
287
+ .option("--version <semver>", "精确版本")
288
+ .option("--workspace <path>", "项目根目录")
289
+ .option("--custom-config <path>", "自定义 mcp.json 路径")
290
+ .option("--force", "备份并替换 JSON 配置中的同名项")
291
+ .action(async (name, options, command) => {
292
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
293
+ const targetNamespace = await resolveNamespace(client, options);
294
+ const detail = await client.getMcpServer(targetNamespace.id, name, options.version);
295
+ const result = await installMcpDefinition(detail, {
296
+ agent: mcpAgent(options.agent), scope: installScope(options.scope), workspace: options.workspace,
297
+ customConfig: options.customConfig, force: options.force
298
+ });
299
+ const textResult = result.manualSteps
300
+ ? `已生成 ChatGPT MCP 安装指引: ${result.endpoint}\n${result.manualSteps.map((step, index) => `${index + 1}. ${step}`).join("\n")}`
301
+ : `MCP ${name} 已安装${result.configPath ? `: ${result.configPath}` : "(由客户端 CLI 管理)"}${result.backupPath ? `\n原配置备份: ${result.backupPath}` : ""}`;
302
+ await output(command, { ok: true, namespace: targetNamespace, installation: result }, textResult);
303
+ }), ["numa registry mcp install internal-docs --namespace team-ai --agent cursor"]);
304
+ addExamples(mcp.command("create <json>")
305
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
306
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
307
+ .action(async (file, options, command) => {
308
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
309
+ const targetNamespace = await resolveNamespace(client, options);
310
+ const result = await client.createMcpServer(targetNamespace.id, await readObject(file));
311
+ await output(command, { ok: true, namespace: targetNamespace, result }, "MCP create 完成");
312
+ }), ["numa registry mcp create ./mcp.json --namespace team-ai --json"]);
313
+ addExamples(mcp.command("update <name> <json>")
314
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
315
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
316
+ .action(async (name, file, options, command) => {
317
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
318
+ const targetNamespace = await resolveNamespace(client, options);
319
+ const result = await client.updateMcpServer(targetNamespace.id, name, await readObject(file));
320
+ await output(command, { ok: true, namespace: targetNamespace, result }, "MCP update 完成");
321
+ }), ["numa registry mcp update internal-docs ./mcp.json --namespace team-ai --json"]);
322
+ addExamples(mcp.command("delete <name>")
323
+ .requiredOption("-n, --namespace <key>", "namespaceKey")
324
+ .option("-i, --instance <id-or-code>", "同名 namespace 的实例消歧")
325
+ .option("--version <semver>", "精确版本")
326
+ .option("--yes", "确认不可逆的远端删除")
327
+ .action(async (name, options, command) => {
328
+ if (!options.yes)
329
+ throw new AiRegistryError("Remote delete requires --yes.", "ai_registry_confirmation_required");
330
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
331
+ const targetNamespace = await resolveNamespace(client, options);
332
+ const result = await client.deleteMcpServer(targetNamespace.id, name, options.version);
333
+ await output(command, { ok: true, namespace: targetNamespace, result }, `MCP ${name} 已从远端删除`);
334
+ }), ["numa registry mcp delete obsolete --namespace team-ai --yes --json"]);
335
+ }
336
+ async function runTui() {
337
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
338
+ throw new AiRegistryError("Registry TUI requires an interactive terminal.", "ai_registry_tui_required");
339
+ }
340
+ const client = new AiRegistryClient(loadConfig("aiRegistry"));
341
+ const namespaces = (await client.listNamespaces()).filter((namespace) => namespace.status === "ACTIVE" && namespace.instanceStatus === "ACTIVE");
342
+ if (!namespaces.length)
343
+ throw new AiRegistryError("No active Nacos namespace is configured.", "ai_registry_namespace_not_found");
344
+ const namespaceId = await select({
345
+ message: "选择 Nacos namespace",
346
+ options: namespaces.map((namespace) => ({
347
+ value: namespace.id,
348
+ label: namespace.displayName,
349
+ hint: `${namespace.namespaceKey} · ${namespace.instanceCode}${namespace.isDefault ? " · default" : ""}`
350
+ }))
351
+ });
352
+ if (isCancel(namespaceId))
353
+ return void cancel("已取消");
354
+ const domain = await select({ message: "选择资源", options: [{ value: "skill", label: "Skills" }, { value: "mcp", label: "MCP Servers" }] });
355
+ if (isCancel(domain))
356
+ return void cancel("已取消");
357
+ if (domain === "skill")
358
+ await skillTui(client, namespaceId);
359
+ else
360
+ await mcpTui(client, namespaceId);
361
+ }
362
+ async function skillTui(client, namespaceId) {
363
+ const page = await client.listSkills(namespaceId, { pageSize: 100 });
364
+ const items = pageItems(page);
365
+ if (!items.length)
366
+ return void process.stdout.write("没有可用 Skill。\n");
367
+ const name = await select({ message: "选择 Skill", options: items.map((item, index) => ({ value: itemName(item, `skill-${index + 1}`), label: itemName(item, `skill-${index + 1}`), hint: String(item.description ?? item.status ?? "") })) });
368
+ if (isCancel(name))
369
+ return void cancel("已取消");
370
+ const action = await select({ message: `对 ${name} 执行`, options: [
371
+ { value: "inspect", label: "查看详情" }, { value: "install", label: "安装到本机" },
372
+ { value: "submit", label: "提交审核" }, { value: "publish", label: "发布版本" },
373
+ { value: "online", label: "上线" }, { value: "offline", label: "下线" }
374
+ ] });
375
+ if (isCancel(action))
376
+ return void cancel("已取消");
377
+ if (action === "inspect")
378
+ return void process.stdout.write(`${JSON.stringify(sanitizeRegistryOutput(await client.getSkill(namespaceId, name)), null, 2)}\n`);
379
+ if (action === "install") {
380
+ const agent = await select({ message: "安装目标", options: ["chatgpt", "codex", "claude", "cursor", "workbuddy", "openclaw", "agents"].map((value) => ({ value, label: value })) });
381
+ if (isCancel(agent))
382
+ return void cancel("已取消");
383
+ const scope = await select({ message: "安装范围", options: [{ value: "project", label: "当前项目" }, { value: "user", label: "当前用户" }] });
384
+ if (isCancel(scope))
385
+ return void cancel("已取消");
386
+ const archive = await client.downloadSkill(namespaceId, name, { label: "latest" });
387
+ const result = await installSkillArchive(archive.bytes, { agent: skillAgent(agent), scope: installScope(scope), skillName: name });
388
+ return void process.stdout.write(`已安装: ${result.installedPath}\n`);
389
+ }
390
+ let version;
391
+ if (action === "publish") {
392
+ const answer = await text({ message: "输入要发布的 SemVer" });
393
+ if (isCancel(answer))
394
+ return void cancel("已取消");
395
+ version = answer;
396
+ }
397
+ const approved = await confirm({ message: `确认执行 ${action}?`, initialValue: false });
398
+ if (isCancel(approved) || !approved)
399
+ return void cancel("已取消");
400
+ await client.skillAction(namespaceId, name, action, { version });
401
+ process.stdout.write(`${name}: ${action} 完成\n`);
402
+ }
403
+ async function mcpTui(client, namespaceId) {
404
+ const page = await client.listMcpServers(namespaceId, { pageSize: 100 });
405
+ const items = pageItems(page);
406
+ if (!items.length)
407
+ return void process.stdout.write("没有可用 MCP Server。\n");
408
+ const name = await select({ message: "选择 MCP Server", options: items.map((item, index) => ({ value: itemName(item, `mcp-${index + 1}`), label: itemName(item, `mcp-${index + 1}`), hint: String(item.description ?? item.protocol ?? "") })) });
409
+ if (isCancel(name))
410
+ return void cancel("已取消");
411
+ const action = await select({ message: `对 ${name} 执行`, options: [{ value: "inspect", label: "查看详情" }, { value: "install", label: "安装到客户端" }] });
412
+ if (isCancel(action))
413
+ return void cancel("已取消");
414
+ const detail = await client.getMcpServer(namespaceId, name);
415
+ if (action === "inspect")
416
+ return void process.stdout.write(`${JSON.stringify(sanitizeRegistryOutput(detail), null, 2)}\n`);
417
+ const agent = await select({ message: "安装目标", options: ["chatgpt", "codex", "claude", "cursor", "workbuddy", "openclaw"].map((value) => ({ value, label: value })) });
418
+ if (isCancel(agent))
419
+ return void cancel("已取消");
420
+ const result = await installMcpDefinition(detail, { agent: mcpAgent(agent), scope: agent === "codex" || agent === "openclaw" ? "user" : "project" });
421
+ process.stdout.write(`已安装 MCP: ${result.configPath ?? "客户端 CLI 配置"}\n`);
422
+ }
423
+ function skillAgent(value) {
424
+ if (["chatgpt", "codex", "claude", "cursor", "workbuddy", "openclaw", "agents", "custom"].includes(value))
425
+ return value;
426
+ throw new AiRegistryError("Unsupported Skill agent target.", "ai_registry_install_target_invalid");
427
+ }
428
+ function mcpAgent(value) {
429
+ if (["chatgpt", "codex", "claude", "cursor", "workbuddy", "openclaw", "custom"].includes(value))
430
+ return value;
431
+ throw new AiRegistryError("Unsupported MCP agent target.", "ai_registry_install_target_invalid");
432
+ }
433
+ function installScope(value) {
434
+ if (value === "project" || value === "user")
435
+ return value;
436
+ throw new AiRegistryError("scope must be project or user.", "ai_registry_install_target_invalid");
437
+ }
438
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/ai-registry/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function redactRegistryText(value: string): string;
2
+ export declare class AiRegistryError extends Error {
3
+ readonly code: string;
4
+ readonly status?: number | undefined;
5
+ readonly requestId?: string | undefined;
6
+ constructor(message: string, code: string, status?: number | undefined, requestId?: string | undefined);
7
+ }
8
+ export declare function sanitizeRegistryOutput(value: unknown, key?: string): unknown;
@@ -0,0 +1,40 @@
1
+ export function redactRegistryText(value) {
2
+ return value
3
+ .replace(/\bBearer\s+[A-Za-z0-9._~+/=-]+/giu, "Bearer [REDACTED]")
4
+ .replace(/("(?:accessToken|refreshToken|token|secret|password|authorization|api[_-]?key|credential)"\s*:\s*")[^"]+/giu, "$1[REDACTED]")
5
+ .replace(/([?&](?:access_token|token|signature|api[_-]?key)=)[^&#\s]+/giu, "$1[REDACTED]");
6
+ }
7
+ export class AiRegistryError extends Error {
8
+ code;
9
+ status;
10
+ requestId;
11
+ constructor(message, code, status, requestId) {
12
+ super(redactRegistryText(message));
13
+ this.code = code;
14
+ this.status = status;
15
+ this.requestId = requestId;
16
+ this.name = "AiRegistryError";
17
+ }
18
+ }
19
+ export function sanitizeRegistryOutput(value, key = "") {
20
+ const sensitive = /(?:authorization|accessToken|refreshToken|token|secret|password|credential|api[_-]?key)/iu;
21
+ if (sensitive.test(key)) {
22
+ return "[REDACTED]";
23
+ }
24
+ if (typeof value === "string")
25
+ return redactRegistryText(value);
26
+ if (Array.isArray(value))
27
+ return value.map((item) => sanitizeRegistryOutput(item));
28
+ if (value && typeof value === "object") {
29
+ const record = value;
30
+ const sensitiveNamedValue = typeof record.name === "string" && sensitive.test(record.name);
31
+ return Object.fromEntries(Object.entries(record).map(([name, item]) => [
32
+ name,
33
+ sensitiveNamedValue && /^(?:value|defaultValue)$/iu.test(name)
34
+ ? "[REDACTED]"
35
+ : sanitizeRegistryOutput(item, name)
36
+ ]));
37
+ }
38
+ return value;
39
+ }
40
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/ai-registry/errors.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,KAAK;SACT,OAAO,CAAC,mCAAmC,EAAE,mBAAmB,CAAC;SACjE,OAAO,CAAC,6GAA6G,EAAE,cAAc,CAAC;SACtI,OAAO,CAAC,gEAAgE,EAAE,cAAc,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAGtB,IAAI;IACJ,MAAM;IACN,SAAS;IAJ3B,YACE,OAAe,EACC,IAAY,EACZ,MAAe,EACf,SAAkB;QAElC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;oBAJnB,IAAI;sBACJ,MAAM;yBACN,SAAS;QAGzB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,GAAG,GAAG,EAAE;IAC7D,MAAM,SAAS,GAAG,2FAA2F,CAAC;IAC9G,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,mBAAmB,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3F,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI;YACJ,mBAAmB,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5D,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC;SACvC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}