@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
@@ -14,7 +14,7 @@ const DEFAULT_SCRIPTS = {
14
14
  'build:plugins': `${CLI_RUNNER} build --all`,
15
15
  'build:index': `${CLI_RUNNER} index`,
16
16
  'build:all': 'npm run build:plugins && npm run build:index',
17
- 'ci:local': 'npm run validate:plugins && npm run build:all',
17
+ 'ci:local': 'npm run build:all && npm run validate:plugins',
18
18
  'release:local': `npm run ci:local && ${CLI_RUNNER} release-local`,
19
19
  };
20
20
  function marketplaceYaml(name, organization) {
@@ -23,6 +23,7 @@ function marketplaceYaml(name, organization) {
23
23
  name: ${name}
24
24
  description: "${toTitleCase(name)} 插件市场"
25
25
  organization: "${organization}"
26
+ version: "1.0.0"
26
27
 
27
28
  categories:
28
29
  - id: tooling
@@ -42,10 +43,16 @@ categories:
42
43
  description: "其他插件"
43
44
 
44
45
  platforms:
46
+ - name: "Agent Plugins"
47
+ manifest: "plugin.json"
45
48
  - name: "Claude Code"
46
49
  manifest: ".claude-plugin/plugin.json"
47
50
  - name: "Codex"
48
51
  manifest: ".codex-plugin/plugin.json"
52
+ - name: "GitHub Copilot / VS Code"
53
+ manifest: "plugin.json"
54
+ - name: "Cursor"
55
+ manifest: "plugin.json"
49
56
  `;
50
57
  }
51
58
  function readPackageJson(path) {
@@ -85,13 +92,15 @@ function ensureReadme(rootDir, name) {
85
92
 
86
93
  这是一个由 \`${CLI_PACKAGE}\` 维护的 plugin marketplace 仓库。
87
94
 
95
+ 每个 \`plugins/<name>/\` 在 build 后都会包含 Agent Plugins 1.0 根 \`plugin.json\`,并继续生成 Claude Code / Codex 平台 manifest。
96
+
88
97
  ## 常用流程
89
98
 
90
99
  \`\`\`bash
91
100
  npx ${CLI_PACKAGE} init my-plugin
92
- npx ${CLI_PACKAGE} validate --all
93
101
  npx ${CLI_PACKAGE} build --all
94
102
  npx ${CLI_PACKAGE} index
103
+ npx ${CLI_PACKAGE} validate --all
95
104
  \`\`\`
96
105
  `;
97
106
  writeFileSync(readmePath, readme);
@@ -1 +1 @@
1
- {"version":3,"file":"init-repo.js","sourceRoot":"","sources":["../../src/commands/init-repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-repo.js","sourceRoot":"","sources":["../../src/commands/init-repo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE7E,MAAM,WAAW,GAAG,uCAAuC,CAAC;AAC5D,MAAM,UAAU,GAAG,OAAO,WAAW,EAAE,CAAC;AAWxC,MAAM,eAAe,GAA2B;IAC9C,EAAE,EAAE,UAAU;IACd,kBAAkB,EAAE,GAAG,UAAU,iBAAiB;IAClD,eAAe,EAAE,GAAG,UAAU,cAAc;IAC5C,aAAa,EAAE,GAAG,UAAU,QAAQ;IACpC,WAAW,EAAE,8CAA8C;IAC3D,UAAU,EAAE,+CAA+C;IAC3D,eAAe,EAAE,uBAAuB,UAAU,gBAAgB;CACnE,CAAC;AAEF,SAAS,eAAe,CAAC,IAAY,EAAE,YAAoB;IACzD,OAAO;;QAED,IAAI;gBACI,WAAW,CAAC,IAAI,CAAC;iBAChB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B5B,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IAC1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,MAAqB,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,IAAY;IACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,WAAW,GAAgB,UAAU,CAAC,WAAW,CAAC;QACtD,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC;QAC9B,CAAC,CAAC;YACE,IAAI;YACJ,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,IAAI;SACd,CAAC;IAEN,WAAW,CAAC,OAAO,GAAG;QACpB,GAAG,eAAe;QAClB,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,CAAC;KAC/B,CAAC;IAEF,WAAW,CAAC,eAAe,GAAG;QAC5B,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;KACvC,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,WAAW,CAAC,eAAe,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,IAAY;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO;IAEnC,MAAM,MAAM,GAAG,KAAK,WAAW,CAAC,IAAI,CAAC;;UAE7B,WAAW;;;;;;;MAOf,WAAW;MACX,WAAW;MACX,WAAW;MACX,WAAW;;CAEhB,CAAC;IAEA,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAOD,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,OAAO,GAAG;QACd,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAwB,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAwB,CAAC;KAC7D,CAAC;IACF,MAAM,MAAM,GAAsB,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE/D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAwB,EACxB,OAAkE;IAElE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAChG,MAAM,eAAe,GAAG,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,eAAe,EAAE,CAAC,CAAC,CAAC;IAE3E,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/E,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC5C,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAEvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;IAClD,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACvE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,WAAW,iBAAiB,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,WAAW,iBAAiB,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -67,6 +67,7 @@ components:`;
67
67
  description: "TODO: 填写 skill 描述"
68
68
  mcp:
69
69
  - name: ${name}-server
70
+ type: stdio
70
71
  command: npx
71
72
  args: ["-y", "${name}-server"]
72
73
  description: "TODO: 填写 MCP server 描述"
@@ -90,8 +91,12 @@ components:`;
90
91
  return `${base}
91
92
  hooks:
92
93
  - event: PreToolUse
93
- pattern: "Write|Edit"
94
- command: "./hooks/check.sh"
94
+ matcher: "Write|Edit"
95
+ type: command
96
+ script: hooks/check.py
97
+ interpreter: python3
98
+ timeoutSeconds: 10
99
+ statusMessage: "正在运行插件检查"
95
100
  `;
96
101
  default: // skill
97
102
  return `${base}
@@ -124,9 +129,16 @@ export function runInit(name, options) {
124
129
  }
125
130
  if (type === 'hook') {
126
131
  const hooksDir = join(pluginDir, 'hooks');
127
- const hookPath = join(hooksDir, 'check.sh');
132
+ const hookPath = join(hooksDir, 'check.py');
128
133
  mkdirSync(hooksDir, { recursive: true });
129
- writeFileSync(hookPath, '#!/bin/bash\n# TODO: 实现 hook 逻辑\nexit 0\n');
134
+ writeFileSync(hookPath, '#!/usr/bin/env python3\n' +
135
+ '"""Lifecycle hook command. JSON is provided on stdin."""\n\n' +
136
+ 'import json\n' +
137
+ 'import sys\n\n' +
138
+ 'payload = json.load(sys.stdin)\n' +
139
+ '# TODO: inspect payload and return exit code 2 to block the action.\n' +
140
+ '_ = payload\n' +
141
+ 'raise SystemExit(0)\n');
130
142
  chmodSync(hookPath, 0o755);
131
143
  }
132
144
  console.log(chalk.green(`✓ 插件创建成功: plugins/${name}/`));
@@ -135,7 +147,7 @@ export function runInit(name, options) {
135
147
  console.log(chalk.gray(` → 编辑 skills/${name}/SKILL.md 编写指令`));
136
148
  }
137
149
  if (type === 'hook') {
138
- console.log(chalk.gray(` → 编辑 hooks/check.sh 实现逻辑`));
150
+ console.log(chalk.gray(` → 编辑 hooks/check.py 实现 stdin JSON 检查逻辑`));
139
151
  }
140
152
  }
141
153
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { MarketplaceRegistrationRuntime } from '../adapters/marketplace-registration.js';
2
+ import { type AgentTargetId, type MarketplaceRegistrationReport } from '../application/marketplace-registration-contract.js';
3
+ export interface InstallRepoOptions {
4
+ readonly agent?: readonly string[];
5
+ readonly all?: boolean;
6
+ }
7
+ export interface InstallRepoCommandDependencies {
8
+ readonly runtime?: MarketplaceRegistrationRuntime;
9
+ readonly baseDir?: string;
10
+ readonly homeDir?: string;
11
+ readonly interactive?: boolean;
12
+ readonly readSelection?: (signal: AbortSignal) => Promise<string | undefined>;
13
+ readonly write?: (text: string) => void;
14
+ }
15
+ export interface InstallRepoCommandResult {
16
+ readonly exitCode: 0 | 1 | 2 | 130;
17
+ readonly report?: MarketplaceRegistrationReport;
18
+ }
19
+ export declare function parseTargetSelection(input: string, availableTargetIds: readonly AgentTargetId[], defaultTargetIds: readonly AgentTargetId[]): AgentTargetId[];
20
+ export declare function runInstallRepo(source: string, options: InstallRepoOptions, dependencies?: InstallRepoCommandDependencies): Promise<InstallRepoCommandResult>;
@@ -0,0 +1,200 @@
1
+ import { createInterface } from 'node:readline/promises';
2
+ import { executeMarketplaceRegistration, inspectMarketplaceRegistration, normalizeTargetIds, } from '../application/marketplace-registration.js';
3
+ import { AGENT_TARGET_IDS, } from '../application/marketplace-registration-contract.js';
4
+ import { CommandError } from '../core/errors.js';
5
+ const INSPECTION_LABELS = {
6
+ ready: '可自动',
7
+ 'missing-cli': '缺少 CLI',
8
+ 'manual-required': '需手动',
9
+ failed: '不可用',
10
+ interrupted: '中断',
11
+ };
12
+ const RESULT_LABELS = {
13
+ completed: '完成',
14
+ 'missing-cli': '缺少 CLI',
15
+ 'manual-required': '需手动',
16
+ failed: '失败',
17
+ interrupted: '中断',
18
+ };
19
+ function defaultWrite(text) {
20
+ process.stdout.write(text);
21
+ }
22
+ async function defaultReadSelection(interruptController) {
23
+ if (interruptController.signal.aborted) {
24
+ return undefined;
25
+ }
26
+ const terminal = createInterface({ input: process.stdin, output: process.stdout });
27
+ const onSigint = () => {
28
+ interruptController.abort('SIGINT');
29
+ };
30
+ terminal.on('SIGINT', onSigint);
31
+ try {
32
+ if (interruptController.signal.aborted) {
33
+ return undefined;
34
+ }
35
+ return await terminal.question('> ', { signal: interruptController.signal });
36
+ }
37
+ catch (error) {
38
+ if (interruptController.signal.aborted ||
39
+ error?.name === 'AbortError') {
40
+ return undefined;
41
+ }
42
+ throw error;
43
+ }
44
+ finally {
45
+ terminal.removeListener('SIGINT', onSigint);
46
+ terminal.close();
47
+ }
48
+ }
49
+ export function parseTargetSelection(input, availableTargetIds, defaultTargetIds) {
50
+ const value = input.trim();
51
+ if (value.length === 0) {
52
+ if (defaultTargetIds.length === 0) {
53
+ throw new CommandError('当前没有默认可自动处理的 agent;请输入明确编号或 all。');
54
+ }
55
+ return normalizeTargetIds(defaultTargetIds);
56
+ }
57
+ if (value.toLowerCase() === 'all') {
58
+ return normalizeTargetIds(availableTargetIds);
59
+ }
60
+ const tokens = value.split(',').map((token) => token.trim());
61
+ if (tokens.some((token) => !/^\d+$/u.test(token))) {
62
+ throw new CommandError('请选择逗号分隔的 agent 编号,或输入 all。');
63
+ }
64
+ const selected = [];
65
+ for (const token of tokens) {
66
+ const index = Number(token) - 1;
67
+ const target = availableTargetIds[index];
68
+ if (!target) {
69
+ throw new CommandError(`agent 编号超出范围: ${token}`);
70
+ }
71
+ selected.push(target);
72
+ }
73
+ return normalizeTargetIds(selected);
74
+ }
75
+ function renderPrompt(inspection, write) {
76
+ write('请选择要注册 Marketplace 的 agent:\n');
77
+ inspection.targets.forEach((target, index) => {
78
+ write(` ${index + 1}. ${target.label.padEnd(18)} [${INSPECTION_LABELS[target.status]}]\n`);
79
+ });
80
+ const defaults = inspection.targets
81
+ .filter((target) => target.status === 'ready')
82
+ .map((target) => target.id);
83
+ const defaultNumbers = defaults.map((id) => inspection.targets.findIndex((target) => target.id === id) + 1);
84
+ write(`\n默认:${defaultNumbers.length > 0 ? defaultNumbers.join(',') : '无'}\n`);
85
+ write('输入编号(逗号分隔),输入 all 选择全部,直接回车接受默认:\n');
86
+ return defaults;
87
+ }
88
+ function formatInvocation(target) {
89
+ if (!target.invocation) {
90
+ return target.message;
91
+ }
92
+ return [target.invocation.executable, ...target.invocation.args.map((arg) => JSON.stringify(arg))]
93
+ .join(' ');
94
+ }
95
+ function renderTargetStart(target, write) {
96
+ if (target.status === 'ready') {
97
+ write(`→ ${target.label}: ${formatInvocation(target)}\n`);
98
+ }
99
+ }
100
+ function renderResultLine(result, write) {
101
+ write(` [${RESULT_LABELS[result.status]}] ${result.label}:${result.message}\n`);
102
+ if (result.status !== 'completed' && result.recovery) {
103
+ write(` 下一步:${result.recovery}\n`);
104
+ }
105
+ }
106
+ function renderReport(report, write) {
107
+ const completed = report.results.filter((result) => result.status === 'completed');
108
+ const incomplete = report.results.filter((result) => result.status !== 'completed');
109
+ write('\n注册结果:\n');
110
+ write('已完成:\n');
111
+ if (completed.length === 0) {
112
+ write(' 无\n');
113
+ }
114
+ else {
115
+ completed.forEach((result) => renderResultLine(result, write));
116
+ }
117
+ write('未完成:\n');
118
+ if (incomplete.length === 0) {
119
+ write(' 无\n');
120
+ }
121
+ else {
122
+ incomplete.forEach((result) => renderResultLine(result, write));
123
+ }
124
+ write(`退出码:${report.exitCode}\n`);
125
+ }
126
+ function selectedInspection(inspection, targetIds) {
127
+ const selected = new Set(targetIds);
128
+ return {
129
+ source: inspection.source,
130
+ targets: inspection.targets.filter((target) => selected.has(target.id)),
131
+ };
132
+ }
133
+ export async function runInstallRepo(source, options, dependencies = {}) {
134
+ const requested = [...(options.agent ?? [])];
135
+ if (options.all && requested.length > 0) {
136
+ throw new CommandError('不能同时使用 --agent 与 --all。');
137
+ }
138
+ const interactive = dependencies.interactive ?? Boolean(process.stdin.isTTY && process.stdout.isTTY);
139
+ const explicitTargetIds = options.all
140
+ ? [...AGENT_TARGET_IDS]
141
+ : requested.length > 0
142
+ ? normalizeTargetIds(requested)
143
+ : undefined;
144
+ if (!explicitTargetIds && !interactive) {
145
+ throw new CommandError('非交互终端必须显式传入至少一个 --agent,或使用 --all。');
146
+ }
147
+ const write = dependencies.write ?? defaultWrite;
148
+ const interruptController = new AbortController();
149
+ const onSigint = () => interruptController.abort('SIGINT');
150
+ const runtime = {
151
+ ...dependencies.runtime,
152
+ signal: interruptController.signal,
153
+ };
154
+ process.on('SIGINT', onSigint);
155
+ try {
156
+ let inspection = await inspectMarketplaceRegistration(source, {
157
+ baseDir: dependencies.baseDir,
158
+ homeDir: dependencies.homeDir,
159
+ targetIds: explicitTargetIds ?? AGENT_TARGET_IDS,
160
+ runtime,
161
+ });
162
+ if (!explicitTargetIds) {
163
+ const interrupted = inspection.targets.some((target) => target.status === 'interrupted');
164
+ if (interrupted) {
165
+ const report = await executeMarketplaceRegistration(inspection, {
166
+ runtime,
167
+ onTargetResult: (result) => renderResultLine(result, write),
168
+ });
169
+ renderReport(report, write);
170
+ return { exitCode: 130, report };
171
+ }
172
+ const defaultTargetIds = renderPrompt(inspection, write);
173
+ if (interruptController.signal.aborted) {
174
+ write('\n[中断] 用户取消了 Marketplace 注册。\n');
175
+ return { exitCode: 130 };
176
+ }
177
+ const answer = dependencies.readSelection
178
+ ? await dependencies.readSelection(interruptController.signal)
179
+ : await defaultReadSelection(interruptController);
180
+ if (answer === undefined || interruptController.signal.aborted) {
181
+ write('\n[中断] 用户取消了 Marketplace 注册。\n');
182
+ return { exitCode: 130 };
183
+ }
184
+ const selected = parseTargetSelection(answer, inspection.targets.map((target) => target.id), defaultTargetIds);
185
+ inspection = selectedInspection(inspection, selected);
186
+ }
187
+ write(`Marketplace 来源:${inspection.source.displayValue}\n`);
188
+ const report = await executeMarketplaceRegistration(inspection, {
189
+ runtime,
190
+ onTargetStart: (target) => renderTargetStart(target, write),
191
+ onTargetResult: (result) => renderResultLine(result, write),
192
+ });
193
+ renderReport(report, write);
194
+ return { exitCode: report.exitCode, report };
195
+ }
196
+ finally {
197
+ process.removeListener('SIGINT', onSigint);
198
+ }
199
+ }
200
+ //# sourceMappingURL=install-repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-repo.js","sourceRoot":"","sources":["../../src/commands/install-repo.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * 该命令假定调用前已执行完整构建流程。
5
5
  */
6
+ export declare function assertPortableArchive(archivePath: string): void;
6
7
  export declare function runReleaseLocal(options?: {
7
8
  root?: string;
8
9
  }): void;