@birdie_moblie/plugin-marketplace-cli 1.1.0 → 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.
Files changed (65) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +73 -5
  3. package/dist/adapters/agent-plugins.d.ts +11 -0
  4. package/dist/adapters/agent-plugins.js +66 -0
  5. package/dist/adapters/agent-plugins.js.map +1 -0
  6. package/dist/adapters/claude.d.ts +16 -1
  7. package/dist/adapters/claude.js +82 -13
  8. package/dist/adapters/claude.js.map +1 -1
  9. package/dist/adapters/codex.d.ts +7 -0
  10. package/dist/adapters/codex.js +10 -14
  11. package/dist/adapters/codex.js.map +1 -1
  12. package/dist/adapters/marketplace-registration.d.ts +17 -0
  13. package/dist/adapters/marketplace-registration.js +367 -0
  14. package/dist/adapters/marketplace-registration.js.map +1 -0
  15. package/dist/application/marketplace-registration-contract.d.ts +51 -0
  16. package/dist/application/marketplace-registration-contract.js +11 -0
  17. package/dist/application/marketplace-registration-contract.js.map +1 -0
  18. package/dist/application/marketplace-registration.d.ts +20 -0
  19. package/dist/application/marketplace-registration.js +304 -0
  20. package/dist/application/marketplace-registration.js.map +1 -0
  21. package/dist/cli.d.ts +2 -1
  22. package/dist/cli.js +24 -4
  23. package/dist/cli.js.map +1 -1
  24. package/dist/commands/build.d.ts +1 -1
  25. package/dist/commands/build.js +26 -6
  26. package/dist/commands/build.js.map +1 -1
  27. package/dist/commands/index-gen.d.ts +10 -0
  28. package/dist/commands/index-gen.js +49 -19
  29. package/dist/commands/index-gen.js.map +1 -1
  30. package/dist/commands/init-repo.js +11 -2
  31. package/dist/commands/init-repo.js.map +1 -1
  32. package/dist/commands/init.js +17 -5
  33. package/dist/commands/init.js.map +1 -1
  34. package/dist/commands/install-repo.d.ts +20 -0
  35. package/dist/commands/install-repo.js +200 -0
  36. package/dist/commands/install-repo.js.map +1 -0
  37. package/dist/commands/release-local.d.ts +1 -0
  38. package/dist/commands/release-local.js +285 -7
  39. package/dist/commands/release-local.js.map +1 -1
  40. package/dist/commands/validate.js +173 -19
  41. package/dist/commands/validate.js.map +1 -1
  42. package/dist/core/errors.d.ts +5 -0
  43. package/dist/core/errors.js +12 -0
  44. package/dist/core/errors.js.map +1 -0
  45. package/dist/generated/skill-content.js +1 -1
  46. package/dist/generated/skill-content.js.map +1 -1
  47. package/dist/infrastructure/process-runner.d.ts +29 -0
  48. package/dist/infrastructure/process-runner.js +130 -0
  49. package/dist/infrastructure/process-runner.js.map +1 -0
  50. package/dist/infrastructure/vscode-user-settings.d.ts +42 -0
  51. package/dist/infrastructure/vscode-user-settings.js +509 -0
  52. package/dist/infrastructure/vscode-user-settings.js.map +1 -0
  53. package/dist/schema/agent-plugins.d.ts +221 -0
  54. package/dist/schema/agent-plugins.js +155 -0
  55. package/dist/schema/agent-plugins.js.map +1 -0
  56. package/dist/schema/plugin-yaml.d.ts +23 -3
  57. package/dist/schema/plugin-yaml.js +65 -18
  58. package/dist/schema/plugin-yaml.js.map +1 -1
  59. package/dist/utils/helpers.d.ts +1 -0
  60. package/dist/utils/helpers.js +1 -0
  61. package/dist/utils/helpers.js.map +1 -1
  62. package/dist/validation/agent-plugins.d.ts +3 -0
  63. package/dist/validation/agent-plugins.js +418 -0
  64. package/dist/validation/agent-plugins.js.map +1 -0
  65. package/package.json +9 -5
@@ -3,13 +3,17 @@
3
3
  *
4
4
  * 用法:mp validate [name] 或 mp validate --all
5
5
  */
6
- import { accessSync, constants, existsSync, readFileSync, 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
8
  import { isDeepStrictEqual } from 'node:util';
9
9
  import chalk from 'chalk';
10
10
  import { loadAllPlugins, loadMarketplaceMetadata, loadPluginYaml, listPluginNames, resolveRepoContext, } from '../utils/helpers.js';
11
- import { buildLspConfig } from '../adapters/claude.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';
12
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';
13
17
  function isInsidePlugin(pluginDir, targetPath) {
14
18
  const rel = relative(pluginDir, targetPath);
15
19
  return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
@@ -47,6 +51,92 @@ function validateExecutable(filePath, displayPath, errors) {
47
51
  errors.push(`Hook 脚本不可执行: ${displayPath}`);
48
52
  }
49
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
+ }
50
140
  function readGeneratedJson(filePath, errors) {
51
141
  if (!existsSync(filePath))
52
142
  return undefined;
@@ -69,9 +159,35 @@ function validateNoOpenSpecField(filePath, label, errors) {
69
159
  errors.push(`${label} 不应包含 top-level openspec 字段: ${filePath}`);
70
160
  }
71
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
+ }
72
190
  function validateOpenSpecSidecar(pluginDir, config, errors) {
73
- validateNoOpenSpecField(join(pluginDir, '.claude-plugin/plugin.json'), 'Claude manifest', errors);
74
- validateNoOpenSpecField(join(pluginDir, '.codex-plugin/plugin.json'), 'Codex manifest', errors);
75
191
  const expectedManifest = buildOpenSpecManifest(config, pluginDir);
76
192
  const sidecarPath = join(pluginDir, '.openspec-plugin/plugin.json');
77
193
  if (!existsSync(sidecarPath)) {
@@ -257,6 +373,46 @@ function validateRootOpenSpecIndex(context, errors) {
257
373
  errors.push(`OpenSpec source adapter index 与 marketplace / plugin overlay 派生结果不一致,请重新运行 build:index: ${indexPath}`);
258
374
  }
259
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
+ }
260
416
  function validateOne(context, name) {
261
417
  const pluginDir = join(context.pluginsDir, name);
262
418
  const errors = [];
@@ -287,22 +443,14 @@ function validateOne(context, name) {
287
443
  }
288
444
  }
289
445
  }
290
- // 4. 验证 hook 脚本存在
291
- if (config.components.hooks) {
292
- for (const hook of config.components.hooks) {
293
- const scriptPath = resolvePluginPath(pluginDir, hook.command, 'Hook 脚本路径', errors);
294
- if (!scriptPath)
295
- continue;
296
- if (!existsSync(scriptPath)) {
297
- errors.push(`Hook 脚本不存在: ${hook.command}`);
298
- continue;
299
- }
300
- validateExecutable(scriptPath, hook.command, errors);
301
- }
302
- }
446
+ // 4. 验证 hook 源配置、脚本边界和生成文件
447
+ validateHookComponents(pluginDir, config, errors);
448
+ validateHooksGeneratedFile(pluginDir, config, errors);
303
449
  // 5. 验证 MCP 本地文件引用存在且不越过插件目录
304
450
  if (config.components.mcp) {
305
451
  for (const mcp of config.components.mcp) {
452
+ if (!isPluginStdioMcp(mcp))
453
+ continue;
306
454
  if (looksLikePluginLocalPath(mcp.command)) {
307
455
  const commandPath = resolvePluginPath(pluginDir, mcp.command, 'MCP command 路径', errors);
308
456
  if (commandPath && !existsSync(commandPath)) {
@@ -326,8 +474,13 @@ function validateOne(context, name) {
326
474
  if (config.name !== name) {
327
475
  errors.push(`plugin.yaml 中的 name (${config.name}) 与目录名 (${name}) 不一致`);
328
476
  }
329
- // 8. 验证 OpenSpec sidecar 与平台 manifest 隔离
477
+ // 8. 验证 Claude / Codex / 原生 MCP 生成物 exact derivation
478
+ validatePlatformGeneratedFiles(pluginDir, config, errors);
479
+ // 9. 验证 OpenSpec sidecar 与平台 manifest 隔离
330
480
  validateOpenSpecSidecar(pluginDir, config, errors);
481
+ // 10. 验证 Agent Plugins 1.0 源契约与生成文件
482
+ errors.push(...collectAgentPluginSourceErrors(pluginDir, config));
483
+ errors.push(...collectAgentPluginGeneratedErrors(pluginDir, config));
331
484
  }
332
485
  catch (err) {
333
486
  errors.push(err.message);
@@ -358,10 +511,11 @@ export function runValidate(name, options) {
358
511
  }
359
512
  if (options.all) {
360
513
  const rootErrors = [];
514
+ validateRootMarketplaceIndexes(context, rootErrors);
361
515
  validateRootOpenSpecIndex(context, rootErrors);
362
516
  if (rootErrors.length > 0) {
363
517
  allValid = false;
364
- console.log(chalk.red(` ✗ .openspec-plugin/source-adapters.json`));
518
+ console.log(chalk.red(` ✗ 根 marketplace / OpenSpec 索引`));
365
519
  for (const err of rootErrors) {
366
520
  console.log(chalk.red(` └─ ${err}`));
367
521
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,qBAAqB,EACrB,oCAAoC,EACpC,sCAAsC,EACtC,qBAAqB,GAEtB,MAAM,yBAAyB,CAAC;AAQjC,SAAS,cAAc,CAAC,SAAiB,EAAE,UAAkB;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5C,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,iBAAiB,CACxB,SAAiB,EACjB,cAAsB,EACtB,KAAa,EACb,MAAgB;IAEhB,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,cAAc,cAAc,EAAE,CAAC,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACxD,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,YAAY,cAAc,EAAE,CAAC,CAAC;QAClD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,CACL,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QACtB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACvB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACrB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC1B,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;QACxB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,WAAmB,EAAE,MAAgB;IACjF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,MAAgB;IAC3D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAY,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,kBAAkB,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB,EAAE,KAAa,EAAE,MAAgB;IAChF,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO;IAE5B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAiB,EAAE,MAAkB,EAAE,MAAgB;IACtF,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAClG,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAEhG,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;IAEpE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAElC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,4GAA4G,CAAC,CAAC;IAC5H,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB,EAAE,MAAkB,EAAE,MAAgB;IACpF,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;IACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEvC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,OAAO,IAAI,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACrF,MAAM,CAAC,IAAI,CAAC,qCAAqC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,GAAG,CAAC,cAAc,IAAI,IAAI,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,6BAA6B,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,6CAA6C,SAAS,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,IAAI,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACxF,IAAI,WAAW,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC;gBAAE,SAAS;YAE7C,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAiB,EAAE,MAAkB,EAAE,MAAgB;IACvF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAE7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO;IAEvC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CAAC,OAA0B;IAMhE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,OAAO;SAC5B,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAC7B,oCAAoC,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,IAAI,EAAE,CAAC,CACvE;SACA,MAAM,CAAC,CAAC,KAAK,EAA4C,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;IAE/E,OAAO;QACL,aAAa,EAAE,6BAA6B;QAC5C,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,EAAE;QAC1C,OAAO,EAAE,eAAe;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAA8B,EAC9B,WAAqB,EACrB,KAAa,EACb,SAAiB,EACjB,MAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,iCAAiC,KAAK,+BAA+B,GAAG,MAAM,SAAS,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CAAC,SAAiB,EAAE,KAA8B,EAAE,MAAgB;IACzG,mBAAmB,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE3G,IAAI,KAAK,CAAC,aAAa,KAAK,6BAA6B,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,mDAAmD,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,kDAAkD,SAAS,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,yDAAyD,SAAS,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,oDAAoD,SAAS,EAAE,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,oDAAoD,SAAS,EAAE,CAAC,CAAC;YAC7E,SAAS;QACX,CAAC;QACD,mBAAmB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3G,IACE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAC/B,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;YACjC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EACnC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,uEAAuE,SAAS,EAAE,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,4DAA4D,SAAS,EAAE,CAAC,CAAC;YACrF,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,qDAAqD,SAAS,EAAE,CAAC,CAAC;gBAC9E,SAAS;YACX,CAAC;YACD,mBAAmB,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAE7G,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC7E,MAAM,CAAC,IAAI,CAAC,iEAAiE,SAAS,EAAE,CAAC,CAAC;YAC5F,CAAC;YAED,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC,kDAAkD,SAAS,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBAClC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,EACrE,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,sEAAsE,SAAS,EAAE,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,OAA0B,EAAE,MAAgB;IAC7E,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,iCAAiC,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAChH,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,kCAAkC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChH,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,0BAA0B,EAAE,MAAM,CAAC,CAAC;IAEvG,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,8BAA8B,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,qBAAqB,GAAa,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,qBAAqB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,qBAAqB,GAAG,sCAAsC,CAC5D,KAAK,CAAC,OAA4C,CACnD,CAAC;IACJ,CAAC;IAED,IAAI,aAAgE,CAAC;IACrE,IAAI,CAAC;QACH,aAAa,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,MAAM,uBAAuB,GAAG,sCAAsC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9F,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,2FAA2F,SAAS,EAAE,CAAC,CAAC;IACtH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,OAA0B,EAAE,IAAY;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,UAAU;IACV,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,oBAAoB,IAAI,EAAE,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAEzC,sBAAsB;QACtB,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC9E,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC1C,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC3C,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;gBACnF,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAC1B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3C,SAAS;gBACX,CAAC;gBACD,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gBACxC,IAAI,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;oBACxF,IAAI,WAAW,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC5C,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;oBACjC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAE7C,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;oBACzE,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBACpC,MAAM,CAAC,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAEpD,aAAa;QACb,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,IAAI,WAAW,IAAI,OAAO,CAAC,CAAC;QACzE,CAAC;QAED,yCAAyC;QACzC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAwB,EACxB,OAAwC;IAExC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;IAEzD,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEvC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACpE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class CommandError extends Error {
2
+ readonly exitCode: number;
3
+ constructor(message: string, exitCode?: number);
4
+ }
5
+ export declare function isCommandError(error: unknown): error is CommandError;
@@ -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 插件目录中创建、验证和发布插件\"\nargument-hint: \"<plugin-name>\"\n---\n\n# Marketplace 维护助手\n\n此 skill 指导你在 plugin marketplace 插件目录仓库中创建、验证和发布插件。\n\n## 触发条件\n\n当用户需要以下操作时激活此 skill:\n- 创建一个新的 marketplace 插件\n- 验证现有插件的格式\n- 构建插件的平台兼容层\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:验证\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli validate <plugin-name>\n```\n\n确保没有错误。常见检查项:\n- plugin.yaml schema 合法\n- 引用的 skill/hook 文件存在\n- name 与目录名一致\n\n### 步骤 5:构建双平台 manifest\n\n```bash\nnpx @birdie_moblie/plugin-marketplace-cli build <plugin-name>\n```\n\n这会自动生成:\n- `.claude-plugin/plugin.json` — Claude Code 兼容\n- `.codex-plugin/plugin.json` — Codex 兼容\n- `.mcp.json`(如有 MCP 组件)\n- `hooks/hooks.json`(如有 Hook 组件)\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- `.agents/plugins/marketplace.json` — Codex 官方 repo marketplace manifest\n- `marketplace.json` — 根目录兼容镜像\n- `plugins/CATALOG.md` — 人类可读的插件目录\n\n### 步骤 7:提交\n\n将所有变更提交并发起 Merge Request。CI 会自动验证格式。\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## 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 command: string # 启动命令\n args: string[] # 命令参数\n env: object # 环境变量\n description: string\n\n hooks: # Hook 组件列表\n - event: string # 事件名(PreToolUse, PostToolUse 等)\n pattern: string # 工具名匹配模式\n command: string # 脚本路径\n timeout: number # 超时(毫秒)\n\nplatform: # 可选的平台特有覆盖\n codex:\n interface:\n displayName: string\n shortDescription: string\n longDescription: string\n category: string\n developerName: string\n```\n";
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,87HAA87H,CAAC"}
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"}
@@ -0,0 +1,29 @@
1
+ export interface ProcessRequest {
2
+ readonly executable: string;
3
+ readonly args: readonly string[];
4
+ readonly captureOutput: boolean;
5
+ readonly signal?: AbortSignal;
6
+ }
7
+ interface ProcessOutput {
8
+ readonly stdout: string;
9
+ readonly stderr: string;
10
+ }
11
+ export type ProcessResult = (ProcessOutput & {
12
+ readonly status: 'completed';
13
+ readonly exitCode: 0;
14
+ }) | (ProcessOutput & {
15
+ readonly status: 'missing';
16
+ readonly message: string;
17
+ }) | (ProcessOutput & {
18
+ readonly status: 'failed';
19
+ readonly exitCode: number | null;
20
+ readonly message: string;
21
+ }) | (ProcessOutput & {
22
+ readonly status: 'interrupted';
23
+ readonly signal: NodeJS.Signals;
24
+ });
25
+ export interface ProcessRunner {
26
+ run(request: ProcessRequest): ProcessResult | Promise<ProcessResult>;
27
+ }
28
+ export declare const systemProcessRunner: ProcessRunner;
29
+ export {};
@@ -0,0 +1,130 @@
1
+ import { spawn } from 'node:child_process';
2
+ const INTERRUPT_ESCALATION_DELAY_MS = 500;
3
+ function outputText(value) {
4
+ if (typeof value === 'string') {
5
+ return value;
6
+ }
7
+ return value ? value.toString('utf8') : '';
8
+ }
9
+ export const systemProcessRunner = {
10
+ async run(request) {
11
+ if (request.signal?.aborted) {
12
+ return { status: 'interrupted', signal: 'SIGINT', stdout: '', stderr: '' };
13
+ }
14
+ return await new Promise((resolveResult) => {
15
+ const stdoutChunks = [];
16
+ const stderrChunks = [];
17
+ let settled = false;
18
+ let aborted = false;
19
+ let escalationTimer;
20
+ const child = spawn(request.executable, [...request.args], {
21
+ shell: false,
22
+ stdio: request.captureOutput ? ['ignore', 'pipe', 'pipe'] : 'inherit',
23
+ windowsHide: true,
24
+ });
25
+ child.stdout?.on('data', (chunk) => {
26
+ stdoutChunks.push(Buffer.from(chunk));
27
+ });
28
+ child.stderr?.on('data', (chunk) => {
29
+ stderrChunks.push(Buffer.from(chunk));
30
+ });
31
+ const output = () => ({
32
+ stdout: outputText(Buffer.concat(stdoutChunks)),
33
+ stderr: outputText(Buffer.concat(stderrChunks)),
34
+ });
35
+ const cleanup = () => {
36
+ request.signal?.removeEventListener('abort', onAbort);
37
+ if (escalationTimer) {
38
+ clearTimeout(escalationTimer);
39
+ escalationTimer = undefined;
40
+ }
41
+ };
42
+ const settle = (result) => {
43
+ if (settled) {
44
+ return;
45
+ }
46
+ settled = true;
47
+ cleanup();
48
+ resolveResult(result);
49
+ };
50
+ const onAbort = () => {
51
+ if (aborted || settled) {
52
+ return;
53
+ }
54
+ aborted = true;
55
+ try {
56
+ child.kill('SIGINT');
57
+ }
58
+ catch {
59
+ // The close/error event below owns the final result.
60
+ }
61
+ escalationTimer = setTimeout(() => {
62
+ if (settled) {
63
+ return;
64
+ }
65
+ try {
66
+ child.kill('SIGKILL');
67
+ }
68
+ catch {
69
+ // A child that has already exited will still emit close/error.
70
+ }
71
+ }, INTERRUPT_ESCALATION_DELAY_MS);
72
+ escalationTimer.unref();
73
+ };
74
+ request.signal?.addEventListener('abort', onAbort, { once: true });
75
+ if (request.signal?.aborted) {
76
+ onAbort();
77
+ }
78
+ child.once('error', (rawError) => {
79
+ const error = rawError;
80
+ if (aborted) {
81
+ settle({ status: 'interrupted', signal: 'SIGINT', ...output() });
82
+ return;
83
+ }
84
+ if (error.code === 'ENOENT') {
85
+ settle({
86
+ status: 'missing',
87
+ ...output(),
88
+ message: `未找到 executable: ${request.executable}`,
89
+ });
90
+ return;
91
+ }
92
+ settle({
93
+ status: 'failed',
94
+ exitCode: null,
95
+ ...output(),
96
+ message: error.message,
97
+ });
98
+ });
99
+ child.once('close', (exitCode, signal) => {
100
+ if (aborted) {
101
+ settle({
102
+ status: 'interrupted',
103
+ signal: 'SIGINT',
104
+ ...output(),
105
+ });
106
+ return;
107
+ }
108
+ if (signal) {
109
+ settle({
110
+ status: 'interrupted',
111
+ signal,
112
+ ...output(),
113
+ });
114
+ return;
115
+ }
116
+ if (exitCode === 0) {
117
+ settle({ status: 'completed', exitCode: 0, ...output() });
118
+ return;
119
+ }
120
+ settle({
121
+ status: 'failed',
122
+ exitCode,
123
+ ...output(),
124
+ message: `${request.executable} 退出码 ${exitCode ?? 'unknown'}`,
125
+ });
126
+ });
127
+ });
128
+ },
129
+ };
130
+ //# sourceMappingURL=process-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-runner.js","sourceRoot":"","sources":["../../src/infrastructure/process-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { renameSync } from 'node:fs';
2
+ import type { ProcessRunner } from './process-runner.js';
3
+ export interface VscodeSettingsInspectionReady {
4
+ readonly status: 'ready';
5
+ readonly settingsPath: string;
6
+ }
7
+ export interface VscodeSettingsInspectionUnavailable {
8
+ readonly status: 'unavailable';
9
+ readonly message: string;
10
+ }
11
+ export interface VscodeSettingsInspectionInterrupted {
12
+ readonly status: 'interrupted';
13
+ readonly signal: NodeJS.Signals;
14
+ }
15
+ export type VscodeSettingsInspection = VscodeSettingsInspectionReady | VscodeSettingsInspectionUnavailable | VscodeSettingsInspectionInterrupted;
16
+ export interface InspectVscodeUserSettingsOptions {
17
+ readonly platform?: NodeJS.Platform;
18
+ readonly env?: NodeJS.ProcessEnv;
19
+ readonly homeDir?: string;
20
+ readonly signal?: AbortSignal;
21
+ }
22
+ export interface VscodeSettingsUpdateRequest {
23
+ readonly settingsPath: string;
24
+ readonly source: string;
25
+ }
26
+ export type VscodeSettingsUpdateResult = {
27
+ readonly status: 'completed';
28
+ readonly changed: boolean;
29
+ readonly settingsPath: string;
30
+ } | {
31
+ readonly status: 'failed';
32
+ readonly message: string;
33
+ readonly settingsPath: string;
34
+ };
35
+ export interface VscodeSettingsUpdateDependencies {
36
+ readonly beforeRevisionCheck?: () => void;
37
+ readonly beforeRecoveryRename?: () => void;
38
+ readonly rename?: typeof renameSync;
39
+ }
40
+ export declare function resolveVscodeUserSettingsPath(options?: InspectVscodeUserSettingsOptions): string | undefined;
41
+ export declare function inspectVscodeUserSettings(processRunner: ProcessRunner, options?: InspectVscodeUserSettingsOptions): Promise<VscodeSettingsInspection>;
42
+ export declare function updateVscodeMarketplaceSettings(request: VscodeSettingsUpdateRequest, dependencies?: VscodeSettingsUpdateDependencies): VscodeSettingsUpdateResult;