create-aalis-plugin 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.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Aalis 插件交互式脚手架。
4
+ *
5
+ * 用法:
6
+ * create-aalis-plugin → 交互式 prompts
7
+ * create-aalis-plugin <name> → 仅指定名称,其余 prompts
8
+ * create-aalis-plugin <name> --yes → 全默认值(tool 模板,无 webui)
9
+ *
10
+ * 输出:在 cwd 下创建 `<name>/` 目录,含完整 package.json / tsconfig.json /
11
+ * src/index.ts。生成完毕后打印下一步命令。
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}
package/dist/cli.js ADDED
@@ -0,0 +1,235 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Aalis 插件交互式脚手架。
4
+ *
5
+ * 用法:
6
+ * create-aalis-plugin → 交互式 prompts
7
+ * create-aalis-plugin <name> → 仅指定名称,其余 prompts
8
+ * create-aalis-plugin <name> --yes → 全默认值(tool 模板,无 webui)
9
+ *
10
+ * 输出:在 cwd 下创建 `<name>/` 目录,含完整 package.json / tsconfig.json /
11
+ * src/index.ts。生成完毕后打印下一步命令。
12
+ */
13
+ import { existsSync } from 'node:fs';
14
+ import { mkdir, writeFile } from 'node:fs/promises';
15
+ import { resolve } from 'node:path';
16
+ import { argv, exit, stdin, stdout } from 'node:process';
17
+ import { createInterface } from 'node:readline/promises';
18
+ async function main() {
19
+ const args = argv.slice(2);
20
+ const skipPrompts = args.includes('--yes') || args.includes('-y');
21
+ const positional = args.filter(a => !a.startsWith('-'));
22
+ const cliName = positional[0];
23
+ const rl = createInterface({ input: stdin, output: stdout });
24
+ const ask = async (q, def) => {
25
+ if (skipPrompts && def !== undefined)
26
+ return def;
27
+ const suffix = def !== undefined ? ` (${def})` : '';
28
+ const ans = (await rl.question(`${q}${suffix}: `)).trim();
29
+ return ans || def || '';
30
+ };
31
+ const askYesNo = async (q, def = true) => {
32
+ if (skipPrompts)
33
+ return def;
34
+ const ans = (await ask(q, def ? 'Y/n' : 'y/N')).toLowerCase();
35
+ if (!ans || ans === 'y/n'.slice(0, ans.length))
36
+ return def;
37
+ return ans === 'y' || ans === 'yes' || ans === 'true';
38
+ };
39
+ try {
40
+ const packageName = cliName ?? (await ask('包名(如 my-plugin 或 @scope/my-plugin)', 'aalis-plugin-sample'));
41
+ if (!packageName) {
42
+ console.error('包名不能为空');
43
+ exit(1);
44
+ }
45
+ const displayName = await ask('显示名(中文标签)', defaultDisplayName(packageName));
46
+ const features = {
47
+ tool: await askYesNo('注册 AI 工具?', true),
48
+ command: await askYesNo('注册斜杠命令?', false),
49
+ webui: await askYesNo('提供 WebUI 页面?', false),
50
+ };
51
+ const answers = { packageName, displayName, features };
52
+ const targetDir = resolve(process.cwd(), shortName(packageName));
53
+ if (existsSync(targetDir)) {
54
+ console.error(`目录已存在: ${targetDir}`);
55
+ exit(1);
56
+ }
57
+ await generate(targetDir, answers);
58
+ console.log(`\n✓ 已生成插件骨架: ${targetDir}\n`);
59
+ console.log('下一步:');
60
+ console.log(` cd ${shortName(packageName)}`);
61
+ console.log(' pnpm install');
62
+ console.log(' pnpm build');
63
+ console.log('\n要让 Aalis 加载它,把目录放进你的 Aalis 仓库的 packages/ 下,');
64
+ console.log('然后在 aalis.config.yaml 的 plugins 段加上对应配置项即可。');
65
+ }
66
+ finally {
67
+ rl.close();
68
+ }
69
+ }
70
+ function defaultDisplayName(pkg) {
71
+ return shortName(pkg)
72
+ .replace(/^plugin-/, '')
73
+ .replace(/-/g, ' ')
74
+ .replace(/\b\w/g, c => c.toUpperCase());
75
+ }
76
+ function shortName(pkg) {
77
+ const slash = pkg.lastIndexOf('/');
78
+ return slash >= 0 ? pkg.slice(slash + 1) : pkg;
79
+ }
80
+ async function generate(dir, a) {
81
+ await mkdir(resolve(dir, 'src'), { recursive: true });
82
+ await writeFile(resolve(dir, 'package.json'), renderPackageJson(a));
83
+ await writeFile(resolve(dir, 'tsconfig.json'), renderTsconfig());
84
+ await writeFile(resolve(dir, 'src/index.ts'), renderIndexTs(a));
85
+ await writeFile(resolve(dir, 'README.md'), renderReadme(a));
86
+ }
87
+ function renderPackageJson(a) {
88
+ // 运行时依赖:用了 useXxxService(运行时 helper)的 api 包进 dependencies(workspace:^
89
+ // 发布转 ^0.1.0);@aalis/core 是宿主必有的核心,走 peerDependencies + devDep。
90
+ const deps = {};
91
+ if (a.features.tool)
92
+ deps['@aalis/plugin-tools-api'] = 'workspace:^';
93
+ if (a.features.command)
94
+ deps['@aalis/plugin-commands-api'] = 'workspace:^';
95
+ if (a.features.webui)
96
+ deps['@aalis/plugin-webui-api'] = 'workspace:^';
97
+ // aalis.service:声明运行时服务依赖/提供,供市场装前披露。示例插件无服务依赖,
98
+ // 留空提示作者按需填(用了 ctx.inject.required / provides 时同步到这里)。
99
+ const json = {
100
+ name: a.packageName,
101
+ version: '0.1.0',
102
+ type: 'module',
103
+ // description / author 供插件市场展示(市场直接读 package.json,不入 PluginModule)
104
+ description: `${a.displayName} —— Aalis 插件`,
105
+ // keyword 'aalis-plugin' 是市场发现约定:npm registry 按此 keyword 检索可装插件
106
+ keywords: ['aalis-plugin'],
107
+ main: 'dist/index.js',
108
+ types: 'dist/index.d.ts',
109
+ files: ['dist'], // 发布包只含编译产物
110
+ scripts: {
111
+ build: 'tsc',
112
+ dev: 'tsc --watch',
113
+ },
114
+ ...(Object.keys(deps).length ? { dependencies: deps } : {}),
115
+ peerDependencies: {
116
+ '@aalis/core': '^0.1.0',
117
+ },
118
+ devDependencies: {
119
+ '@aalis/core': 'workspace:*',
120
+ typescript: '^5.7.0',
121
+ '@types/node': '^22.0.0',
122
+ },
123
+ // 有服务依赖/提供时在此声明,市场据此做安装前能力披露:
124
+ // aalis: { service: { required: ['llm'], optional: ['memory'], provides: ['my-service'] } }
125
+ };
126
+ return `${JSON.stringify(json, null, 2)}\n`;
127
+ }
128
+ function renderTsconfig() {
129
+ return `${JSON.stringify({
130
+ extends: '../../tsconfig.base.json',
131
+ compilerOptions: { outDir: 'dist', rootDir: 'src' },
132
+ include: ['src'],
133
+ }, null, 2)}\n`;
134
+ }
135
+ function renderIndexTs(a) {
136
+ const imports = [`import type { Context } from '@aalis/core';`];
137
+ if (a.features.tool)
138
+ imports.push(`import { useToolService } from '@aalis/plugin-tools-api';`);
139
+ if (a.features.command)
140
+ imports.push(`import { useCommandService } from '@aalis/plugin-commands-api';`);
141
+ if (a.features.webui) {
142
+ imports.push(`import type { WebuiPage } from '@aalis/plugin-webui-api';`);
143
+ imports.push(`import { useWebuiService } from '@aalis/plugin-webui-api';`);
144
+ }
145
+ const body = [];
146
+ if (a.features.tool) {
147
+ body.push(` // 注册 AI 可调用的工具
148
+ useToolService(ctx).register({
149
+ definition: {
150
+ name: 'hello',
151
+ description: '示例工具:返回问候语',
152
+ parameters: { type: 'object', properties: { name: { type: 'string' } }, required: ['name'] },
153
+ },
154
+ async handler(args) {
155
+ return { text: \`你好, \${(args as { name: string }).name}!\` };
156
+ },
157
+ });`);
158
+ }
159
+ if (a.features.command) {
160
+ body.push(` // 注册斜杠命令
161
+ useCommandService(ctx)
162
+ .command('hello', '示例命令')
163
+ .action(async () => '你好');`);
164
+ }
165
+ if (a.features.webui) {
166
+ body.push(` // 注册 WebUI 页面
167
+ const webui = useWebuiService(ctx);
168
+ for (const page of webuiPages) webui.registerPage(page);`);
169
+ }
170
+ const webuiPagesBlock = a.features.webui
171
+ ? `
172
+ const webuiPages: WebuiPage[] = [
173
+ {
174
+ key: '${shortName(a.packageName).replace(/^plugin-/, '')}',
175
+ label: '${a.displayName}',
176
+ order: 80,
177
+ content: [
178
+ {
179
+ type: 'info',
180
+ label: '示例信息',
181
+ source: 'getInfo',
182
+ },
183
+ ],
184
+ },
185
+ ];
186
+
187
+ export const actions = {
188
+ async getInfo() {
189
+ return { 提示: '这是 ${a.displayName} 插件的示例信息面板。' };
190
+ },
191
+ };
192
+ `
193
+ : '';
194
+ return `${imports.join('\n')}
195
+
196
+ // ===== 插件元数据 =====
197
+
198
+ export const name = '${a.packageName}';
199
+ export const displayName = '${a.displayName}';
200
+ export const inject = {};
201
+ ${webuiPagesBlock}
202
+ export function apply(ctx: Context, _config: Record<string, unknown>): void {
203
+ const logger = ctx.logger.child('${shortName(a.packageName).replace(/^plugin-/, '')}');
204
+ logger.info('插件已加载');
205
+
206
+ ${body.join('\n\n')}
207
+ }
208
+ `;
209
+ }
210
+ function renderReadme(a) {
211
+ return `# ${a.packageName}
212
+
213
+ ${a.displayName} —— 由 \`create-aalis-plugin\` 生成的 Aalis 插件骨架。
214
+
215
+ ## 启用
216
+
217
+ 把本目录复制到 Aalis 仓库的 \`packages/\` 下,然后在 \`aalis.config.yaml\` 的 \`plugins\` 段加上:
218
+
219
+ \`\`\`yaml
220
+ plugins:
221
+ "${a.packageName}":
222
+ enabled: true
223
+ \`\`\`
224
+
225
+ ## 扩展点
226
+
227
+ ${a.features.tool ? '- ✓ 注册 AI 工具(\\`useToolService\\`)\n' : ''}${a.features.command ? '- ✓ 注册斜杠命令(\\`useCommandService\\`)\n' : ''}${a.features.webui ? '- ✓ WebUI 页面(\\`useWebuiService\\`)\n' : ''}
228
+ 请打开 \`src/index.ts\` 按需修改。
229
+ `;
230
+ }
231
+ main().catch(err => {
232
+ console.error(err);
233
+ exit(1);
234
+ });
235
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "create-aalis-plugin",
3
+ "version": "0.1.0",
4
+ "description": "Aalis 插件交互式脚手架。",
5
+ "type": "module",
6
+ "bin": {
7
+ "create-aalis-plugin": "dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "templates"
12
+ ],
13
+ "devDependencies": {
14
+ "typescript": "^5.7.0",
15
+ "@types/node": "^22.0.0"
16
+ },
17
+ "aalis": {
18
+ "tooling": true
19
+ },
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "dev": "tsc --watch"
23
+ }
24
+ }