agent-plugkit 0.1.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 (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +295 -0
  3. package/dist/adapters/agent-plugins.d.ts +35 -0
  4. package/dist/adapters/agent-plugins.js +57 -0
  5. package/dist/adapters/agent-plugins.js.map +1 -0
  6. package/dist/adapters/claude.d.ts +64 -0
  7. package/dist/adapters/claude.js +123 -0
  8. package/dist/adapters/claude.js.map +1 -0
  9. package/dist/adapters/cli-validation.d.ts +12 -0
  10. package/dist/adapters/cli-validation.js +31 -0
  11. package/dist/adapters/cli-validation.js.map +1 -0
  12. package/dist/adapters/codex.d.ts +62 -0
  13. package/dist/adapters/codex.js +91 -0
  14. package/dist/adapters/codex.js.map +1 -0
  15. package/dist/adapters/marketplace-registration.d.ts +17 -0
  16. package/dist/adapters/marketplace-registration.js +369 -0
  17. package/dist/adapters/marketplace-registration.js.map +1 -0
  18. package/dist/adapters/marketplace.d.ts +11 -0
  19. package/dist/adapters/marketplace.js +96 -0
  20. package/dist/adapters/marketplace.js.map +1 -0
  21. package/dist/adapters/mcp.d.ts +17 -0
  22. package/dist/adapters/mcp.js +28 -0
  23. package/dist/adapters/mcp.js.map +1 -0
  24. package/dist/application/artifact-generation.d.ts +58 -0
  25. package/dist/application/artifact-generation.js +344 -0
  26. package/dist/application/artifact-generation.js.map +1 -0
  27. package/dist/application/local-release.d.ts +122 -0
  28. package/dist/application/local-release.js +940 -0
  29. package/dist/application/local-release.js.map +1 -0
  30. package/dist/application/marketplace-document-contract.d.ts +81 -0
  31. package/dist/application/marketplace-document-contract.js +2 -0
  32. package/dist/application/marketplace-document-contract.js.map +1 -0
  33. package/dist/application/marketplace-document.d.ts +45 -0
  34. package/dist/application/marketplace-document.js +557 -0
  35. package/dist/application/marketplace-document.js.map +1 -0
  36. package/dist/application/marketplace-registration-contract.d.ts +51 -0
  37. package/dist/application/marketplace-registration-contract.js +11 -0
  38. package/dist/application/marketplace-registration-contract.js.map +1 -0
  39. package/dist/application/marketplace-registration.d.ts +20 -0
  40. package/dist/application/marketplace-registration.js +304 -0
  41. package/dist/application/marketplace-registration.js.map +1 -0
  42. package/dist/application/marketplace.d.ts +9 -0
  43. package/dist/application/marketplace.js +32 -0
  44. package/dist/application/marketplace.js.map +1 -0
  45. package/dist/application/plugin-components-contract.d.ts +135 -0
  46. package/dist/application/plugin-components-contract.js +2 -0
  47. package/dist/application/plugin-components-contract.js.map +1 -0
  48. package/dist/application/plugin-components.d.ts +17 -0
  49. package/dist/application/plugin-components.js +1000 -0
  50. package/dist/application/plugin-components.js.map +1 -0
  51. package/dist/application/plugin-document-contract.d.ts +115 -0
  52. package/dist/application/plugin-document-contract.js +2 -0
  53. package/dist/application/plugin-document-contract.js.map +1 -0
  54. package/dist/application/plugin-document.d.ts +69 -0
  55. package/dist/application/plugin-document.js +1037 -0
  56. package/dist/application/plugin-document.js.map +1 -0
  57. package/dist/application/plugin-lifecycle-contract.d.ts +230 -0
  58. package/dist/application/plugin-lifecycle-contract.js +3 -0
  59. package/dist/application/plugin-lifecycle-contract.js.map +1 -0
  60. package/dist/application/plugin-lifecycle.d.ts +8 -0
  61. package/dist/application/plugin-lifecycle.js +1375 -0
  62. package/dist/application/plugin-lifecycle.js.map +1 -0
  63. package/dist/application/plugin-scaffold.d.ts +18 -0
  64. package/dist/application/plugin-scaffold.js +188 -0
  65. package/dist/application/plugin-scaffold.js.map +1 -0
  66. package/dist/application/plugin-source.d.ts +39 -0
  67. package/dist/application/plugin-source.js +59 -0
  68. package/dist/application/plugin-source.js.map +1 -0
  69. package/dist/application/skill-document-contract.d.ts +92 -0
  70. package/dist/application/skill-document-contract.js +8 -0
  71. package/dist/application/skill-document-contract.js.map +1 -0
  72. package/dist/application/skill-document-guided.d.ts +3 -0
  73. package/dist/application/skill-document-guided.js +53 -0
  74. package/dist/application/skill-document-guided.js.map +1 -0
  75. package/dist/application/skill-document.d.ts +19 -0
  76. package/dist/application/skill-document.js +368 -0
  77. package/dist/application/skill-document.js.map +1 -0
  78. package/dist/application/workspace-create-contract.d.ts +50 -0
  79. package/dist/application/workspace-create-contract.js +16 -0
  80. package/dist/application/workspace-create-contract.js.map +1 -0
  81. package/dist/application/workspace-create.d.ts +8 -0
  82. package/dist/application/workspace-create.js +656 -0
  83. package/dist/application/workspace-create.js.map +1 -0
  84. package/dist/application/workspace-health-contract.d.ts +133 -0
  85. package/dist/application/workspace-health-contract.js +272 -0
  86. package/dist/application/workspace-health-contract.js.map +1 -0
  87. package/dist/application/workspace-health.d.ts +10 -0
  88. package/dist/application/workspace-health.js +1114 -0
  89. package/dist/application/workspace-health.js.map +1 -0
  90. package/dist/application/workspace-operation-contract.d.ts +99 -0
  91. package/dist/application/workspace-operation-contract.js +450 -0
  92. package/dist/application/workspace-operation-contract.js.map +1 -0
  93. package/dist/application/workspace-operation.d.ts +42 -0
  94. package/dist/application/workspace-operation.js +517 -0
  95. package/dist/application/workspace-operation.js.map +1 -0
  96. package/dist/cli.d.ts +16 -0
  97. package/dist/cli.js +136 -0
  98. package/dist/cli.js.map +1 -0
  99. package/dist/commands/add.d.ts +8 -0
  100. package/dist/commands/add.js +77 -0
  101. package/dist/commands/add.js.map +1 -0
  102. package/dist/commands/build.d.ts +7 -0
  103. package/dist/commands/build.js +29 -0
  104. package/dist/commands/build.js.map +1 -0
  105. package/dist/commands/component-scaffold.d.ts +4 -0
  106. package/dist/commands/component-scaffold.js +14 -0
  107. package/dist/commands/component-scaffold.js.map +1 -0
  108. package/dist/commands/import-skill.d.ts +15 -0
  109. package/dist/commands/import-skill.js +41 -0
  110. package/dist/commands/import-skill.js.map +1 -0
  111. package/dist/commands/index-gen.d.ts +12 -0
  112. package/dist/commands/index-gen.js +33 -0
  113. package/dist/commands/index-gen.js.map +1 -0
  114. package/dist/commands/init-repo.d.ts +8 -0
  115. package/dist/commands/init-repo.js +53 -0
  116. package/dist/commands/init-repo.js.map +1 -0
  117. package/dist/commands/init.d.ts +9 -0
  118. package/dist/commands/init.js +33 -0
  119. package/dist/commands/init.js.map +1 -0
  120. package/dist/commands/install-repo.d.ts +20 -0
  121. package/dist/commands/install-repo.js +200 -0
  122. package/dist/commands/install-repo.js.map +1 -0
  123. package/dist/commands/release-local.d.ts +9 -0
  124. package/dist/commands/release-local.js +27 -0
  125. package/dist/commands/release-local.js.map +1 -0
  126. package/dist/commands/validate.d.ts +8 -0
  127. package/dist/commands/validate.js +45 -0
  128. package/dist/commands/validate.js.map +1 -0
  129. package/dist/core/errors.d.ts +5 -0
  130. package/dist/core/errors.js +12 -0
  131. package/dist/core/errors.js.map +1 -0
  132. package/dist/generated/skill-content.d.ts +3 -0
  133. package/dist/generated/skill-content.js +9 -0
  134. package/dist/generated/skill-content.js.map +1 -0
  135. package/dist/infrastructure/authorized-path.d.ts +20 -0
  136. package/dist/infrastructure/authorized-path.js +85 -0
  137. package/dist/infrastructure/authorized-path.js.map +1 -0
  138. package/dist/infrastructure/document-commit.d.ts +165 -0
  139. package/dist/infrastructure/document-commit.js +1352 -0
  140. package/dist/infrastructure/document-commit.js.map +1 -0
  141. package/dist/infrastructure/process-runner.d.ts +29 -0
  142. package/dist/infrastructure/process-runner.js +130 -0
  143. package/dist/infrastructure/process-runner.js.map +1 -0
  144. package/dist/infrastructure/vscode-user-settings.d.ts +42 -0
  145. package/dist/infrastructure/vscode-user-settings.js +509 -0
  146. package/dist/infrastructure/vscode-user-settings.js.map +1 -0
  147. package/dist/schema/plugin-yaml.d.ts +89 -0
  148. package/dist/schema/plugin-yaml.js +241 -0
  149. package/dist/schema/plugin-yaml.js.map +1 -0
  150. package/dist/utils/frontmatter.d.ts +30 -0
  151. package/dist/utils/frontmatter.js +60 -0
  152. package/dist/utils/frontmatter.js.map +1 -0
  153. package/dist/utils/helpers.d.ts +44 -0
  154. package/dist/utils/helpers.js +94 -0
  155. package/dist/utils/helpers.js.map +1 -0
  156. package/package.json +56 -0
@@ -0,0 +1,241 @@
1
+ /**
2
+ * plugin.yaml JSON Schema 定义
3
+ *
4
+ * 这是 marketplace 的核心数据模型。所有 plugin.yaml 都必须符合此 schema。
5
+ * 生成 Agent Plugins portable 与平台原生产物时,也基于此 schema 做字段映射。
6
+ */
7
+ // ── JSON Schema ──────────────────────────────────────────
8
+ export const pluginYamlSchema = {
9
+ type: 'object',
10
+ required: ['name', 'version', 'description', 'author', 'components'],
11
+ additionalProperties: false,
12
+ properties: {
13
+ name: {
14
+ type: 'string',
15
+ pattern: '^(?!.*--)[a-z0-9][a-z0-9-]*[a-z0-9]$',
16
+ minLength: 2,
17
+ maxLength: 64,
18
+ },
19
+ version: {
20
+ type: 'string',
21
+ pattern: '^\\d+\\.\\d+\\.\\d+',
22
+ },
23
+ description: {
24
+ type: 'string',
25
+ minLength: 1,
26
+ maxLength: 500,
27
+ },
28
+ author: {
29
+ type: 'object',
30
+ required: ['name'],
31
+ additionalProperties: false,
32
+ properties: {
33
+ name: { type: 'string' },
34
+ email: { type: 'string', nullable: true },
35
+ url: { type: 'string', nullable: true },
36
+ },
37
+ },
38
+ homepage: {
39
+ type: 'string',
40
+ nullable: true,
41
+ },
42
+ repository: {
43
+ type: 'string',
44
+ nullable: true,
45
+ },
46
+ license: {
47
+ type: 'string',
48
+ nullable: true,
49
+ },
50
+ category: {
51
+ type: 'string',
52
+ nullable: true,
53
+ },
54
+ tags: {
55
+ type: 'array',
56
+ items: { type: 'string' },
57
+ nullable: true,
58
+ },
59
+ components: {
60
+ type: 'object',
61
+ required: [],
62
+ additionalProperties: false,
63
+ properties: {
64
+ skills: {
65
+ type: 'array',
66
+ nullable: true,
67
+ items: {
68
+ type: 'object',
69
+ required: ['name', 'path'],
70
+ additionalProperties: false,
71
+ properties: {
72
+ name: { type: 'string' },
73
+ path: { type: 'string' },
74
+ description: { type: 'string', nullable: true },
75
+ 'argument-hint': { type: 'string', nullable: true },
76
+ },
77
+ },
78
+ },
79
+ mcp: {
80
+ type: 'array',
81
+ nullable: true,
82
+ items: {
83
+ oneOf: [
84
+ {
85
+ type: 'object',
86
+ required: ['name', 'command'],
87
+ additionalProperties: false,
88
+ properties: {
89
+ name: { type: 'string' },
90
+ type: {
91
+ type: 'string',
92
+ enum: ['stdio'],
93
+ nullable: true,
94
+ },
95
+ command: { type: 'string' },
96
+ args: {
97
+ type: 'array',
98
+ items: { type: 'string' },
99
+ nullable: true,
100
+ },
101
+ env: {
102
+ type: 'object',
103
+ nullable: true,
104
+ required: [],
105
+ additionalProperties: { type: 'string' },
106
+ },
107
+ cwd: { type: 'string', nullable: true },
108
+ description: { type: 'string', nullable: true },
109
+ },
110
+ },
111
+ {
112
+ type: 'object',
113
+ required: ['name', 'type', 'url'],
114
+ additionalProperties: false,
115
+ properties: {
116
+ name: { type: 'string' },
117
+ type: {
118
+ type: 'string',
119
+ enum: ['streamable-http', 'sse'],
120
+ },
121
+ url: { type: 'string' },
122
+ headers: {
123
+ type: 'object',
124
+ nullable: true,
125
+ required: [],
126
+ additionalProperties: { type: 'string' },
127
+ },
128
+ description: { type: 'string', nullable: true },
129
+ },
130
+ },
131
+ ],
132
+ },
133
+ },
134
+ lsp: {
135
+ type: 'array',
136
+ nullable: true,
137
+ items: {
138
+ type: 'object',
139
+ required: ['name', 'command', 'extensionToLanguage'],
140
+ additionalProperties: false,
141
+ properties: {
142
+ name: { type: 'string' },
143
+ command: { type: 'string' },
144
+ args: {
145
+ type: 'array',
146
+ items: { type: 'string' },
147
+ nullable: true,
148
+ },
149
+ env: {
150
+ type: 'object',
151
+ nullable: true,
152
+ required: [],
153
+ additionalProperties: { type: 'string' },
154
+ },
155
+ transport: {
156
+ type: 'string',
157
+ enum: ['stdio', 'socket', null],
158
+ nullable: true,
159
+ },
160
+ extensionToLanguage: {
161
+ type: 'object',
162
+ required: [],
163
+ additionalProperties: { type: 'string' },
164
+ },
165
+ workspaceFolder: { type: 'string', nullable: true },
166
+ startupTimeout: { type: 'number', nullable: true },
167
+ maxRestarts: { type: 'number', nullable: true },
168
+ diagnostics: { type: 'boolean', nullable: true },
169
+ },
170
+ },
171
+ },
172
+ hooks: {
173
+ type: 'array',
174
+ nullable: true,
175
+ items: {
176
+ type: 'object',
177
+ required: ['event', 'command'],
178
+ additionalProperties: false,
179
+ properties: {
180
+ event: { type: 'string' },
181
+ pattern: { type: 'string', nullable: true },
182
+ command: { type: 'string' },
183
+ timeout: { type: 'number', nullable: true },
184
+ },
185
+ },
186
+ },
187
+ },
188
+ },
189
+ platform: {
190
+ type: 'object',
191
+ nullable: true,
192
+ required: [],
193
+ additionalProperties: false,
194
+ properties: {
195
+ codex: {
196
+ type: 'object',
197
+ nullable: true,
198
+ required: [],
199
+ additionalProperties: false,
200
+ properties: {
201
+ interface: {
202
+ type: 'object',
203
+ nullable: true,
204
+ required: [],
205
+ additionalProperties: false,
206
+ properties: {
207
+ displayName: { type: 'string', nullable: true },
208
+ shortDescription: { type: 'string', nullable: true },
209
+ longDescription: { type: 'string', nullable: true },
210
+ category: { type: 'string', nullable: true },
211
+ developerName: { type: 'string', nullable: true },
212
+ capabilities: {
213
+ type: 'array',
214
+ nullable: true,
215
+ items: {
216
+ type: 'string',
217
+ minLength: 1,
218
+ pattern: '\\S',
219
+ },
220
+ },
221
+ defaultPrompt: {
222
+ type: 'array',
223
+ nullable: true,
224
+ minItems: 1,
225
+ maxItems: 3,
226
+ items: {
227
+ type: 'string',
228
+ minLength: 1,
229
+ maxLength: 128,
230
+ pattern: '\\S',
231
+ },
232
+ },
233
+ },
234
+ },
235
+ },
236
+ },
237
+ },
238
+ },
239
+ },
240
+ };
241
+ //# sourceMappingURL=plugin-yaml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-yaml.js","sourceRoot":"","sources":["../../src/schema/plugin-yaml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Markdown frontmatter 最小解析器
3
+ *
4
+ * 不为 frontmatter 解析引入 gray-matter 之类的额外第三方库。这里只解析 SKILL.md 的 `---`
5
+ * YAML 头块,用现有 js-yaml 处理块内容。
6
+ *
7
+ * 与 utils/ 层其余文件一样:不引入 chalk/console,不抛业务错误。调用方(命令层)拥有文件路径
8
+ * 上下文,应由它拼出面向用户的中文错误文案。
9
+ *
10
+ * 已知取舍:frontmatter 块内若使用 YAML 块标量(| 或 >)且块内容含独立的 `---` 行,会被
11
+ * 提前当作闭合分隔符截断,退化为 invalid-yaml。这是刻意的最小实现,不做 YAML 流式扫描。
12
+ */
13
+ export type FrontmatterFailure = {
14
+ kind: 'unterminated';
15
+ } | {
16
+ kind: 'invalid-yaml';
17
+ message: string;
18
+ } | {
19
+ kind: 'not-object';
20
+ };
21
+ export type FrontmatterResult = {
22
+ ok: true;
23
+ present: boolean;
24
+ data: Record<string, unknown>;
25
+ } | {
26
+ ok: false;
27
+ failure: FrontmatterFailure;
28
+ };
29
+ export declare function parseFrontmatter(raw: string): FrontmatterResult;
30
+ export declare function frontmatterString(data: Record<string, unknown>, key: string): string | undefined;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Markdown frontmatter 最小解析器
3
+ *
4
+ * 不为 frontmatter 解析引入 gray-matter 之类的额外第三方库。这里只解析 SKILL.md 的 `---`
5
+ * YAML 头块,用现有 js-yaml 处理块内容。
6
+ *
7
+ * 与 utils/ 层其余文件一样:不引入 chalk/console,不抛业务错误。调用方(命令层)拥有文件路径
8
+ * 上下文,应由它拼出面向用户的中文错误文案。
9
+ *
10
+ * 已知取舍:frontmatter 块内若使用 YAML 块标量(| 或 >)且块内容含独立的 `---` 行,会被
11
+ * 提前当作闭合分隔符截断,退化为 invalid-yaml。这是刻意的最小实现,不做 YAML 流式扫描。
12
+ */
13
+ import yaml from 'js-yaml';
14
+ const DELIMITER = '---';
15
+ function stripBom(raw) {
16
+ return raw.charCodeAt(0) === 0xfeff ? raw.slice(1) : raw;
17
+ }
18
+ export function parseFrontmatter(raw) {
19
+ const normalized = stripBom(raw);
20
+ const lines = normalized.split('\n').map((line) => line.replace(/\r$/, ''));
21
+ if (lines.length === 0 || lines[0].trimEnd() !== DELIMITER) {
22
+ return { ok: true, present: false, data: {} };
23
+ }
24
+ let closingIndex = -1;
25
+ for (let i = 1; i < lines.length; i += 1) {
26
+ if (lines[i].trimEnd() === DELIMITER) {
27
+ closingIndex = i;
28
+ break;
29
+ }
30
+ }
31
+ if (closingIndex === -1) {
32
+ return { ok: false, failure: { kind: 'unterminated' } };
33
+ }
34
+ const block = lines.slice(1, closingIndex).join('\n');
35
+ let parsed;
36
+ try {
37
+ parsed = yaml.load(block);
38
+ }
39
+ catch (err) {
40
+ return {
41
+ ok: false,
42
+ failure: { kind: 'invalid-yaml', message: err.message },
43
+ };
44
+ }
45
+ if (parsed === undefined || parsed === null) {
46
+ return { ok: true, present: true, data: {} };
47
+ }
48
+ if (typeof parsed !== 'object' || Array.isArray(parsed)) {
49
+ return { ok: false, failure: { kind: 'not-object' } };
50
+ }
51
+ return { ok: true, present: true, data: parsed };
52
+ }
53
+ export function frontmatterString(data, key) {
54
+ const value = data[key];
55
+ if (typeof value !== 'string')
56
+ return undefined;
57
+ const trimmed = value.trim();
58
+ return trimmed.length > 0 ? trimmed : undefined;
59
+ }
60
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 共享工具函数
3
+ *
4
+ * 提供 plugin.yaml 加载、校验、路径解析等通用能力。
5
+ */
6
+ import type { PluginYaml } from '../schema/plugin-yaml.js';
7
+ import { type MarketplaceMetadata } from '../application/marketplace.js';
8
+ export type { MarketplaceMetadata } from '../application/marketplace.js';
9
+ export interface PluginRepoContext {
10
+ rootDir: string;
11
+ pluginsDir: string;
12
+ marketplaceYamlPath: string;
13
+ distDir: string;
14
+ }
15
+ export declare function resolveInvocationPath(pathArg: string): string;
16
+ export declare function findMarketplaceRoot(startDir?: string): string | undefined;
17
+ export declare function resolveRepoContext(rootArg?: string, options?: {
18
+ allowMissingMarketplace?: boolean;
19
+ }): PluginRepoContext;
20
+ /**
21
+ * 加载并校验一个 plugin.yaml
22
+ */
23
+ export declare function loadPluginYaml(pluginDir: string): PluginYaml;
24
+ /**
25
+ * 加载 marketplace.yaml。该文件是所有客户端 marketplace index 的元数据来源。
26
+ */
27
+ export declare function loadMarketplaceMetadata(context: PluginRepoContext): MarketplaceMetadata;
28
+ /**
29
+ * 获取所有插件目录名
30
+ */
31
+ export declare function listPluginNames(context: PluginRepoContext): string[];
32
+ /**
33
+ * 加载所有插件
34
+ */
35
+ export declare function loadAllPlugins(context: PluginRepoContext): Array<{
36
+ name: string;
37
+ dir: string;
38
+ config: PluginYaml;
39
+ }>;
40
+ /**
41
+ * 将 kebab-case 名称转为 Title Case
42
+ * 例如 "plugkit-maintain" → "Plugkit Maintain"
43
+ */
44
+ export declare function toTitleCase(kebab: string): string;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * 共享工具函数
3
+ *
4
+ * 提供 plugin.yaml 加载、校验、路径解析等通用能力。
5
+ */
6
+ import { readFileSync, existsSync, readdirSync } from 'node:fs';
7
+ import { dirname, join, resolve } from 'node:path';
8
+ import { parsePluginYamlSource } from '../application/plugin-source.js';
9
+ import { readMarketplaceMetadata, } from '../application/marketplace.js';
10
+ export function resolveInvocationPath(pathArg) {
11
+ return resolve(process.env.INIT_CWD || process.cwd(), pathArg);
12
+ }
13
+ export function findMarketplaceRoot(startDir = process.cwd()) {
14
+ let current = resolve(startDir);
15
+ while (true) {
16
+ if (existsSync(join(current, 'marketplace.yaml'))) {
17
+ return current;
18
+ }
19
+ const parent = dirname(current);
20
+ if (parent === current) {
21
+ return undefined;
22
+ }
23
+ current = parent;
24
+ }
25
+ }
26
+ export function resolveRepoContext(rootArg, options = {}) {
27
+ const rootDir = rootArg ? resolveInvocationPath(rootArg) : findMarketplaceRoot();
28
+ if (!rootDir) {
29
+ throw new Error('marketplace.yaml not found. Run `agent-plugkit init-repo` first or pass `--root <dir>`.');
30
+ }
31
+ const marketplaceYamlPath = join(rootDir, 'marketplace.yaml');
32
+ if (!options.allowMissingMarketplace && !existsSync(marketplaceYamlPath)) {
33
+ throw new Error(`marketplace.yaml not found: ${marketplaceYamlPath}. Run \`agent-plugkit --root ${rootDir} init-repo\` first.`);
34
+ }
35
+ return {
36
+ rootDir,
37
+ pluginsDir: join(rootDir, 'plugins'),
38
+ marketplaceYamlPath,
39
+ distDir: join(rootDir, 'dist'),
40
+ };
41
+ }
42
+ /**
43
+ * 加载并校验一个 plugin.yaml
44
+ */
45
+ export function loadPluginYaml(pluginDir) {
46
+ const yamlPath = join(pluginDir, 'plugin.yaml');
47
+ if (!existsSync(yamlPath)) {
48
+ throw new Error(`plugin.yaml not found: ${yamlPath}`);
49
+ }
50
+ const raw = readFileSync(yamlPath, 'utf-8');
51
+ const parsed = parsePluginYamlSource(raw);
52
+ if (parsed.status !== 'valid') {
53
+ throw new Error(parsed.message);
54
+ }
55
+ return parsed.value;
56
+ }
57
+ /**
58
+ * 加载 marketplace.yaml。该文件是所有客户端 marketplace index 的元数据来源。
59
+ */
60
+ export function loadMarketplaceMetadata(context) {
61
+ return readMarketplaceMetadata(context.rootDir);
62
+ }
63
+ /**
64
+ * 获取所有插件目录名
65
+ */
66
+ export function listPluginNames(context) {
67
+ if (!existsSync(context.pluginsDir)) {
68
+ return [];
69
+ }
70
+ return readdirSync(context.pluginsDir, { withFileTypes: true })
71
+ .filter((d) => d.isDirectory())
72
+ .filter((d) => existsSync(join(context.pluginsDir, d.name, 'plugin.yaml')))
73
+ .map((d) => d.name);
74
+ }
75
+ /**
76
+ * 加载所有插件
77
+ */
78
+ export function loadAllPlugins(context) {
79
+ return listPluginNames(context).map((name) => {
80
+ const dir = join(context.pluginsDir, name);
81
+ return { name, dir, config: loadPluginYaml(dir) };
82
+ });
83
+ }
84
+ /**
85
+ * 将 kebab-case 名称转为 Title Case
86
+ * 例如 "plugkit-maintain" → "Plugkit Maintain"
87
+ */
88
+ export function toTitleCase(kebab) {
89
+ return kebab
90
+ .split('-')
91
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
92
+ .join(' ');
93
+ }
94
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "agent-plugkit",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "description": "CLI toolkit for building and maintaining AI agent plugin marketplaces",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "engines": {
9
+ "node": ">=20"
10
+ },
11
+ "bin": {
12
+ "agent-plugkit": "dist/cli.js"
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/agent-plugkit/agent-plugkit.git",
22
+ "directory": "packages/cli"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/agent-plugkit/agent-plugkit/issues"
26
+ },
27
+ "homepage": "https://github.com/agent-plugkit/agent-plugkit#readme",
28
+ "scripts": {
29
+ "clean": "rm -rf dist src/generated tsconfig.tsbuildinfo",
30
+ "generate:skill": "tsx scripts/generate-skill.ts",
31
+ "build": "npm run clean && npm run generate:skill && tsc && cp scripts/npm-dist.npmignore dist/.npmignore && chmod +x dist/cli.js",
32
+ "prepack": "npm run build",
33
+ "test": "npm run test:cli && npm run test:package",
34
+ "test:cli": "npm run test:install-repo && tsx scripts/test-cli.ts",
35
+ "test:install-repo": "tsx scripts/test-install-repo.ts",
36
+ "test:package": "npm run build && tsx scripts/test-package.ts",
37
+ "preagent-plugkit": "npm run generate:skill",
38
+ "agent-plugkit": "tsx src/cli.ts",
39
+ "predev": "npm run generate:skill",
40
+ "dev": "tsx watch src/cli.ts"
41
+ },
42
+ "dependencies": {
43
+ "ajv": "^8.17.0",
44
+ "chalk": "^5.4.0",
45
+ "commander": "^13.0.0",
46
+ "js-yaml": "^4.3.1",
47
+ "jsonc-parser": "^3.3.1",
48
+ "yaml": "^2.9.0"
49
+ },
50
+ "devDependencies": {
51
+ "@types/js-yaml": "^4.0.9",
52
+ "@types/node": "^22.0.0",
53
+ "tsx": "^4.19.0",
54
+ "typescript": "^5.7.0"
55
+ }
56
+ }