create-aalis 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,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,280 @@
1
+ #!/usr/bin/env node
2
+ // ============================================================
3
+ // create-aalis — Aalis 快速初始化脚手架
4
+ //
5
+ // create-aalis → 交互式:选模板档 + 同类适配器 → 写 aalis.config.yaml
6
+ // create-aalis --yes → 非交互:用 standard 档 + 默认适配器
7
+ //
8
+ // 现状(Aalis 暂未发 npm):脚手架在 monorepo 根运行,扫描本地 packages/ 的
9
+ // 真实插件,按"模板档 + 同类组选择 + 微调"生成 aalis.config.yaml(启用集 =
10
+ // 全部插件 − disabledPlugins)。敏感配置(API key / 平台 token)留 WebUI 配置页填。
11
+ //
12
+ // 设计:选插件心智 = 模板(bare/minimal/standard/full)+ 微调;同类适配器
13
+ // (LLM / 平台 / 记忆后端 / 向量库 / embedding / ASR)交互选用哪些,避免全塞冲突。
14
+ // ============================================================
15
+ import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
16
+ import { resolve } from 'node:path';
17
+ import { argv, cwd, exit, stdin, stdout } from 'node:process';
18
+ import { createInterface } from 'node:readline/promises';
19
+ // ── curated 归类(随仓库插件增减维护) ──────────────────────
20
+ //
21
+ // 基础设施 + agent 套件:minimal 起步的自洽依赖闭包(让 Aalis 能跑起一个最简
22
+ // 对话实例:网关路由 → 指令/agent → 会话 → 权限)。同类适配器不在此列,由
23
+ // GROUPS 交互选择补入。
24
+ const MINIMAL_BASE = [
25
+ '@aalis/plugin-storage-local', // storage 网关实现(众多插件依赖)
26
+ '@aalis/plugin-process-local', // process 网关实现
27
+ '@aalis/plugin-gateway', // 入站消息路由
28
+ '@aalis/plugin-commands', // 内置指令
29
+ '@aalis/plugin-flow-control', // 消息流控
30
+ '@aalis/plugin-agent', // Agent 核心
31
+ '@aalis/plugin-tools', // 工具注册表
32
+ '@aalis/plugin-prompt-budget', // Agent 套件:预算自检
33
+ '@aalis/plugin-authority', // 权限(商业级默认带)
34
+ '@aalis/plugin-session-manager', // 会话管理
35
+ '@aalis/plugin-memory-history', // 跨会话历史上下文
36
+ ];
37
+ // standard 在 minimal 之上增加的常用能力(管理界面 / 人设 / 记忆增强 / 常用工具 /
38
+ // 调度套件 / 技能 / 归档 / 会话增强 / 诊断)。同类适配器仍由 GROUPS 选择。
39
+ const STANDARD_EXTRA = [
40
+ '@aalis/plugin-webui-server',
41
+ '@aalis/plugin-persona',
42
+ '@aalis/plugin-memory-vector',
43
+ '@aalis/plugin-memory-summary',
44
+ '@aalis/plugin-user-profile',
45
+ '@aalis/plugin-user-relation',
46
+ '@aalis/plugin-file-reader',
47
+ '@aalis/plugin-tool-system',
48
+ '@aalis/plugin-tool-search',
49
+ '@aalis/plugin-websearch-serper',
50
+ '@aalis/plugin-media',
51
+ '@aalis/plugin-scheduler',
52
+ '@aalis/plugin-cron-engine',
53
+ '@aalis/plugin-trigger-policy',
54
+ '@aalis/plugin-todo-list',
55
+ '@aalis/plugin-checkpoint',
56
+ '@aalis/plugin-skills',
57
+ '@aalis/plugin-message-archive',
58
+ '@aalis/plugin-session-channel',
59
+ '@aalis/plugin-subtask',
60
+ '@aalis/plugin-tool-session',
61
+ '@aalis/plugin-doctor',
62
+ '@aalis/plugin-mcp-client',
63
+ ];
64
+ const GROUPS = [
65
+ {
66
+ key: 'llm',
67
+ label: 'LLM 提供者(对话模型,可多选)',
68
+ mode: 'multi',
69
+ tiers: ['minimal', 'standard'],
70
+ members: [
71
+ { name: '@aalis/plugin-deepseek', label: 'DeepSeek', default: true },
72
+ { name: '@aalis/plugin-openai', label: 'OpenAI' },
73
+ { name: '@aalis/plugin-ollama', label: 'Ollama(本地)' },
74
+ ],
75
+ },
76
+ {
77
+ key: 'platform',
78
+ label: '接入平台(消息入口,可多选)',
79
+ mode: 'multi',
80
+ tiers: ['minimal', 'standard'],
81
+ members: [
82
+ { name: '@aalis/plugin-cli', label: 'CLI 终端', default: true },
83
+ { name: '@aalis/plugin-adapter-onebot', label: 'OneBot(QQ 等)' },
84
+ { name: '@aalis/plugin-webui-server', label: 'WebUI 管理界面' },
85
+ ],
86
+ },
87
+ {
88
+ key: 'memory',
89
+ label: '记忆后端(持久化,单选)',
90
+ mode: 'exclusive',
91
+ tiers: ['minimal', 'standard'],
92
+ members: [
93
+ { name: '@aalis/plugin-memory-sqlite', label: 'SQLite(本地文件,推荐)', default: true },
94
+ { name: '@aalis/plugin-memory-inmemory', label: '内存(重启丢失)' },
95
+ { name: '@aalis/plugin-memory-mongodb', label: 'MongoDB(需外部服务)' },
96
+ ],
97
+ },
98
+ {
99
+ key: 'embedding',
100
+ label: 'Embedding 提供者(向量记忆所需,可多选)',
101
+ mode: 'multi',
102
+ tiers: ['standard'],
103
+ members: [
104
+ { name: '@aalis/plugin-embedding-openai', label: 'OpenAI Embedding', default: true },
105
+ { name: '@aalis/plugin-embedding-ollama', label: 'Ollama Embedding(本地)' },
106
+ ],
107
+ },
108
+ {
109
+ key: 'vectorstore',
110
+ label: '向量库(向量记忆所需,单选)',
111
+ mode: 'exclusive',
112
+ tiers: ['standard'],
113
+ members: [
114
+ { name: '@aalis/plugin-vectorstore-flat', label: 'Flat(内置,零依赖)', default: true },
115
+ { name: '@aalis/plugin-vectorstore-lancedb', label: 'LanceDB(高性能)' },
116
+ ],
117
+ },
118
+ ];
119
+ const CONFIG_FILE = 'aalis.config.yaml';
120
+ /** 扫描 monorepo packages/ 下的真实插件(导出 apply、非 -api 包)。 */
121
+ function scanPlugins(packagesDir) {
122
+ const out = [];
123
+ for (const dirent of readdirSync(packagesDir, { withFileTypes: true })) {
124
+ if (!dirent.isDirectory())
125
+ continue;
126
+ const idx = resolve(packagesDir, dirent.name, 'src/index.ts');
127
+ const pkg = resolve(packagesDir, dirent.name, 'package.json');
128
+ if (!existsSync(idx) || !existsSync(pkg))
129
+ continue;
130
+ const src = readFileSync(idx, 'utf-8');
131
+ if (!/export\s+(?:async\s+function\s+apply|function\s+apply|const\s+apply)/.test(src))
132
+ continue;
133
+ const name = JSON.parse(readFileSync(pkg, 'utf-8')).name ?? '';
134
+ if (!name || name.endsWith('-api'))
135
+ continue;
136
+ const displayName = src.match(/export\s+const\s+displayName\s*=\s*'([^']+)'/)?.[1] ?? name;
137
+ const subsystem = src.match(/export\s+const\s+subsystem\s*=\s*'([^']+)'/)?.[1] ?? 'other';
138
+ out.push({ name, displayName, subsystem });
139
+ }
140
+ return out.sort((a, b) => a.name.localeCompare(b.name));
141
+ }
142
+ /** 生成 aalis.config.yaml 文本(启用集 enabled,其余进 disabledPlugins)。 */
143
+ function renderConfig(all, enabled) {
144
+ const disabled = all.map(p => p.name).filter(n => !enabled.has(n));
145
+ const lines = [
146
+ 'name: Aalis',
147
+ 'logLevel: info',
148
+ '# 启用的插件用默认配置启动;敏感配置(API key/token)请在 WebUI 配置页填写。',
149
+ 'plugins: {}',
150
+ ];
151
+ if (disabled.length > 0) {
152
+ lines.push('disabledPlugins:');
153
+ for (const n of disabled)
154
+ lines.push(` - "${n}"`);
155
+ }
156
+ else {
157
+ lines.push('disabledPlugins: []');
158
+ }
159
+ return `${lines.join('\n')}\n`;
160
+ }
161
+ async function main() {
162
+ // --tier <bare|minimal|standard|full>:非交互指定档位(同类适配器取默认),
163
+ // 利于 CI/脚本化初始化。--yes 等价于 --tier standard。
164
+ const tierIdx = argv.indexOf('--tier');
165
+ const tierFlag = tierIdx >= 0 ? argv[tierIdx + 1] : undefined;
166
+ const skip = argv.includes('--yes') || argv.includes('-y') || tierFlag !== undefined;
167
+ const packagesDir = resolve(cwd(), 'packages');
168
+ if (!existsSync(packagesDir)) {
169
+ console.error(`未找到 packages/ 目录(当前: ${cwd()})。请在 Aalis 仓库根目录运行 create-aalis。`);
170
+ exit(1);
171
+ }
172
+ const all = scanPlugins(packagesDir);
173
+ if (all.length === 0) {
174
+ console.error('packages/ 下未扫描到任何插件。');
175
+ exit(1);
176
+ }
177
+ const known = new Set(all.map(p => p.name));
178
+ const rl = createInterface({ input: stdin, output: stdout });
179
+ const ask = async (q, def) => {
180
+ if (skip)
181
+ return def;
182
+ const ans = (await rl.question(`${q} (${def}): `)).trim();
183
+ return ans || def;
184
+ };
185
+ try {
186
+ console.log('\n=== Aalis 快速初始化 ===\n');
187
+ console.log(`扫描到 ${all.length} 个本地插件。选择一个模板档,随后微调同类适配器。\n`);
188
+ console.log(' bare 只启用 Aalis Core(不启用任何官方插件,完全自定义起点)');
189
+ console.log(' minimal 最简对话实例(网关+Agent+权限+会话+1 个 LLM+1 个平台+记忆)');
190
+ console.log(' standard 常用全家桶(minimal + WebUI/人设/向量记忆/工具/调度/技能…)');
191
+ console.log(' full 启用全部本地插件(同类适配器一并全装,可能需手动取舍)\n');
192
+ const tier = (tierFlag ?? (await ask('模板档 [bare/minimal/standard/full]', 'standard'))).toLowerCase();
193
+ if (!['bare', 'minimal', 'standard', 'full'].includes(tier)) {
194
+ console.error(`未知模板档: ${tier}`);
195
+ exit(1);
196
+ }
197
+ const enabled = new Set();
198
+ if (tier === 'full') {
199
+ for (const p of all)
200
+ enabled.add(p.name);
201
+ }
202
+ else if (tier !== 'bare') {
203
+ for (const n of MINIMAL_BASE)
204
+ if (known.has(n))
205
+ enabled.add(n);
206
+ if (tier === 'standard')
207
+ for (const n of STANDARD_EXTRA)
208
+ if (known.has(n))
209
+ enabled.add(n);
210
+ // 同类适配器交互选择(仅问该档出现的组)
211
+ for (const group of GROUPS) {
212
+ if (!group.tiers.includes(tier))
213
+ continue;
214
+ const members = group.members.filter(m => known.has(m.name));
215
+ if (members.length === 0)
216
+ continue;
217
+ console.log(`\n${group.label}:`);
218
+ for (const [i, m] of members.entries())
219
+ console.log(` ${i + 1}. ${m.label}`);
220
+ const defaults = members.filter(m => m.default).map(m => members.indexOf(m) + 1);
221
+ const defStr = group.mode === 'exclusive' ? String(defaults[0] ?? 1) : defaults.join(',');
222
+ const raw = await ask(group.mode === 'exclusive' ? '选一个(序号)' : '选若干(逗号分隔序号,留空=默认)', defStr);
223
+ const picks = raw
224
+ .split(',')
225
+ .map(s => Number.parseInt(s.trim(), 10))
226
+ .filter(n => n >= 1 && n <= members.length);
227
+ const chosen = group.mode === 'exclusive' ? picks.slice(0, 1) : picks;
228
+ for (const idx of chosen.length > 0 ? chosen : defaults)
229
+ enabled.add(members[idx - 1].name);
230
+ }
231
+ }
232
+ // 微调:额外启用/禁用(可跳过)
233
+ if (!skip && tier !== 'bare') {
234
+ const extra = (await ask('\n额外启用的插件名(逗号分隔,留空跳过)', '')).trim();
235
+ for (const n of extra
236
+ .split(',')
237
+ .map(s => s.trim())
238
+ .filter(Boolean)) {
239
+ if (known.has(n))
240
+ enabled.add(n);
241
+ else
242
+ console.warn(` 忽略未知插件: ${n}`);
243
+ }
244
+ const off = (await ask('额外禁用的插件名(逗号分隔,留空跳过)', '')).trim();
245
+ for (const n of off
246
+ .split(',')
247
+ .map(s => s.trim())
248
+ .filter(Boolean))
249
+ enabled.delete(n);
250
+ }
251
+ const target = resolve(cwd(), CONFIG_FILE);
252
+ if (existsSync(target)) {
253
+ if (skip) {
254
+ // 非交互模式遇已存在文件:必须 --force 才覆盖,否则明确报错(不静默跳过)
255
+ if (!argv.includes('--force')) {
256
+ console.error(`${CONFIG_FILE} 已存在。非交互模式(--tier/--yes)请加 --force 覆盖。`);
257
+ exit(1);
258
+ }
259
+ }
260
+ else {
261
+ const ow = await ask(`\n${CONFIG_FILE} 已存在,覆盖?[y/N]`, 'N');
262
+ if (ow.toLowerCase() !== 'y') {
263
+ console.log('已取消,未写入。');
264
+ exit(0);
265
+ }
266
+ }
267
+ }
268
+ writeFileSync(target, renderConfig(all, enabled), 'utf-8');
269
+ console.log(`\n✓ 已写入 ${CONFIG_FILE}:启用 ${enabled.size} / ${all.length} 个插件。`);
270
+ console.log(' 启动:pnpm dev 然后在 WebUI 配置页填写 API key / 平台 token。\n');
271
+ }
272
+ finally {
273
+ rl.close();
274
+ }
275
+ }
276
+ main().catch(err => {
277
+ console.error(err);
278
+ exit(1);
279
+ });
280
+ //# 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,23 @@
1
+ {
2
+ "name": "create-aalis",
3
+ "version": "0.1.0",
4
+ "description": "Aalis 快速初始化脚手架:交互式选插件,生成 aalis.config.yaml。",
5
+ "type": "module",
6
+ "bin": {
7
+ "create-aalis": "dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "devDependencies": {
13
+ "typescript": "^5.7.0",
14
+ "@types/node": "^22.0.0"
15
+ },
16
+ "aalis": {
17
+ "tooling": true
18
+ },
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "dev": "tsc --watch"
22
+ }
23
+ }