@aalis/runtime 0.13.0 → 0.14.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/README.md +1 -1
- package/dist/bootstrap-buffer.d.ts +3 -3
- package/dist/bootstrap-buffer.js +1 -1
- package/dist/config-store.d.ts +38 -0
- package/dist/config-store.d.ts.map +1 -0
- package/dist/config-store.js +171 -0
- package/dist/config-store.js.map +1 -0
- package/dist/config-sync.d.ts +19 -13
- package/dist/config-sync.d.ts.map +1 -1
- package/dist/config-sync.js +61 -30
- package/dist/config-sync.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/node-modules-loader.d.ts +6 -12
- package/dist/node-modules-loader.d.ts.map +1 -1
- package/dist/node-modules-loader.js +25 -20
- package/dist/node-modules-loader.js.map +1 -1
- package/dist/plugin-discovery.d.ts +42 -0
- package/dist/plugin-discovery.d.ts.map +1 -0
- package/dist/plugin-discovery.js +100 -0
- package/dist/plugin-discovery.js.map +1 -0
- package/dist/providers.d.ts +8 -5
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +74 -40
- package/dist/providers.js.map +1 -1
- package/dist/start.d.ts +9 -1
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +61 -29
- package/dist/start.js.map +1 -1
- package/dist/subcommand.d.ts +1 -1
- package/dist/subcommand.js +1 -1
- package/dist/terminal.d.ts +1 -1
- package/dist/terminal.js +1 -1
- package/package.json +8 -9
package/dist/start.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { App
|
|
1
|
+
import { App } from '@aalis/core';
|
|
2
2
|
import { type ConfigSyncOptions } from './config-sync.js';
|
|
3
|
+
import { type PluginLoader } from './plugin-discovery.js';
|
|
3
4
|
export interface StartAalisOptions {
|
|
4
5
|
/** aalis.config.yaml 路径,默认 cwd 下的 aalis.config.yaml */
|
|
5
6
|
configPath?: string;
|
|
@@ -33,5 +34,12 @@ export interface StartAalisOptions {
|
|
|
33
34
|
*/
|
|
34
35
|
configSync?: ConfigSyncOptions;
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* 启动一个 Aalis 实例:YAML 配置 + 插件加载 + 进程级重启 + 日志/终端/子命令宿主件。
|
|
39
|
+
* 返回已启动的 App(便于测试或进一步操作)。
|
|
40
|
+
*
|
|
41
|
+
* 生命周期不变量:① `consoleHandle.bindEvents` 必须在 `new App` 之后(之前没有事件总线);
|
|
42
|
+
* ② 子命令短路必须在 `app.start` 之前。
|
|
43
|
+
*/
|
|
36
44
|
export declare function startAalis(opts?: StartAalisOptions): Promise<App>;
|
|
37
45
|
//# sourceMappingURL=start.d.ts.map
|
package/dist/start.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAA4C,MAAM,aAAa,CAAC;AAG5E,OAAO,EAAE,KAAK,iBAAiB,EAAgD,MAAM,kBAAkB,CAAC;AAIxG,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAyBjF,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uGAAuG;IACvG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAeD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,CAyK3E"}
|
package/dist/start.js
CHANGED
|
@@ -1,24 +1,19 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { pluginSource } from '@aalis/api-plugin-source';
|
|
3
|
+
import { App, events, provide, services } from '@aalis/core';
|
|
4
4
|
import { installBootstrapBuffer } from './bootstrap-buffer.js';
|
|
5
|
+
import { createConfigStore, installHostConfig } from './config-store.js';
|
|
5
6
|
import { installConfigHotReload, withPluginConfigSync } from './config-sync.js';
|
|
6
7
|
import { installConsoleSink } from './console-sink.js';
|
|
7
8
|
import { appendCrashLog, DEFAULT_LOG_FILE, setupFileLogger } from './file-logger.js';
|
|
8
9
|
import { createNodeModulesPluginLoader } from './node-modules-loader.js';
|
|
10
|
+
import { createPluginDiscovery } from './plugin-discovery.js';
|
|
9
11
|
import { createFsYamlConfigProvider, createProcessRespawnStrategy, READY_MESSAGE } from './providers.js';
|
|
10
12
|
import { tryDispatchSubcommand } from './subcommand.js';
|
|
11
13
|
import { installTerminalStateRestorer } from './terminal.js';
|
|
12
|
-
/**
|
|
13
|
-
* 启动一个 Aalis 实例:YAML 配置 + 插件加载 + 进程级重启 + 日志/终端/子命令宿主件。
|
|
14
|
-
* 返回已启动的 App(便于测试或进一步操作)。
|
|
15
|
-
*
|
|
16
|
-
* 生命周期不变量:① `consoleHandle.bindEvents` 必须在 `new App` 之后(之前无 ctx);
|
|
17
|
-
* ② 子命令短路必须在 `app.start` 之前。
|
|
18
|
-
*/
|
|
19
14
|
/**
|
|
20
15
|
* 读取 @aalis/core 的实际安装版本,供 App 启动 banner 展示。
|
|
21
|
-
* core
|
|
16
|
+
* core 的 `exports` 开放了 `./package.json` 子路径,可 require;解析失败则返回 undefined,
|
|
22
17
|
* banner 自动省略版本段(不因版本读取失败而影响启动)。
|
|
23
18
|
*/
|
|
24
19
|
function readCoreVersion() {
|
|
@@ -29,16 +24,22 @@ function readCoreVersion() {
|
|
|
29
24
|
return undefined;
|
|
30
25
|
}
|
|
31
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* 启动一个 Aalis 实例:YAML 配置 + 插件加载 + 进程级重启 + 日志/终端/子命令宿主件。
|
|
29
|
+
* 返回已启动的 App(便于测试或进一步操作)。
|
|
30
|
+
*
|
|
31
|
+
* 生命周期不变量:① `consoleHandle.bindEvents` 必须在 `new App` 之后(之前没有事件总线);
|
|
32
|
+
* ② 子命令短路必须在 `app.start` 之前。
|
|
33
|
+
*/
|
|
32
34
|
export async function startAalis(opts = {}) {
|
|
33
35
|
const { consoleSink = true, fileLog = true, terminalRestore = true } = opts;
|
|
34
|
-
|
|
35
|
-
const subcommands = Array.isArray(opts.subcommands) ? opts.subcommands : process.argv.slice(2);
|
|
36
|
+
const subcommands = opts.subcommands ?? process.argv.slice(2);
|
|
36
37
|
// ── 最早期:任何日志之前先装 bootstrap buffer,再装 terminal / console sink ──
|
|
37
38
|
const bootstrap = installBootstrapBuffer();
|
|
38
39
|
if (terminalRestore)
|
|
39
40
|
installTerminalStateRestorer();
|
|
40
41
|
const subcommandMode = subcommands.length > 0;
|
|
41
|
-
// console sink 在 App
|
|
42
|
+
// console sink 在 App 之前装:此时尚无事件总线(根绑定),sink 处于「无条件写」状态以打印早期启动日志,
|
|
42
43
|
// 待 App 起来再 bindEvents 接管 terminal:claimed/released。子命令模式日志走 stderr,stdout 只留命令结果。
|
|
43
44
|
// consoleSink: false 仍装 stderr + minLevel warn:加载器拒载「另一份 @aalis/core」的插件记 error,不能只剩下游「commands 服务不可用」。
|
|
44
45
|
const consoleHandle = consoleSink
|
|
@@ -72,15 +73,18 @@ export async function startAalis(opts = {}) {
|
|
|
72
73
|
fileLogger = await setupFileLogger(fileLogTarget);
|
|
73
74
|
// sink 全部装好;bootstrap buffer 完成使命,解除订阅并释放内存。
|
|
74
75
|
bootstrap.dispose();
|
|
75
|
-
// ── 组装 App
|
|
76
|
+
// ── 组装 App:YAML 配置文档、按 loader 发现插件、用 spawn 重启 ──
|
|
76
77
|
const { config, provider } = createFsYamlConfigProvider(opts.configPath);
|
|
77
|
-
const
|
|
78
|
+
const store = createConfigStore(config, provider);
|
|
79
|
+
// core 的慢操作阈值:缺省(含 YAML 空键解出的 null)交给 core 默认;不是非负有限数的写法告警后同样交给默认
|
|
80
|
+
// (启动时读取,改了要重启)
|
|
81
|
+
const slowThresholdMs = store.get('slowThresholdMs') ?? undefined;
|
|
82
|
+
const slowThresholdValid = slowThresholdMs === undefined ||
|
|
83
|
+
(typeof slowThresholdMs === 'number' && Number.isFinite(slowThresholdMs) && slowThresholdMs >= 0);
|
|
78
84
|
const app = new App({
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// 默认值从 configSchema 派生(唯一声明来源);core 不认识配置词汇,只调这个函数。
|
|
83
|
-
pluginDefaults: m => defaultsFrom(m.configSchema),
|
|
85
|
+
name: store.get('name'),
|
|
86
|
+
logLevel: store.get('logLevel'),
|
|
87
|
+
slowThresholdMs: slowThresholdValid ? slowThresholdMs : undefined,
|
|
84
88
|
// 子命令进程没有重启能力,不注入策略:`app.restart()` 按 core 语义抛「不可用」,指令层折成失败文案。
|
|
85
89
|
// 注入的话,`restart` 子命令在 app.stop 超过策略 500ms 等待时会 spawn 一个 argv 仍带 restart 的
|
|
86
90
|
// detached 子进程,新进程再命中 restart……无限连环(实测 5 代,Ctrl+C 打不到)。
|
|
@@ -92,13 +96,24 @@ export async function startAalis(opts = {}) {
|
|
|
92
96
|
// 宿主读取 @aalis/core 的实际版本注入启动 banner——core 环境无关、不自读 package.json。
|
|
93
97
|
version: readCoreVersion(),
|
|
94
98
|
});
|
|
95
|
-
|
|
96
|
-
|
|
99
|
+
if (!slowThresholdValid) {
|
|
100
|
+
// 数字照原样显示:JSON.stringify 会把 Infinity / NaN 显示成 null
|
|
101
|
+
const received = typeof slowThresholdMs === 'number' ? String(slowThresholdMs) : JSON.stringify(slowThresholdMs);
|
|
102
|
+
app.logger.warn(`配置项 slowThresholdMs 应为不小于 0 的有限数字(毫秒),收到 ${received},按默认值处理`);
|
|
103
|
+
}
|
|
104
|
+
// 配置文档先于任何插件接上:文档里的服务偏好要在全部提供者上线前生效
|
|
105
|
+
installHostConfig(app, store, opts.configSync);
|
|
106
|
+
// 默认值从 configSchema 派生(唯一声明来源),导入定义后、登记前深合并进文档;登记时原样交给 core
|
|
107
|
+
const configLoader = withPluginConfigSync(opts.pluginLoader ?? createNodeModulesPluginLoader(opts.projectDir), app, store, opts.configSync);
|
|
108
|
+
// 宿主的根绑定:事件订阅、服务查询与宿主服务登记都经它,随 App 停止撤回
|
|
109
|
+
const host = app.bind({ events, provide, services });
|
|
110
|
+
const discovery = createPluginDiscovery(app, configLoader.loader, store);
|
|
111
|
+
host.provide(pluginSource, { rescan: () => discovery.rescan() }, { exclusive: true });
|
|
97
112
|
// 不变量①:App 构造完成后再让 sink 监听终端归属事件——此前没有事件总线可订阅。
|
|
98
113
|
consoleHandle.bindEvents(host.events);
|
|
99
114
|
try {
|
|
100
115
|
// 每个定义交给 Core 前已经规范化;首次 apply 与配置快照用同一份字段。
|
|
101
|
-
await
|
|
116
|
+
await discovery.loadAll();
|
|
102
117
|
}
|
|
103
118
|
finally {
|
|
104
119
|
// 即使后续加载失败,也保存本批已完成的规范化;不启动第二轮 bounce。
|
|
@@ -120,13 +135,30 @@ export async function startAalis(opts = {}) {
|
|
|
120
135
|
// 典型链条:A 缺 apiKey 激活失败(有 ERROR)→ 依赖 A 所提供服务的 B 静默挂起,
|
|
121
136
|
// 用户只看到 A 的报错,会以为「只是 A 不可用」,不知道 B 也一并废了
|
|
122
137
|
// (实例:embedding-openai 缺 key → memory-vector 永远不激活,向量记忆整个不工作)。
|
|
123
|
-
|
|
138
|
+
// 没有提供者的服务若由仍在激活中(含已转入后台)的插件声明提供,报「等待 <实例> 激活完成」而非缺少:
|
|
139
|
+
// 它的服务在激活完成前不对外。判据同 plugin-doctor 的 plugins.pending。
|
|
140
|
+
const status = app.plugins.getStatus();
|
|
141
|
+
const activating = status.filter(s => s.state === 'activating');
|
|
142
|
+
for (const p of status) {
|
|
124
143
|
if (p.state !== 'pending')
|
|
125
144
|
continue;
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
145
|
+
const missing = [];
|
|
146
|
+
const waiting = new Set();
|
|
147
|
+
for (const svc of p.requiredServices ?? []) {
|
|
148
|
+
if (host.services.inspect(svc).length > 0)
|
|
149
|
+
continue;
|
|
150
|
+
const provider = activating.find(s => s.provides?.includes(svc));
|
|
151
|
+
if (provider)
|
|
152
|
+
waiting.add(provider.instanceId);
|
|
153
|
+
else
|
|
154
|
+
missing.push(svc);
|
|
129
155
|
}
|
|
156
|
+
const reasons = [
|
|
157
|
+
...(missing.length > 0 ? [`缺少服务: ${missing.join('、')}`] : []),
|
|
158
|
+
...[...waiting].map(id => `等待 ${id} 激活完成`),
|
|
159
|
+
];
|
|
160
|
+
if (reasons.length > 0)
|
|
161
|
+
app.logger.warn(`插件 "${p.instanceId}" 依赖未满足,未激活(${reasons.join(';')})`);
|
|
130
162
|
}
|
|
131
163
|
// 向重启我们的父进程回报「起来了」。父进程据此决定放手退出,还是判定本次
|
|
132
164
|
// 更新失败并回滚(见 providers.ts 的 createProcessRespawnStrategy)。
|
|
@@ -143,8 +175,8 @@ export async function startAalis(opts = {}) {
|
|
|
143
175
|
process.send?.({ type: READY_MESSAGE }, undefined, undefined, () => { });
|
|
144
176
|
// 握手完成后解除 IPC 对事件循环的持有——否则父进程退出前本进程无法自然结束。
|
|
145
177
|
process.channel?.unref();
|
|
146
|
-
// 配置外部变更热重载(provider 不支持 watch 时为 no-op
|
|
147
|
-
installConfigHotReload(app, opts.configSync);
|
|
178
|
+
// 配置外部变更热重载(provider 不支持 watch 时为 no-op);文件里新增的后缀实例经发现驱动登记。
|
|
179
|
+
installConfigHotReload(app, store, discovery, opts.configSync);
|
|
148
180
|
let stopping = false;
|
|
149
181
|
const shutdown = async () => {
|
|
150
182
|
if (stopping)
|
package/dist/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
|
package/dist/subcommand.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { Services } from '@aalis/core';
|
|
|
8
8
|
*
|
|
9
9
|
* 不直接绑定任何具体命令;所有命令由插件向 commands 服务注册。
|
|
10
10
|
*
|
|
11
|
-
*
|
|
11
|
+
* 抽离到独立模块以便单测。
|
|
12
12
|
*/
|
|
13
13
|
export declare function tryDispatchSubcommand(services: Services, argv: string[], out?: (msg: string) => void, err?: (msg: string) => void): Promise<number>;
|
|
14
14
|
//# sourceMappingURL=subcommand.d.ts.map
|
package/dist/subcommand.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* 不直接绑定任何具体命令;所有命令由插件向 commands 服务注册。
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* 抽离到独立模块以便单测。
|
|
11
11
|
*/
|
|
12
12
|
export async function tryDispatchSubcommand(services, argv, out = msg => console.log(msg), err = msg => console.error(msg)) {
|
|
13
13
|
const [cmdName = '', ...rest] = argv;
|
package/dist/terminal.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare function installTerminalStateRestorer(): void;
|
|
|
9
9
|
* exit 钩子写出的 `\x1b[?1049l` 落在子进程已接管终端之后,把新实例的 TUI 当场踢出备用屏。
|
|
10
10
|
*
|
|
11
11
|
* 摘掉是安全的:父进程停机时 plugin-cli 自己的 `stop()` 已经复原过一次
|
|
12
|
-
* (经 `
|
|
12
|
+
* (经 `lifecycle.onDispose`),这个钩子在该路径上本就是第二次复原。
|
|
13
13
|
* 失败分支(子进程夭折)不得摘——那条路没有别人接管终端。
|
|
14
14
|
*/
|
|
15
15
|
export declare function disarmTerminalStateRestorer(): void;
|
package/dist/terminal.js
CHANGED
|
@@ -31,7 +31,7 @@ export function installTerminalStateRestorer() {
|
|
|
31
31
|
* exit 钩子写出的 `\x1b[?1049l` 落在子进程已接管终端之后,把新实例的 TUI 当场踢出备用屏。
|
|
32
32
|
*
|
|
33
33
|
* 摘掉是安全的:父进程停机时 plugin-cli 自己的 `stop()` 已经复原过一次
|
|
34
|
-
* (经 `
|
|
34
|
+
* (经 `lifecycle.onDispose`),这个钩子在该路径上本就是第二次复原。
|
|
35
35
|
* 失败分支(子进程夭折)不得摘——那条路没有别人接管终端。
|
|
36
36
|
*/
|
|
37
37
|
export function disarmTerminalStateRestorer() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,20 +26,19 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"chalk": "^5.4.0",
|
|
28
28
|
"yaml": "^2.7.0",
|
|
29
|
-
"@aalis/schema-config": ">=0.
|
|
30
|
-
"@aalis/schema-log": ">=0.
|
|
29
|
+
"@aalis/schema-config": ">=0.13.0 <1.0.0",
|
|
30
|
+
"@aalis/schema-log": ">=0.2.0 <1.0.0",
|
|
31
|
+
"@aalis/api-plugin-source": ">=0.1.0 <1.0.0",
|
|
32
|
+
"@aalis/api-host-config": ">=0.1.0 <1.0.0"
|
|
31
33
|
},
|
|
32
34
|
"peerDependencies": {
|
|
33
|
-
"@aalis/core": ">=0.
|
|
35
|
+
"@aalis/core": ">=0.18.0 <1.0.0"
|
|
34
36
|
},
|
|
35
37
|
"devDependencies": {
|
|
36
38
|
"typescript": "^5.7.0",
|
|
37
39
|
"@types/node": "^22.0.0",
|
|
38
|
-
"@aalis/
|
|
39
|
-
"@aalis/
|
|
40
|
-
},
|
|
41
|
-
"aalis": {
|
|
42
|
-
"tooling": true
|
|
40
|
+
"@aalis/api-commands": "0.7.0",
|
|
41
|
+
"@aalis/core": "0.18.0"
|
|
43
42
|
},
|
|
44
43
|
"scripts": {
|
|
45
44
|
"build": "tsc",
|