@birdie_moblie/plugin-marketplace-cli 1.0.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -0
- package/README.md +103 -6
- package/dist/adapters/agent-plugins.d.ts +11 -0
- package/dist/adapters/agent-plugins.js +66 -0
- package/dist/adapters/agent-plugins.js.map +1 -0
- package/dist/adapters/claude.d.ts +32 -1
- package/dist/adapters/claude.js +119 -14
- package/dist/adapters/claude.js.map +1 -1
- package/dist/adapters/codex.d.ts +7 -0
- package/dist/adapters/codex.js +10 -14
- package/dist/adapters/codex.js.map +1 -1
- package/dist/adapters/marketplace-registration.d.ts +17 -0
- package/dist/adapters/marketplace-registration.js +367 -0
- package/dist/adapters/marketplace-registration.js.map +1 -0
- package/dist/adapters/openspec.d.ts +66 -0
- package/dist/adapters/openspec.js +232 -0
- package/dist/adapters/openspec.js.map +1 -0
- package/dist/application/marketplace-registration-contract.d.ts +51 -0
- package/dist/application/marketplace-registration-contract.js +11 -0
- package/dist/application/marketplace-registration-contract.js.map +1 -0
- package/dist/application/marketplace-registration.d.ts +20 -0
- package/dist/application/marketplace-registration.js +304 -0
- package/dist/application/marketplace-registration.js.map +1 -0
- package/dist/cli.d.ts +2 -1
- package/dist/cli.js +25 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts +1 -1
- package/dist/commands/build.js +27 -5
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/index-gen.d.ts +10 -0
- package/dist/commands/index-gen.js +81 -20
- package/dist/commands/index-gen.js.map +1 -1
- package/dist/commands/init-repo.js +11 -2
- package/dist/commands/init-repo.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +61 -9
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-repo.d.ts +20 -0
- package/dist/commands/install-repo.js +200 -0
- package/dist/commands/install-repo.js.map +1 -0
- package/dist/commands/release-local.d.ts +1 -0
- package/dist/commands/release-local.js +310 -7
- package/dist/commands/release-local.js.map +1 -1
- package/dist/commands/validate.js +399 -16
- package/dist/commands/validate.js.map +1 -1
- package/dist/core/errors.d.ts +5 -0
- package/dist/core/errors.js +12 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/generated/skill-content.js +1 -1
- package/dist/generated/skill-content.js.map +1 -1
- package/dist/infrastructure/process-runner.d.ts +29 -0
- package/dist/infrastructure/process-runner.js +130 -0
- package/dist/infrastructure/process-runner.js.map +1 -0
- package/dist/infrastructure/vscode-user-settings.d.ts +42 -0
- package/dist/infrastructure/vscode-user-settings.js +509 -0
- package/dist/infrastructure/vscode-user-settings.js.map +1 -0
- package/dist/schema/agent-plugins.d.ts +221 -0
- package/dist/schema/agent-plugins.js +155 -0
- package/dist/schema/agent-plugins.js.map +1 -0
- package/dist/schema/plugin-yaml.d.ts +37 -3
- package/dist/schema/plugin-yaml.js +89 -4
- package/dist/schema/plugin-yaml.js.map +1 -1
- package/dist/utils/helpers.d.ts +1 -0
- package/dist/utils/helpers.js +1 -0
- package/dist/utils/helpers.js.map +1 -1
- package/dist/validation/agent-plugins.d.ts +3 -0
- package/dist/validation/agent-plugins.js +418 -0
- package/dist/validation/agent-plugins.js.map +1 -0
- package/package.json +14 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-local.js","sourceRoot":"","sources":["../../src/commands/release-local.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"release-local.js","sourceRoot":"","sources":["../../src/commands/release-local.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 用法:mp validate [name] 或 mp validate --all
|
|
5
5
|
*/
|
|
6
|
-
import { accessSync, constants, existsSync, statSync } from 'node:fs';
|
|
6
|
+
import { accessSync, constants, existsSync, readFileSync, realpathSync, statSync } from 'node:fs';
|
|
7
7
|
import { isAbsolute, join, relative, resolve } from 'node:path';
|
|
8
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
8
9
|
import chalk from 'chalk';
|
|
9
|
-
import { loadPluginYaml, listPluginNames, resolveRepoContext, } from '../utils/helpers.js';
|
|
10
|
+
import { loadAllPlugins, loadMarketplaceMetadata, loadPluginYaml, listPluginNames, resolveRepoContext, } from '../utils/helpers.js';
|
|
11
|
+
import { isPluginStdioMcp } from '../schema/plugin-yaml.js';
|
|
12
|
+
import { buildClaudeManifest, buildHooksConfig, buildLspConfig, buildMcpConfig } from '../adapters/claude.js';
|
|
13
|
+
import { buildCodexManifest } from '../adapters/codex.js';
|
|
14
|
+
import { buildOpenSpecManifest, buildOpenSpecSourceAdapterIndexEntry, findDuplicateOpenSpecAdapterOperations, isOpenSpecAdapterKind, } from '../adapters/openspec.js';
|
|
15
|
+
import { collectAgentPluginGeneratedErrors, collectAgentPluginSourceErrors, } from '../validation/agent-plugins.js';
|
|
16
|
+
import { buildClientMarketplaceIndexesForContext } from './index-gen.js';
|
|
10
17
|
function isInsidePlugin(pluginDir, targetPath) {
|
|
11
18
|
const rel = relative(pluginDir, targetPath);
|
|
12
19
|
return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
|
|
@@ -44,6 +51,368 @@ function validateExecutable(filePath, displayPath, errors) {
|
|
|
44
51
|
errors.push(`Hook 脚本不可执行: ${displayPath}`);
|
|
45
52
|
}
|
|
46
53
|
}
|
|
54
|
+
function validateHookComponents(pluginDir, config, errors) {
|
|
55
|
+
const hooks = config.components.hooks || [];
|
|
56
|
+
for (const hook of hooks) {
|
|
57
|
+
if (!/^[A-Za-z][A-Za-z0-9]*$/.test(hook.event) || ['constructor', 'prototype'].includes(hook.event)) {
|
|
58
|
+
errors.push(`Hook event 名称不安全: ${hook.event}`);
|
|
59
|
+
}
|
|
60
|
+
const hasScript = typeof hook.script === 'string' && hook.script.length > 0;
|
|
61
|
+
const hasCommand = typeof hook.command === 'string' && hook.command.length > 0;
|
|
62
|
+
if (hasScript === hasCommand) {
|
|
63
|
+
errors.push('Hook 必须且只能配置 script 或 legacy command 之一');
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (hook.matcher != null && hook.pattern != null) {
|
|
67
|
+
errors.push(`Hook matcher 与 legacy pattern 不能同时配置: ${hook.event}`);
|
|
68
|
+
}
|
|
69
|
+
if (hook.type != null && hook.type !== 'command') {
|
|
70
|
+
errors.push(`Hook type 目前仅支持 command: ${hook.event}`);
|
|
71
|
+
}
|
|
72
|
+
if (hook.timeoutSeconds != null && (!Number.isFinite(hook.timeoutSeconds) || hook.timeoutSeconds <= 0)) {
|
|
73
|
+
errors.push(`Hook timeoutSeconds 必须是正数秒: ${hook.event}`);
|
|
74
|
+
}
|
|
75
|
+
if (hook.timeout != null && (!Number.isFinite(hook.timeout) || hook.timeout <= 0)) {
|
|
76
|
+
errors.push(`Hook legacy timeout 必须是正数毫秒: ${hook.event}`);
|
|
77
|
+
}
|
|
78
|
+
if (hook.timeoutSeconds != null && hook.timeout != null) {
|
|
79
|
+
errors.push(`Hook timeoutSeconds 与 legacy timeout 不能同时配置: ${hook.event}`);
|
|
80
|
+
}
|
|
81
|
+
if (hook.interpreter != null) {
|
|
82
|
+
if (!hasScript) {
|
|
83
|
+
errors.push(`Hook interpreter 只能与 script 一起配置: ${hook.event}`);
|
|
84
|
+
}
|
|
85
|
+
else if (!/^[A-Za-z0-9._+-]+$/.test(hook.interpreter)) {
|
|
86
|
+
errors.push(`Hook interpreter 不是安全的可执行名称: ${hook.interpreter}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const configuredPath = hasScript ? hook.script : hook.command;
|
|
90
|
+
if (!/^[A-Za-z0-9._/ -]+$/.test(configuredPath)) {
|
|
91
|
+
errors.push(`Hook script 包含不安全的 shell 路径字符: ${configuredPath}`);
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const scriptPath = resolvePluginPath(pluginDir, configuredPath, 'Hook 脚本路径', errors);
|
|
95
|
+
if (!scriptPath)
|
|
96
|
+
continue;
|
|
97
|
+
if (!existsSync(scriptPath)) {
|
|
98
|
+
errors.push(`Hook 脚本不存在: ${configuredPath}`);
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
let realPath;
|
|
102
|
+
try {
|
|
103
|
+
realPath = realpathSync(scriptPath);
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
errors.push(`Hook 脚本真实路径不可解析: ${configuredPath}`);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (!isInsidePlugin(realpathSync(pluginDir), realPath)) {
|
|
110
|
+
errors.push(`Hook 脚本通过符号链接越过插件目录: ${configuredPath}`);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
validateExecutable(realPath, configuredPath, errors);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function validateHooksGeneratedFile(pluginDir, config, errors) {
|
|
117
|
+
const hooksPath = join(pluginDir, 'hooks', 'hooks.json');
|
|
118
|
+
let expected;
|
|
119
|
+
try {
|
|
120
|
+
expected = buildHooksConfig(config);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
errors.push(err.message);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (!existsSync(hooksPath)) {
|
|
127
|
+
if (expected)
|
|
128
|
+
errors.push('Hook 配置缺失,请重新运行 build: hooks/hooks.json');
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (!expected) {
|
|
132
|
+
errors.push('Hook 配置已过期,请重新运行 build: hooks/hooks.json');
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const actual = readGeneratedJson(hooksPath, errors);
|
|
136
|
+
if (actual !== undefined && !isDeepStrictEqual(actual, expected)) {
|
|
137
|
+
errors.push('Hook 配置与 plugin.yaml 派生结果不一致,请重新运行 build: hooks/hooks.json');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function readGeneratedJson(filePath, errors) {
|
|
141
|
+
if (!existsSync(filePath))
|
|
142
|
+
return undefined;
|
|
143
|
+
try {
|
|
144
|
+
return JSON.parse(readFileSync(filePath, 'utf-8'));
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
errors.push(`生成文件不是有效 JSON: ${filePath}: ${err.message}`);
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function isRecord(value) {
|
|
152
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
153
|
+
}
|
|
154
|
+
function validateNoOpenSpecField(filePath, label, errors) {
|
|
155
|
+
const json = readGeneratedJson(filePath, errors);
|
|
156
|
+
if (!isRecord(json))
|
|
157
|
+
return;
|
|
158
|
+
if (Object.prototype.hasOwnProperty.call(json, 'openspec')) {
|
|
159
|
+
errors.push(`${label} 不应包含 top-level openspec 字段: ${filePath}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function validateExactGeneratedFile(filePath, label, expected, errors) {
|
|
163
|
+
const hasFile = existsSync(filePath);
|
|
164
|
+
if (!hasFile) {
|
|
165
|
+
if (expected != null) {
|
|
166
|
+
errors.push(`${label} 缺失,请重新运行 build: ${filePath}`);
|
|
167
|
+
}
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (expected == null) {
|
|
171
|
+
errors.push(`${label} 已过期,请重新运行 build: ${filePath}`);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const actual = readGeneratedJson(filePath, errors);
|
|
175
|
+
if (actual === undefined)
|
|
176
|
+
return;
|
|
177
|
+
if (!isDeepStrictEqual(actual, expected)) {
|
|
178
|
+
errors.push(`${label} 与 plugin.yaml 派生结果不一致,请重新运行 build: ${filePath}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function validatePlatformGeneratedFiles(pluginDir, config, errors) {
|
|
182
|
+
const claudeManifestPath = join(pluginDir, '.claude-plugin/plugin.json');
|
|
183
|
+
validateExactGeneratedFile(claudeManifestPath, 'Claude manifest', buildClaudeManifest(config), errors);
|
|
184
|
+
validateNoOpenSpecField(claudeManifestPath, 'Claude manifest', errors);
|
|
185
|
+
const codexManifestPath = join(pluginDir, '.codex-plugin/plugin.json');
|
|
186
|
+
validateExactGeneratedFile(codexManifestPath, 'Codex manifest', buildCodexManifest(config), errors);
|
|
187
|
+
validateNoOpenSpecField(codexManifestPath, 'Codex manifest', errors);
|
|
188
|
+
validateExactGeneratedFile(join(pluginDir, '.mcp.json'), '原生 MCP 配置', buildMcpConfig(config), errors);
|
|
189
|
+
}
|
|
190
|
+
function validateOpenSpecSidecar(pluginDir, config, errors) {
|
|
191
|
+
const expectedManifest = buildOpenSpecManifest(config, pluginDir);
|
|
192
|
+
const sidecarPath = join(pluginDir, '.openspec-plugin/plugin.json');
|
|
193
|
+
if (!existsSync(sidecarPath)) {
|
|
194
|
+
if (expectedManifest) {
|
|
195
|
+
errors.push(`OpenSpec sidecar 缺失,请重新运行 build: .openspec-plugin/plugin.json`);
|
|
196
|
+
}
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (!expectedManifest) {
|
|
200
|
+
errors.push(`OpenSpec sidecar 已过期,请重新运行 build: .openspec-plugin/plugin.json`);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const sidecar = readGeneratedJson(sidecarPath, errors);
|
|
204
|
+
if (sidecar === undefined)
|
|
205
|
+
return;
|
|
206
|
+
if (!isDeepStrictEqual(sidecar, expectedManifest)) {
|
|
207
|
+
errors.push(`OpenSpec sidecar 与 openspec-source-adapters.yaml 派生 manifest 不一致,请重新运行 build: .openspec-plugin/plugin.json`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
function validateLspComponents(pluginDir, config, errors) {
|
|
211
|
+
const lsps = config.components.lsp;
|
|
212
|
+
if (!lsps || lsps.length === 0)
|
|
213
|
+
return;
|
|
214
|
+
const seenNames = new Set();
|
|
215
|
+
for (const lsp of lsps) {
|
|
216
|
+
if (seenNames.has(lsp.name)) {
|
|
217
|
+
errors.push(`LSP server name 重复: ${lsp.name}`);
|
|
218
|
+
}
|
|
219
|
+
seenNames.add(lsp.name);
|
|
220
|
+
if (lsp.transport != null && lsp.transport !== 'stdio' && lsp.transport !== 'socket') {
|
|
221
|
+
errors.push(`LSP transport 仅支持 stdio 或 socket: ${lsp.name}`);
|
|
222
|
+
}
|
|
223
|
+
if (lsp.startupTimeout != null && lsp.startupTimeout < 0) {
|
|
224
|
+
errors.push(`LSP startupTimeout 不能为负数: ${lsp.name}`);
|
|
225
|
+
}
|
|
226
|
+
if (lsp.maxRestarts != null && lsp.maxRestarts < 0) {
|
|
227
|
+
errors.push(`LSP maxRestarts 不能为负数: ${lsp.name}`);
|
|
228
|
+
}
|
|
229
|
+
for (const [extension, languageId] of Object.entries(lsp.extensionToLanguage)) {
|
|
230
|
+
if (!extension.startsWith('.')) {
|
|
231
|
+
errors.push(`LSP extensionToLanguage 扩展名必须以 \\. 开头: ${extension}`);
|
|
232
|
+
}
|
|
233
|
+
if (languageId.trim().length === 0) {
|
|
234
|
+
errors.push(`LSP extensionToLanguage language id 不能为空: ${extension}`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (looksLikePluginLocalPath(lsp.command)) {
|
|
238
|
+
const commandPath = resolvePluginPath(pluginDir, lsp.command, 'LSP command 路径', errors);
|
|
239
|
+
if (commandPath && !existsSync(commandPath)) {
|
|
240
|
+
errors.push(`LSP command 文件不存在: ${lsp.command}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
for (const arg of lsp.args || []) {
|
|
244
|
+
if (!looksLikePluginLocalPath(arg))
|
|
245
|
+
continue;
|
|
246
|
+
const argPath = resolvePluginPath(pluginDir, arg, 'LSP args 路径', errors);
|
|
247
|
+
if (argPath && !existsSync(argPath)) {
|
|
248
|
+
errors.push(`LSP args 引用的文件不存在: ${arg}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
function validateLspGeneratedFile(pluginDir, config, errors) {
|
|
254
|
+
const lspPath = join(pluginDir, '.lsp.json');
|
|
255
|
+
const expectedConfig = buildLspConfig(config);
|
|
256
|
+
const hasGeneratedFile = existsSync(lspPath);
|
|
257
|
+
if (!hasGeneratedFile) {
|
|
258
|
+
if (expectedConfig) {
|
|
259
|
+
errors.push(`LSP 配置缺失,请重新运行 build: .lsp.json`);
|
|
260
|
+
}
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
if (!expectedConfig) {
|
|
264
|
+
errors.push(`LSP 配置已过期,请删除或重新运行 build: .lsp.json`);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
const actualConfig = readGeneratedJson(lspPath, errors);
|
|
268
|
+
if (actualConfig === undefined)
|
|
269
|
+
return;
|
|
270
|
+
if (!isDeepStrictEqual(actualConfig, expectedConfig)) {
|
|
271
|
+
errors.push(`LSP 配置与 plugin.yaml 派生结果不一致,请重新运行 build: .lsp.json`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
function buildExpectedRootOpenSpecIndex(context) {
|
|
275
|
+
const plugins = loadAllPlugins(context);
|
|
276
|
+
const marketplace = loadMarketplaceMetadata(context);
|
|
277
|
+
const openSpecEntries = plugins
|
|
278
|
+
.map(({ name, dir, config }) => buildOpenSpecSourceAdapterIndexEntry(config, dir, `./plugins/${name}`))
|
|
279
|
+
.filter((entry) => entry !== null);
|
|
280
|
+
return {
|
|
281
|
+
schemaVersion: 'openspec.source-adapters.v1',
|
|
282
|
+
name: marketplace.name,
|
|
283
|
+
description: marketplace.description || '',
|
|
284
|
+
plugins: openSpecEntries,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
function validateAllowedKeys(value, allowedKeys, label, indexPath, errors) {
|
|
288
|
+
const allowed = new Set(allowedKeys);
|
|
289
|
+
for (const key of Object.keys(value)) {
|
|
290
|
+
if (!allowed.has(key)) {
|
|
291
|
+
errors.push(`OpenSpec source adapter index ${label} contains unexpected field '${key}': ${indexPath}`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function validateRootOpenSpecIndexShape(indexPath, index, errors) {
|
|
296
|
+
validateAllowedKeys(index, ['schemaVersion', 'name', 'description', 'plugins'], 'root', indexPath, errors);
|
|
297
|
+
if (index.schemaVersion !== 'openspec.source-adapters.v1') {
|
|
298
|
+
errors.push(`OpenSpec source adapter index schemaVersion 错误: ${indexPath}`);
|
|
299
|
+
}
|
|
300
|
+
if (typeof index.name !== 'string') {
|
|
301
|
+
errors.push(`OpenSpec source adapter index name 必须是 string: ${indexPath}`);
|
|
302
|
+
}
|
|
303
|
+
if (typeof index.description !== 'string') {
|
|
304
|
+
errors.push(`OpenSpec source adapter index description 必须是 string: ${indexPath}`);
|
|
305
|
+
}
|
|
306
|
+
if (!Array.isArray(index.plugins)) {
|
|
307
|
+
errors.push(`OpenSpec source adapter index plugins 必须是 array: ${indexPath}`);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const plugins = index.plugins;
|
|
311
|
+
for (const plugin of plugins) {
|
|
312
|
+
if (!isRecord(plugin)) {
|
|
313
|
+
errors.push(`OpenSpec source adapter index plugin entry 不是对象: ${indexPath}`);
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
validateAllowedKeys(plugin, ['name', 'source', 'manifest', 'adapters'], 'plugin entry', indexPath, errors);
|
|
317
|
+
if (typeof plugin.name !== 'string' ||
|
|
318
|
+
typeof plugin.source !== 'string' ||
|
|
319
|
+
typeof plugin.manifest !== 'string') {
|
|
320
|
+
errors.push(`OpenSpec source adapter index plugin entry 缺少 name/source/manifest: ${indexPath}`);
|
|
321
|
+
}
|
|
322
|
+
if (!Array.isArray(plugin.adapters)) {
|
|
323
|
+
errors.push(`OpenSpec source adapter index plugin adapters 必须是 array: ${indexPath}`);
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
const adapters = plugin.adapters;
|
|
327
|
+
for (const adapter of adapters) {
|
|
328
|
+
if (!isRecord(adapter)) {
|
|
329
|
+
errors.push(`OpenSpec source adapter index adapter entry 不是对象: ${indexPath}`);
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
validateAllowedKeys(adapter, ['id', 'capability', 'kind', 'operations'], 'adapter entry', indexPath, errors);
|
|
333
|
+
if (typeof adapter.id !== 'string' || typeof adapter.capability !== 'string') {
|
|
334
|
+
errors.push(`OpenSpec source adapter index adapter entry 缺少 id/capability: ${indexPath}`);
|
|
335
|
+
}
|
|
336
|
+
if (!isOpenSpecAdapterKind(adapter.kind)) {
|
|
337
|
+
errors.push(`OpenSpec source adapter index adapter kind 非法: ${indexPath}`);
|
|
338
|
+
}
|
|
339
|
+
if (!Array.isArray(adapter.operations) ||
|
|
340
|
+
adapter.operations.some((operation) => typeof operation !== 'string')) {
|
|
341
|
+
errors.push(`OpenSpec source adapter index adapter operations 必须是 string array: ${indexPath}`);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
function validateRootOpenSpecIndex(context, errors) {
|
|
347
|
+
validateNoOpenSpecField(join(context.rootDir, '.claude-plugin/marketplace.json'), 'Claude marketplace', errors);
|
|
348
|
+
validateNoOpenSpecField(join(context.rootDir, '.agents/plugins/marketplace.json'), 'Codex marketplace', errors);
|
|
349
|
+
validateNoOpenSpecField(join(context.rootDir, 'marketplace.json'), 'Codex marketplace mirror', errors);
|
|
350
|
+
const indexPath = join(context.rootDir, '.openspec-plugin/source-adapters.json');
|
|
351
|
+
const index = readGeneratedJson(indexPath, errors);
|
|
352
|
+
if (!isRecord(index)) {
|
|
353
|
+
errors.push(`OpenSpec source adapter index 缺失或格式错误: ${indexPath}`);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
const shapeErrorCountBefore = errors.length;
|
|
357
|
+
validateRootOpenSpecIndexShape(indexPath, index, errors);
|
|
358
|
+
let parsedDuplicateErrors = [];
|
|
359
|
+
if (errors.length === shapeErrorCountBefore && Array.isArray(index.plugins)) {
|
|
360
|
+
parsedDuplicateErrors = findDuplicateOpenSpecAdapterOperations(index.plugins);
|
|
361
|
+
}
|
|
362
|
+
let expectedIndex;
|
|
363
|
+
try {
|
|
364
|
+
expectedIndex = buildExpectedRootOpenSpecIndex(context);
|
|
365
|
+
}
|
|
366
|
+
catch (err) {
|
|
367
|
+
errors.push(err.message);
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
const expectedDuplicateErrors = findDuplicateOpenSpecAdapterOperations(expectedIndex.plugins);
|
|
371
|
+
errors.push(...(expectedDuplicateErrors.length > 0 ? expectedDuplicateErrors : parsedDuplicateErrors));
|
|
372
|
+
if (!isDeepStrictEqual(index, expectedIndex)) {
|
|
373
|
+
errors.push(`OpenSpec source adapter index 与 marketplace / plugin overlay 派生结果不一致,请重新运行 build:index: ${indexPath}`);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
function validateRootMarketplaceIndexes(context, errors) {
|
|
377
|
+
const indexes = buildClientMarketplaceIndexesForContext(context);
|
|
378
|
+
const expectedFiles = [
|
|
379
|
+
{
|
|
380
|
+
path: join(context.rootDir, '.claude-plugin/marketplace.json'),
|
|
381
|
+
label: 'Claude marketplace',
|
|
382
|
+
expected: indexes.claude,
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
path: join(context.rootDir, '.github/plugin/marketplace.json'),
|
|
386
|
+
label: 'GitHub Copilot marketplace',
|
|
387
|
+
expected: indexes.claude,
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
path: join(context.rootDir, '.agents/plugins/marketplace.json'),
|
|
391
|
+
label: 'Codex marketplace',
|
|
392
|
+
expected: indexes.codex,
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
path: join(context.rootDir, 'marketplace.json'),
|
|
396
|
+
label: 'Codex marketplace mirror',
|
|
397
|
+
expected: indexes.codex,
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
path: join(context.rootDir, '.cursor-plugin/marketplace.json'),
|
|
401
|
+
label: 'Cursor marketplace',
|
|
402
|
+
expected: indexes.cursor,
|
|
403
|
+
},
|
|
404
|
+
];
|
|
405
|
+
for (const item of expectedFiles) {
|
|
406
|
+
const actual = readGeneratedJson(item.path, errors);
|
|
407
|
+
if (actual === undefined) {
|
|
408
|
+
errors.push(`${item.label} 缺失或格式错误,请重新运行 build:index: ${item.path}`);
|
|
409
|
+
continue;
|
|
410
|
+
}
|
|
411
|
+
if (!isDeepStrictEqual(actual, item.expected)) {
|
|
412
|
+
errors.push(`${item.label} 与 marketplace.yaml / plugin.yaml 派生结果不一致,请重新运行 build:index: ${item.path}`);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
47
416
|
function validateOne(context, name) {
|
|
48
417
|
const pluginDir = join(context.pluginsDir, name);
|
|
49
418
|
const errors = [];
|
|
@@ -74,22 +443,14 @@ function validateOne(context, name) {
|
|
|
74
443
|
}
|
|
75
444
|
}
|
|
76
445
|
}
|
|
77
|
-
// 4. 验证 hook
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const scriptPath = resolvePluginPath(pluginDir, hook.command, 'Hook 脚本路径', errors);
|
|
81
|
-
if (!scriptPath)
|
|
82
|
-
continue;
|
|
83
|
-
if (!existsSync(scriptPath)) {
|
|
84
|
-
errors.push(`Hook 脚本不存在: ${hook.command}`);
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
validateExecutable(scriptPath, hook.command, errors);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
446
|
+
// 4. 验证 hook 源配置、脚本边界和生成文件
|
|
447
|
+
validateHookComponents(pluginDir, config, errors);
|
|
448
|
+
validateHooksGeneratedFile(pluginDir, config, errors);
|
|
90
449
|
// 5. 验证 MCP 本地文件引用存在且不越过插件目录
|
|
91
450
|
if (config.components.mcp) {
|
|
92
451
|
for (const mcp of config.components.mcp) {
|
|
452
|
+
if (!isPluginStdioMcp(mcp))
|
|
453
|
+
continue;
|
|
93
454
|
if (looksLikePluginLocalPath(mcp.command)) {
|
|
94
455
|
const commandPath = resolvePluginPath(pluginDir, mcp.command, 'MCP command 路径', errors);
|
|
95
456
|
if (commandPath && !existsSync(commandPath)) {
|
|
@@ -106,10 +467,20 @@ function validateOne(context, name) {
|
|
|
106
467
|
}
|
|
107
468
|
}
|
|
108
469
|
}
|
|
109
|
-
// 6.
|
|
470
|
+
// 6. 验证 LSP 契约与 Claude 生成文件
|
|
471
|
+
validateLspComponents(pluginDir, config, errors);
|
|
472
|
+
validateLspGeneratedFile(pluginDir, config, errors);
|
|
473
|
+
// 7. 名称一致性检查
|
|
110
474
|
if (config.name !== name) {
|
|
111
475
|
errors.push(`plugin.yaml 中的 name (${config.name}) 与目录名 (${name}) 不一致`);
|
|
112
476
|
}
|
|
477
|
+
// 8. 验证 Claude / Codex / 原生 MCP 生成物 exact derivation
|
|
478
|
+
validatePlatformGeneratedFiles(pluginDir, config, errors);
|
|
479
|
+
// 9. 验证 OpenSpec sidecar 与平台 manifest 隔离
|
|
480
|
+
validateOpenSpecSidecar(pluginDir, config, errors);
|
|
481
|
+
// 10. 验证 Agent Plugins 1.0 源契约与生成文件
|
|
482
|
+
errors.push(...collectAgentPluginSourceErrors(pluginDir, config));
|
|
483
|
+
errors.push(...collectAgentPluginGeneratedErrors(pluginDir, config));
|
|
113
484
|
}
|
|
114
485
|
catch (err) {
|
|
115
486
|
errors.push(err.message);
|
|
@@ -138,6 +509,18 @@ export function runValidate(name, options) {
|
|
|
138
509
|
}
|
|
139
510
|
}
|
|
140
511
|
}
|
|
512
|
+
if (options.all) {
|
|
513
|
+
const rootErrors = [];
|
|
514
|
+
validateRootMarketplaceIndexes(context, rootErrors);
|
|
515
|
+
validateRootOpenSpecIndex(context, rootErrors);
|
|
516
|
+
if (rootErrors.length > 0) {
|
|
517
|
+
allValid = false;
|
|
518
|
+
console.log(chalk.red(` ✗ 根 marketplace / OpenSpec 索引`));
|
|
519
|
+
for (const err of rootErrors) {
|
|
520
|
+
console.log(chalk.red(` └─ ${err}`));
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
141
524
|
console.log();
|
|
142
525
|
if (allValid) {
|
|
143
526
|
console.log(chalk.green(`✓ 所有插件验证通过`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class CommandError extends Error {
|
|
2
|
+
exitCode;
|
|
3
|
+
constructor(message, exitCode = 1) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = 'CommandError';
|
|
6
|
+
this.exitCode = exitCode;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function isCommandError(error) {
|
|
10
|
+
return error instanceof CommandError;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,QAAQ,CAAS;IAE1B,YAAY,OAAe,EAAE,QAAQ,GAAG,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,YAAY,YAAY,CAAC;AACvC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// 此文件由 scripts/generate-skill.ts 自动生成,请勿手动编辑
|
|
2
2
|
// 源头: plugins/marketplace-maintainer/skills/marketplace-maintainer/SKILL.md
|
|
3
|
-
export const MARKETPLACE_MAINTAINER_SKILL = "---\nname: marketplace-maintainer\ndescription: \"帮助团队在 plugin marketplace
|
|
3
|
+
export const MARKETPLACE_MAINTAINER_SKILL = "---\nname: marketplace-maintainer\ndescription: \"帮助团队在 plugin marketplace 插件目录中创建、验证和发布 Agent Plugins 1.0、Claude Code、Codex 与 Cursor 兼容插件\"\nmetadata:\n argument-hint: \"<plugin-name>\"\n---\n\n# Marketplace 维护助手\n\n此 skill 指导你在 plugin marketplace 插件目录仓库中创建、验证和发布插件。`plugin.yaml` 是唯一维护源;每个插件 build 后既是 Agent Plugins 1.0 包,也保留 Claude Code / Codex 平台层。\n\n## 触发条件\n\n当用户需要以下操作时激活此 skill:\n- 创建一个新的 marketplace 插件\n- 验证现有插件的格式\n- 构建 Agent Plugins 1.0 与平台兼容层\n- 更新 marketplace 索引\n\n## 前置准备\n\n1. 确认当前工作目录位于包含 `marketplace.yaml` 的 plugin marketplace 仓库内,或命令显式传入 `--root <dir>`\n2. 使用远程 marketplace / 插件时不需要 `npm install`\n3. 普通插件目录维护优先使用 `npx @birdie_moblie/plugin-marketplace-cli ...`\n4. 只有需要本地固定 CLI 版本或维护 CLI 源码时,才运行对应目录的 `npm install`\n\n## 创建新插件流程\n\n### 步骤 1:使用 CLI 创建骨架\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli init <plugin-name> --type <skill|mcp|lsp|hook>\n```\n\n如果仓库已经配置了本地 `mp` script,也可以使用:\n\n```bash\nnpm run mp -- init <plugin-name> --type <skill|mcp|lsp|hook>\n```\n\n- `skill`:纯提示指令型插件(默认)\n- `mcp`:包含 MCP Server 配置的插件\n- `lsp`:包含 Claude Code LSP 配置的插件,通常也配一个 skill 说明语义检索边界\n- `hook`:包含事件驱动脚本的插件\n\n### 步骤 2:编辑 plugin.yaml\n\n打开 `plugins/<plugin-name>/plugin.yaml`,完善以下必填字段:\n\n```yaml\nname: <plugin-name> # kebab-case,与目录名一致\nversion: \"0.1.0\" # semver 格式\ndescription: \"描述这个插件的功能\" # 支持中文\nauthor:\n name: \"团队名\"\n\ncategory: <类别> # tooling / integration / workflow / quality\ntags: [标签1, 标签2]\n\ncomponents:\n skills: # 至少一种组件类型\n - name: <skill-name>\n path: skills/<skill-name>\n description: \"skill 描述\"\n```\n\n### 步骤 3:编写 SKILL.md(如果是 skill 类型)\n\n编辑 `plugins/<plugin-name>/skills/<skill-name>/SKILL.md`:\n\n- 使用 YAML frontmatter 定义 `name` 和 `description`\n- 在 markdown 正文中编写 agent 执行指令\n- 指令应清晰、步骤化、可执行\n\n### 步骤 4:构建标准包与平台 manifest\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli build <plugin-name>\n```\n\n这会自动生成:\n- `plugin.json` — Agent Plugins 1.0 根 manifest\n- `mcp.json`(如有 MCP)— Agent Plugins 1.0 MCP 配置\n- `.claude-plugin/plugin.json` — Claude Code 原生 manifest\n- `.codex-plugin/plugin.json` — Codex 原生 manifest\n- `.mcp.json`(如有 MCP)— Claude Code / Codex 原生 MCP 配置\n- `hooks/hooks.json`(如有 Hook)\n\n### 步骤 5:验证\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli validate <plugin-name>\n```\n\n确保没有错误。除既有平台契约外,CLI 还会离线校验:\n- `plugin.json` / `mcp.json` 的 Agent Plugins 1.0.0 canonical schema\n- Skill 必须位于 `skills/<name>/SKILL.md`,配置、目录和 frontmatter 名称一致\n- MCP command、cwd、URL、Header、保留变量与生成物 exact derivation\n- `.claude-plugin/plugin.json`、`.codex-plugin/plugin.json`、共享 `.mcp.json` 与 `plugin.yaml` exact derivation\n- 引用路径和符号链接不能越过插件根\n\n### 步骤 6:更新索引\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli index\n```\n\n这会更新:\n- `.claude-plugin/marketplace.json` — Claude Code 官方 marketplace manifest\n- `.github/plugin/marketplace.json` — GitHub Copilot / VS Code marketplace manifest\n- `.agents/plugins/marketplace.json` — Codex 官方 repo marketplace manifest\n- `.cursor-plugin/marketplace.json` — Cursor team marketplace manifest\n- `marketplace.json` — 根目录兼容镜像\n- `plugins/CATALOG.md` — 人类可读的插件目录\n\nAgent Plugins 1.0 不定义 Marketplace;上述索引是客户端各自明确支持的分发入口,不要创建 `.agent-plugins/marketplace.json`。\n\n### 步骤 7:审阅与交付\n\n审阅源码与生成物 diff,并运行仓库的完整质量入口。只有用户明确授权时才 commit、push 或发起 Merge Request。\n\n需要创建一个全新的 plugin marketplace 仓库时,使用:\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli init-repo <marketplace-name> --organization \"<团队名>\"\n```\n\n`init-repo` 会创建 `marketplace.yaml`、`plugins/`、最小 README,并为 `package.json` 补齐推荐 scripts。默认还会把本 SKILL 写入 `.agents/skills/` 和 `.claude/skills/`,让新仓库开箱即用地具备插件维护指引;如需跳过可传 `--no-skill`。生成的 scripts 默认使用 `npx @birdie_moblie/plugin-marketplace-cli`,新仓库不需要先 `npm install` 才能继续创建或验证插件。\n\n## 注册 Marketplace 到客户端\n\n把已就绪的 marketplace 注册到 agent(**不安装具体插件**):\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli install-repo <source> --agent claude --agent codex\nnpx @birdie_moblie/plugin-marketplace-cli install-repo <source> --all\n```\n\n- `<source>` 可以是本地目录、`owner/repo`、HTTPS 或 SSH Git URL;独立于维护用 `--root`\n- 本地来源必须已有对应客户端索引;命令不会隐式 build/index\n- Claude / Codex / Copilot 调用原生 `plugin marketplace add`\n- VS Code 原子更新用户 `settings.json`\n- Cursor 始终返回手工 Dashboard 导入指引\n- 退出码:全部完成 `0`、部分完成 `2`、无完成 `1`、中断 `130`\n\n## plugin.yaml 完整字段参考\n\n```yaml\nname: string # 必填,kebab-case\nversion: string # 必填,semver\ndescription: string # 必填,支持中文\nauthor:\n name: string # 必填\n email: string # 可选\n url: string # 可选\n\ncategory: string # 可选,用于分类\ntags: string[] # 可选,用于搜索\n\ncomponents:\n skills: # Skill 组件列表\n - name: string\n path: string # 相对于插件根目录\n description: string\n argument-hint: string # 可选,slash command 参数提示\n\n mcp: # MCP Server 组件列表\n - name: string\n type: stdio # 可省略以兼容旧配置;新配置推荐显式声明\n command: string # 单一 executable token;bare name 或 ./ 插件相对路径\n args: string[] # 命令参数;支持 ${PLUGIN_ROOT}/${PLUGIN_DATA} 占位符\n env: object # 可见环境变量;不得声明 PLUGIN_ROOT/PLUGIN_DATA 或放 secret\n cwd: string # ./、${PLUGIN_ROOT} 或 ${PLUGIN_DATA} 定位\n description: string\n\n - name: string\n type: streamable-http # 或 sse\n url: https://example.com/mcp\n headers: object # 固定非 secret Header;Authorization/API key 不得内嵌\n\n hooks: # Hook 组件列表\n - event: string # 事件名(PreToolUse, PostToolUse 等)\n matcher: string # 工具名匹配模式\n type: command\n script: string # 插件内可执行脚本路径\n interpreter: string # 可选,如 python3\n timeoutSeconds: number\n statusMessage: string # 可选\n\nplatform: # 可选的平台特有覆盖\n codex:\n interface:\n displayName: string\n shortDescription: string\n longDescription: string\n category: string\n developerName: string\n```\n\n旧 `pattern` / `command` / `timeout` 仅作兼容输入;新增或修改 hook 时使用上述声明式字段。\n\n## Agent Plugins 边界\n\n- v1 只移植 `skills/` 与根 `mcp.json`;Hook、LSP、OpenSpec 和平台 interface 继续走各自原生文件。\n- Hook-only 插件仍生成合法根 `plugin.json`,但不能宣称 Hook 是 Agent Plugins v1 可移植能力。\n- Cursor Team Marketplace 官方仓库导入当前只支持 GitHub/GitHub Enterprise;GitLab 源需受控镜像或本地加载具体插件目录。\n- Kiro 的公开 GitHub Power 导入要求 `plugin.json` 在仓库根;多插件 marketplace 根不能冒充单个插件。\n";
|
|
4
4
|
//# sourceMappingURL=skill-content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-content.js","sourceRoot":"","sources":["../../src/generated/skill-content.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,4EAA4E;AAE5E,MAAM,CAAC,MAAM,4BAA4B,GAAW,
|
|
1
|
+
{"version":3,"file":"skill-content.js","sourceRoot":"","sources":["../../src/generated/skill-content.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,4EAA4E;AAE5E,MAAM,CAAC,MAAM,4BAA4B,GAAW,urMAAurM,CAAC"}
|