@aalis/core 0.7.0 → 0.9.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/app.d.ts +16 -13
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +20 -45
- package/dist/app.js.map +1 -1
- package/dist/config.d.ts +2 -25
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -96
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +105 -34
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +185 -43
- package/dist/context.js.map +1 -1
- package/dist/contributions.d.ts +75 -0
- package/dist/contributions.d.ts.map +1 -0
- package/dist/contributions.js +83 -0
- package/dist/contributions.js.map +1 -0
- package/dist/disposable-chain.d.ts +47 -6
- package/dist/disposable-chain.d.ts.map +1 -1
- package/dist/disposable-chain.js +92 -12
- package/dist/disposable-chain.js.map +1 -1
- package/dist/events.d.ts +1 -9
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -23
- package/dist/events.js.map +1 -1
- package/dist/hooks.d.ts +7 -22
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +6 -2
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/plugin-activation.d.ts +2 -0
- package/dist/plugin-activation.d.ts.map +1 -1
- package/dist/plugin-activation.js +9 -5
- package/dist/plugin-activation.js.map +1 -1
- package/dist/plugin-topology.d.ts +6 -2
- package/dist/plugin-topology.d.ts.map +1 -1
- package/dist/plugin-topology.js +6 -4
- package/dist/plugin-topology.js.map +1 -1
- package/dist/plugin.d.ts +20 -14
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +53 -72
- package/dist/plugin.js.map +1 -1
- package/dist/{service-helpers.d.ts → services-helpers.d.ts} +2 -2
- package/dist/services-helpers.d.ts.map +1 -0
- package/dist/{service-helpers.js → services-helpers.js} +2 -2
- package/dist/{service-helpers.js.map → services-helpers.js.map} +1 -1
- package/dist/{service.d.ts → services.d.ts} +43 -9
- package/dist/services.d.ts.map +1 -0
- package/dist/{service.js → services.js} +34 -11
- package/dist/services.js.map +1 -0
- package/dist/types/app.d.ts +8 -8
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/contributions.d.ts +3 -0
- package/dist/types/contributions.d.ts.map +1 -0
- package/dist/types/contributions.js +10 -0
- package/dist/types/contributions.js.map +1 -0
- package/dist/types/events.d.ts +44 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +6 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/hooks.d.ts +8 -0
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +8 -6
- package/dist/types/index.js.map +1 -1
- package/dist/types/plugin.d.ts +12 -4
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/plugin.js.map +1 -1
- package/dist/types/services.d.ts +4 -0
- package/dist/types/services.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/constants.d.ts +0 -31
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -36
- package/dist/constants.js.map +0 -1
- package/dist/i18n.d.ts +0 -6
- package/dist/i18n.d.ts.map +0 -1
- package/dist/i18n.js +0 -26
- package/dist/i18n.js.map +0 -1
- package/dist/identity.d.ts +0 -26
- package/dist/identity.d.ts.map +0 -1
- package/dist/identity.js +0 -36
- package/dist/identity.js.map +0 -1
- package/dist/init.d.ts +0 -20
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -455
- package/dist/init.js.map +0 -1
- package/dist/llm-router.d.ts.map +0 -1
- package/dist/llm-router.js +0 -123
- package/dist/llm-router.js.map +0 -1
- package/dist/marketplace-bootstrap.d.ts +0 -54
- package/dist/marketplace-bootstrap.d.ts.map +0 -1
- package/dist/marketplace-bootstrap.js +0 -132
- package/dist/marketplace-bootstrap.js.map +0 -1
- package/dist/mixin-registry.d.ts +0 -34
- package/dist/mixin-registry.d.ts.map +0 -1
- package/dist/mixin-registry.js +0 -60
- package/dist/mixin-registry.js.map +0 -1
- package/dist/model-ref.d.ts +0 -22
- package/dist/model-ref.d.ts.map +0 -1
- package/dist/model-ref.js +0 -46
- package/dist/model-ref.js.map +0 -1
- package/dist/pending-buffer.d.ts +0 -46
- package/dist/pending-buffer.d.ts.map +0 -1
- package/dist/pending-buffer.js +0 -131
- package/dist/pending-buffer.js.map +0 -1
- package/dist/platform-registry.d.ts +0 -40
- package/dist/platform-registry.d.ts.map +0 -1
- package/dist/platform-registry.js +0 -64
- package/dist/platform-registry.js.map +0 -1
- package/dist/semver-mini.d.ts +0 -20
- package/dist/semver-mini.d.ts.map +0 -1
- package/dist/semver-mini.js +0 -94
- package/dist/semver-mini.js.map +0 -1
- package/dist/service-helpers.d.ts.map +0 -1
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js.map +0 -1
- package/dist/types/agent.d.ts +0 -51
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js +0 -3
- package/dist/types/agent.js.map +0 -1
- package/dist/types/archive.d.ts +0 -59
- package/dist/types/archive.d.ts.map +0 -1
- package/dist/types/archive.js +0 -16
- package/dist/types/archive.js.map +0 -1
- package/dist/types/authority.d.ts +0 -63
- package/dist/types/authority.d.ts.map +0 -1
- package/dist/types/authority.js +0 -3
- package/dist/types/authority.js.map +0 -1
- package/dist/types/capabilities.d.ts +0 -53
- package/dist/types/capabilities.d.ts.map +0 -1
- package/dist/types/capabilities.js +0 -87
- package/dist/types/capabilities.js.map +0 -1
- package/dist/types/cli.d.ts +0 -14
- package/dist/types/cli.d.ts.map +0 -1
- package/dist/types/cli.js +0 -3
- package/dist/types/cli.js.map +0 -1
- package/dist/types/commands.d.ts +0 -98
- package/dist/types/commands.d.ts.map +0 -1
- package/dist/types/commands.js +0 -3
- package/dist/types/commands.js.map +0 -1
- package/dist/types/core.d.ts +0 -116
- package/dist/types/core.d.ts.map +0 -1
- package/dist/types/core.js +0 -6
- package/dist/types/core.js.map +0 -1
- package/dist/types/embedding.d.ts +0 -7
- package/dist/types/embedding.d.ts.map +0 -1
- package/dist/types/embedding.js +0 -3
- package/dist/types/embedding.js.map +0 -1
- package/dist/types/flow-control.d.ts +0 -51
- package/dist/types/flow-control.d.ts.map +0 -1
- package/dist/types/flow-control.js +0 -12
- package/dist/types/flow-control.js.map +0 -1
- package/dist/types/gateway.d.ts +0 -24
- package/dist/types/gateway.d.ts.map +0 -1
- package/dist/types/gateway.js +0 -15
- package/dist/types/gateway.js.map +0 -1
- package/dist/types/image-recognition.d.ts +0 -123
- package/dist/types/image-recognition.d.ts.map +0 -1
- package/dist/types/image-recognition.js +0 -31
- package/dist/types/image-recognition.js.map +0 -1
- package/dist/types/llm.d.ts +0 -146
- package/dist/types/llm.d.ts.map +0 -1
- package/dist/types/llm.js +0 -27
- package/dist/types/llm.js.map +0 -1
- package/dist/types/memory.d.ts +0 -62
- package/dist/types/memory.d.ts.map +0 -1
- package/dist/types/memory.js +0 -22
- package/dist/types/memory.js.map +0 -1
- package/dist/types/persona.d.ts +0 -45
- package/dist/types/persona.d.ts.map +0 -1
- package/dist/types/persona.js +0 -3
- package/dist/types/persona.js.map +0 -1
- package/dist/types/platform.d.ts +0 -126
- package/dist/types/platform.d.ts.map +0 -1
- package/dist/types/platform.js +0 -5
- package/dist/types/platform.js.map +0 -1
- package/dist/types/service.d.ts +0 -41
- package/dist/types/service.d.ts.map +0 -1
- package/dist/types/service.js +0 -35
- package/dist/types/service.js.map +0 -1
- package/dist/types/session.d.ts +0 -153
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js +0 -19
- package/dist/types/session.js.map +0 -1
- package/dist/types/storage.d.ts +0 -100
- package/dist/types/storage.d.ts.map +0 -1
- package/dist/types/storage.js +0 -29
- package/dist/types/storage.js.map +0 -1
- package/dist/types/tools.d.ts +0 -39
- package/dist/types/tools.d.ts.map +0 -1
- package/dist/types/tools.js +0 -3
- package/dist/types/tools.js.map +0 -1
- package/dist/types/trigger-policy.d.ts +0 -16
- package/dist/types/trigger-policy.d.ts.map +0 -1
- package/dist/types/trigger-policy.js +0 -6
- package/dist/types/trigger-policy.js.map +0 -1
- package/dist/types/vectorstore.d.ts +0 -23
- package/dist/types/vectorstore.d.ts.map +0 -1
- package/dist/types/vectorstore.js +0 -3
- package/dist/types/vectorstore.js.map +0 -1
- package/dist/types/web-search.d.ts +0 -88
- package/dist/types/web-search.d.ts.map +0 -1
- package/dist/types/web-search.js +0 -23
- package/dist/types/web-search.js.map +0 -1
- package/dist/types/webui.d.ts +0 -137
- package/dist/types/webui.d.ts.map +0 -1
- package/dist/types/webui.js +0 -3
- package/dist/types/webui.js.map +0 -1
package/dist/app.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { type AalisConfig, ConfigManager } from './config.js';
|
|
2
2
|
import { Context } from './context.js';
|
|
3
|
+
import { ContributionRegistry } from './contributions.js';
|
|
3
4
|
import { EventBus } from './events.js';
|
|
4
5
|
import { HookRegistry } from './hooks.js';
|
|
5
6
|
import { type Logger, LogHub } from './logger.js';
|
|
6
7
|
import { PluginManager, type PluginModule } from './plugin.js';
|
|
7
8
|
import type { ConfigProvider, PluginLoader, RestartStrategy } from './providers.js';
|
|
8
|
-
import { ServiceContainer } from './
|
|
9
|
+
import { ServiceContainer } from './services.js';
|
|
9
10
|
/**
|
|
10
11
|
* App 构造选项
|
|
11
12
|
*
|
|
@@ -41,6 +42,15 @@ export interface AppOptions {
|
|
|
41
42
|
services?: ServiceContainer;
|
|
42
43
|
/** 注入自定义钩子注册表 */
|
|
43
44
|
hooks?: HookRegistry;
|
|
45
|
+
/** 注入自定义贡献点注册表 */
|
|
46
|
+
contributions?: ContributionRegistry;
|
|
47
|
+
/**
|
|
48
|
+
* 单个异步清理项(onDispose 返回的 promise)的等待上限(毫秒),默认 5000。
|
|
49
|
+
* 用于插件 unload / bounce / 停机路径的 disposeAsync——网络类关闭(数据库/
|
|
50
|
+
* 浏览器/MCP 连接)卡死时放弃等待该项、继续后续清理并 warn 点名,保证
|
|
51
|
+
* 停机始终能走完。传 0 表示不设限。
|
|
52
|
+
*/
|
|
53
|
+
disposeTimeoutMs?: number;
|
|
44
54
|
/**
|
|
45
55
|
* 注入自定义 LogHub。多 App 沙盒 / 集成测试 / 嵌入多实例场景下
|
|
46
56
|
* 可以传入 `new LogHub()`使每个 App 拥有独立的日志通道,不互相串台。
|
|
@@ -53,14 +63,6 @@ export interface AppOptions {
|
|
|
53
63
|
* 监听的是 LogHub,是否对接由注入方自理。缺省 = DefaultLogger(写入 logHub)。
|
|
54
64
|
*/
|
|
55
65
|
logger?: Logger;
|
|
56
|
-
/**
|
|
57
|
-
* 插件配置同步政策。`trimUnknownFields=false` 时 `syncPluginDefaults`
|
|
58
|
-
* 保留 configSchema 之外的未知字段(默认 `true`:按 schema 裁剪)。
|
|
59
|
-
* 仅在传入配置快照时生效;传入现成 ConfigManager 时政策属于该实例自身。
|
|
60
|
-
*/
|
|
61
|
-
configSync?: {
|
|
62
|
-
trimUnknownFields?: boolean;
|
|
63
|
-
};
|
|
64
66
|
/**
|
|
65
67
|
* 开发模式开关——传递给根 Context,决定 `provide` 是否跑能力探测。
|
|
66
68
|
* 默认 `true`(dev-safe);生产宿主应显式传入 `false` 跳过热路径开销。
|
|
@@ -106,8 +108,10 @@ export declare class App {
|
|
|
106
108
|
readonly events: EventBus;
|
|
107
109
|
readonly services: ServiceContainer;
|
|
108
110
|
readonly hooks: HookRegistry;
|
|
111
|
+
readonly contributions: ContributionRegistry;
|
|
109
112
|
private readonly pluginLoader?;
|
|
110
113
|
private readonly restartStrategy?;
|
|
114
|
+
private readonly disposeTimeoutMs;
|
|
111
115
|
/** 已发现插件的描述符索引(按模块名)。用于热重载时拿到 source/metadata。 */
|
|
112
116
|
private readonly discoveredCache;
|
|
113
117
|
constructor(options: AppOptions);
|
|
@@ -136,12 +140,11 @@ export declare class App {
|
|
|
136
140
|
* 保存当前配置(委托给 configProvider;无 provider 时静默忽略)。
|
|
137
141
|
*/
|
|
138
142
|
saveConfig(): void;
|
|
139
|
-
/**
|
|
140
|
-
* 配置外部变更时的处理:重新计算各插件配置并热重载差异。
|
|
141
|
-
*/
|
|
142
|
-
private handleConfigFileChanged;
|
|
143
143
|
/**
|
|
144
144
|
* 启动应用
|
|
145
|
+
*
|
|
146
|
+
* 配置外部变更的热重载编排(diff + bounce)属宿主政策:
|
|
147
|
+
* 宿主自行 `app.ctx.config.watch(cb)` 接管。
|
|
145
148
|
*/
|
|
146
149
|
start(): Promise<void>;
|
|
147
150
|
/**
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAmB,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAoB,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ConfigManager } from './config.js';
|
|
2
2
|
import { Context } from './context.js';
|
|
3
|
+
import { ContributionRegistry } from './contributions.js';
|
|
3
4
|
import { EventBus } from './events.js';
|
|
4
5
|
import { HookRegistry } from './hooks.js';
|
|
5
6
|
import { DefaultLogger, LogHub } from './logger.js';
|
|
6
7
|
import { PluginManager, parseInstanceId } from './plugin.js';
|
|
7
|
-
import { ServiceContainer } from './
|
|
8
|
+
import { ServiceContainer } from './services.js';
|
|
8
9
|
/**
|
|
9
10
|
* 创建 App 实例的工厂函数。
|
|
10
11
|
*
|
|
@@ -33,8 +34,10 @@ export class App {
|
|
|
33
34
|
events;
|
|
34
35
|
services;
|
|
35
36
|
hooks;
|
|
37
|
+
contributions;
|
|
36
38
|
pluginLoader;
|
|
37
39
|
restartStrategy;
|
|
40
|
+
disposeTimeoutMs;
|
|
38
41
|
/** 已发现插件的描述符索引(按模块名)。用于热重载时拿到 source/metadata。 */
|
|
39
42
|
discoveredCache = new Map();
|
|
40
43
|
constructor(options) {
|
|
@@ -44,7 +47,6 @@ export class App {
|
|
|
44
47
|
: new ConfigManager(options.config, {
|
|
45
48
|
provider: options.configProvider,
|
|
46
49
|
dataDir: options.dataDir,
|
|
47
|
-
trimUnknownFields: options.configSync?.trimUnknownFields,
|
|
48
50
|
});
|
|
49
51
|
this.events = options.events ?? new EventBus();
|
|
50
52
|
// 'ready' / 'app:started' 是"应用启动完成"里程碑:app.start() 仅 emit
|
|
@@ -56,6 +58,7 @@ export class App {
|
|
|
56
58
|
this.events.markSticky('app:started');
|
|
57
59
|
this.services = options.services ?? new ServiceContainer();
|
|
58
60
|
this.hooks = options.hooks ?? new HookRegistry();
|
|
61
|
+
this.contributions = options.contributions ?? new ContributionRegistry();
|
|
59
62
|
this.logger =
|
|
60
63
|
options.logger ??
|
|
61
64
|
new DefaultLogger('aalis', config.get('logLevel'), options.logHub ?? LogHub.default, options.now);
|
|
@@ -68,18 +71,20 @@ export class App {
|
|
|
68
71
|
this.hooks.onStall ??= (hook, contextId, skipped) => this.logger.warn(`钩子 ${hook}: handler(来自 ${contextId}) 未调用 next(),其后 ${skipped} 个 handler 被跳过`);
|
|
69
72
|
this.pluginLoader = options.pluginLoader;
|
|
70
73
|
this.restartStrategy = options.restartStrategy;
|
|
74
|
+
this.disposeTimeoutMs = options.disposeTimeoutMs ?? 5000;
|
|
71
75
|
// 2. 根上下文
|
|
72
76
|
this.ctx = new Context({
|
|
73
77
|
id: 'root',
|
|
74
78
|
events: this.events,
|
|
75
79
|
services: this.services,
|
|
76
80
|
hooks: this.hooks,
|
|
81
|
+
contributions: this.contributions,
|
|
77
82
|
logger: this.logger,
|
|
78
83
|
config,
|
|
79
84
|
devMode: options.devMode ?? true,
|
|
80
85
|
});
|
|
81
86
|
// 3. 插件管理器
|
|
82
|
-
this.plugins = new PluginManager(this.ctx, this.logger);
|
|
87
|
+
this.plugins = new PluginManager(this.ctx, this.logger, this.disposeTimeoutMs);
|
|
83
88
|
// 4. 注册核心服务
|
|
84
89
|
this.ctx.provide('app', this);
|
|
85
90
|
this.ctx.provide('plugins', this.plugins);
|
|
@@ -173,12 +178,7 @@ export class App {
|
|
|
173
178
|
this.logger.error(`加载多实例插件 "${configKey}" 失败: ${message}`);
|
|
174
179
|
}
|
|
175
180
|
}
|
|
176
|
-
//
|
|
177
|
-
const changed = this.ctx.config.syncPluginDefaults(this.plugins.getStatus());
|
|
178
|
-
for (const id of changed)
|
|
179
|
-
this.logger.debug(`同步插件配置: ${id}`);
|
|
180
|
-
if (changed.length > 0)
|
|
181
|
-
this.logger.info('已将插件配置同步到配置文件');
|
|
181
|
+
// 配置同步政策(defaultConfig 回填 / schema 裁剪)属宿主层,由宿主在本方法之后自行执行。
|
|
182
182
|
}
|
|
183
183
|
/**
|
|
184
184
|
* 重新扫描插件源,加载新发现的插件(已注册的跳过)。
|
|
@@ -223,48 +223,17 @@ export class App {
|
|
|
223
223
|
this.ctx.config.save();
|
|
224
224
|
this.logger.info('配置已保存');
|
|
225
225
|
}
|
|
226
|
-
/**
|
|
227
|
-
* 配置外部变更时的处理:重新计算各插件配置并热重载差异。
|
|
228
|
-
*/
|
|
229
|
-
async handleConfigFileChanged() {
|
|
230
|
-
this.logger.info('检测到配置变更,正在热重载...');
|
|
231
|
-
try {
|
|
232
|
-
// 先按与启动路径相同的政策同步一遍(补 defaultConfig 缺失字段 +
|
|
233
|
-
// 按 trimUnknownFields 裁剪 schema 外字段)——否则热重载读入的
|
|
234
|
-
// 原始快照会绕过政策,内存态与启动态在字段清理上不一致。
|
|
235
|
-
const synced = this.ctx.config.syncPluginDefaults(this.plugins.getStatus());
|
|
236
|
-
for (const id of synced)
|
|
237
|
-
this.logger.debug(`热重载配置同步: ${id}`);
|
|
238
|
-
let changed = false;
|
|
239
|
-
for (const p of this.plugins.getStatus()) {
|
|
240
|
-
const defaults = p.defaultConfig ?? {};
|
|
241
|
-
const fileConfig = this.ctx.config.getPluginConfig(p.instanceId);
|
|
242
|
-
const newConfig = { ...defaults, ...fileConfig };
|
|
243
|
-
if (JSON.stringify(newConfig) !== JSON.stringify(p.config)) {
|
|
244
|
-
this.logger.info(`插件 ${p.instanceId} 配置已变更,正在重新加载...`);
|
|
245
|
-
await this.plugins.updatePluginConfig(p.instanceId, newConfig);
|
|
246
|
-
changed = true;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
if (changed) {
|
|
250
|
-
await this.ctx.emit('plugins:changed');
|
|
251
|
-
}
|
|
252
|
-
this.logger.info('配置热重载完成');
|
|
253
|
-
}
|
|
254
|
-
catch (e) {
|
|
255
|
-
this.logger.error('配置热重载失败:', e);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
226
|
/**
|
|
259
227
|
* 启动应用
|
|
228
|
+
*
|
|
229
|
+
* 配置外部变更的热重载编排(diff + bounce)属宿主政策:
|
|
230
|
+
* 宿主自行 `app.ctx.config.watch(cb)` 接管。
|
|
260
231
|
*/
|
|
261
232
|
async start() {
|
|
262
233
|
this.logger.info('正在启动...');
|
|
263
234
|
await this.ctx.emit('app:starting');
|
|
264
235
|
// 注:消息路由由 @aalis/plugin-gateway 承担。
|
|
265
236
|
await this.ctx.emit('ready');
|
|
266
|
-
// 监听配置外部变更(provider 不支持 watch 时为 no-op)
|
|
267
|
-
this.ctx.config.watch(() => this.handleConfigFileChanged());
|
|
268
237
|
this.logger.info('启动完成');
|
|
269
238
|
await this.ctx.emit('app:started');
|
|
270
239
|
}
|
|
@@ -299,14 +268,20 @@ export class App {
|
|
|
299
268
|
this.logger.info('正在停止...');
|
|
300
269
|
this.ctx.config.unwatch();
|
|
301
270
|
await this.ctx.emit('app:stopping');
|
|
302
|
-
//
|
|
271
|
+
// 先等状态机静置:recompute 是单飞的,若此刻恰有 bounce/unload 在飞,
|
|
272
|
+
// stopAll 的 shutdown 请求会被排队后**立即返回**,拓扑逆序编排整个落空,
|
|
273
|
+
// 退化成根 ctx 按 fork 正序级联(提供者先关),下游插件的 onDispose 落盘
|
|
274
|
+
// 会写进已关闭的连接。App.stop 不在 apply/onDispose 内,await idle 无死锁风险。
|
|
275
|
+
await this.plugins.idle();
|
|
276
|
+
// 按拓扑逆序 dispose 所有 active 插件——消费者先关,提供者后关——这样下游
|
|
303
277
|
// 插件的 ctx.onDispose 还能安全访问其依赖的服务。stopAll 会置位 shuttingDown,
|
|
304
278
|
// 屏蔽反应式 service:unregistered 级联,避免无意义 bounce 噪声。
|
|
305
279
|
await this.plugins.stopAll();
|
|
306
280
|
// 清掉全部 sticky 缓存('ready' + 'app:started'),防止后续 restart
|
|
307
281
|
// 复用过时的"已启动"标记
|
|
308
282
|
this.events.clearSticky();
|
|
309
|
-
|
|
283
|
+
// 等待根 ctx 的异步清理(含各插件 onDispose 的落盘)真正完成再宣告停止
|
|
284
|
+
await this.ctx.disposeAsync(this.disposeTimeoutMs);
|
|
310
285
|
this.logger.info('已停止');
|
|
311
286
|
}
|
|
312
287
|
}
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAe,MAAM,EAAiB,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,aAAa,EAAqB,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAgFjD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,OAAmB;IAC3C,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACL,GAAG,CAAU;IACb,OAAO,CAAgB;IACvB,MAAM,CAAS;IAEf,MAAM,CAAW;IACjB,QAAQ,CAAmB;IAC3B,KAAK,CAAe;IACpB,aAAa,CAAuB;IAE5B,YAAY,CAAgB;IAC5B,eAAe,CAAmB;IAClC,gBAAgB,CAAS;IAC1C,kDAAkD;IACjC,eAAe,GAAkC,IAAI,GAAG,EAAE,CAAC;IAE5E,YAAY,OAAmB;QAC7B,gCAAgC;QAChC,MAAM,MAAM,GACV,OAAO,CAAC,MAAM,YAAY,aAAa;YACrC,CAAC,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;gBAChC,QAAQ,EAAE,OAAO,CAAC,cAAc;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QAET,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC/C,0DAA0D;QAC1D,uCAAuC;QACvC,2DAA2D;QAC3D,4CAA4C;QAC5C,qDAAqD;QACrD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,gBAAgB,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,YAAY,EAAE,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACzE,IAAI,CAAC,MAAM;YACT,OAAO,CAAC,MAAM;gBACd,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAa,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAChH,8CAA8C;QAC9C,8BAA8B;QAC9B,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,+CAA+C;QAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,gBAAgB,SAAS,mBAAmB,OAAO,gBAAgB,CAAC,CAAC;QAClG,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;QAEzD,UAAU;QACV,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC;YACrB,EAAE,EAAE,MAAM;YACV,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM;YACN,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;SACjC,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE/E,YAAY;QACZ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1C,mBAAmB;QACnB,MAAM,YAAY,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,cAAc;QACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAAE;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,OAAO,gBAAgB,IAAI,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,UAAU,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,MAAoB,EAAE,MAAgC,EAAE,UAAmB;QACtF,MAAM,EAAE,GAAG,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC;QACrC,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/D,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,MAAM,CAAC,CAAC;QAEhD,kBAAkB;QAClB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;QAEtD,sDAAsD;QACtD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,mBAAmB,CAAC,CAAC;oBAC5D,SAAS;gBACX,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,SAAS,OAAO,EAAE,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,SAAS,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC3D,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACnD,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,SAAS,YAAY,UAAU,UAAU,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,yBAAyB,SAAS,GAAG,CAAC,CAAC;gBACzE,SAAS;YACX,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,SAAS,SAAS,OAAO,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,0DAA0D;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1C,SAAS;YACT,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEhD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;oBAClC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;oBACtC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC3C,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,SAAS,OAAO,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEpC,oCAAoC;QACpC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QACtC,0DAA0D;QAC1D,0CAA0C;QAC1C,uCAAuC;QACvC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG;aACL,IAAI,CAAC,YAAY,CAAC;aAClB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aACzD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpC,iDAAiD;QACjD,iDAAiD;QACjD,iDAAiD;QACjD,4DAA4D;QAC5D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1B,gDAAgD;QAChD,2DAA2D;QAC3D,iDAAiD;QACjD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,uDAAuD;QACvD,eAAe;QACf,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,6CAA6C;QAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ConfigProvider } from './providers.js';
|
|
2
|
-
import type { ConfigSchema } from './types/index.js';
|
|
3
2
|
/**
|
|
4
3
|
* Aalis 应用配置(基础设施字段)
|
|
5
4
|
*
|
|
@@ -31,8 +30,6 @@ export interface AalisConfig {
|
|
|
31
30
|
servicePreferences?: Record<string, string>;
|
|
32
31
|
[key: string]: unknown;
|
|
33
32
|
}
|
|
34
|
-
/** 核心配置的 Schema,与插件 configSchema 走同一套渲染路径 */
|
|
35
|
-
export declare const CORE_CONFIG_SCHEMA: ConfigSchema;
|
|
36
33
|
export interface ConfigManagerOptions {
|
|
37
34
|
/** 持久化与外部变更监听由 provider 提供;省略则进入纯内存模式(save() 静默) */
|
|
38
35
|
provider?: ConfigProvider;
|
|
@@ -41,12 +38,6 @@ export interface ConfigManagerOptions {
|
|
|
41
38
|
* core 自己不读写它;语义由宿主与插件约定。默认 `'.'`。
|
|
42
39
|
*/
|
|
43
40
|
dataDir?: string;
|
|
44
|
-
/**
|
|
45
|
-
* `syncPluginDefaults` 是否按 configSchema 裁剪未知字段(默认 `true`)。
|
|
46
|
-
* 设为 `false` 时保留 schema 外的字段——适合宿主允许手写实验性配置、
|
|
47
|
-
* 或 schema 滞后于实现的场景。这是政策而非机制,故开放给宿主注入。
|
|
48
|
-
*/
|
|
49
|
-
trimUnknownFields?: boolean;
|
|
50
41
|
}
|
|
51
42
|
/**
|
|
52
43
|
* 配置管理器:纯内存的配置中枢。
|
|
@@ -68,8 +59,6 @@ export declare class ConfigManager {
|
|
|
68
59
|
private config;
|
|
69
60
|
private readonly provider?;
|
|
70
61
|
private readonly dataDir;
|
|
71
|
-
/** syncPluginDefaults 的字段裁剪政策(公开只读:scope 继承、宿主可内省) */
|
|
72
|
-
readonly trimUnknownFields: boolean;
|
|
73
62
|
private unwatchFn;
|
|
74
63
|
private onChangeCallback;
|
|
75
64
|
constructor(initial: AalisConfig, options?: ConfigManagerOptions);
|
|
@@ -84,17 +73,6 @@ export declare class ConfigManager {
|
|
|
84
73
|
set<K extends keyof AalisConfig>(key: K, value: AalisConfig[K]): void;
|
|
85
74
|
setPluginConfig(pluginName: string, config: Record<string, unknown>): void;
|
|
86
75
|
removePluginConfig(pluginName: string): void;
|
|
87
|
-
/**
|
|
88
|
-
* 将插件 defaultConfig 中缺失的字段合并到配置;同时按 configSchema
|
|
89
|
-
* 移除多余字段。返回发生变更的插件 instanceId 列表(调用方可决定要不要 log)。
|
|
90
|
-
*
|
|
91
|
-
* 副作用:内部对每个发生变化的条目调用 setPluginConfig;若有变化最终调用 save()。
|
|
92
|
-
*/
|
|
93
|
-
syncPluginDefaults(plugins: ReadonlyArray<{
|
|
94
|
-
instanceId: string;
|
|
95
|
-
defaultConfig?: Record<string, unknown>;
|
|
96
|
-
configSchema?: Record<string, unknown>;
|
|
97
|
-
}>): string[];
|
|
98
76
|
isPluginDisabled(pluginName: string): boolean;
|
|
99
77
|
setPluginEnabled(pluginName: string, enabled: boolean): void;
|
|
100
78
|
getServicePreferences(): Record<string, string>;
|
|
@@ -111,9 +89,8 @@ export declare class ConfigManager {
|
|
|
111
89
|
* 历史上这是"从磁盘 re-read"的入口;现在交由 provider 决定何时
|
|
112
90
|
* 通过 `watch(onChange)` 把新快照推过来;本方法仅供 watch 回调使用。
|
|
113
91
|
*
|
|
114
|
-
* 注意:本方法(与 watch
|
|
115
|
-
*
|
|
116
|
-
* (App.handleConfigFileChanged 热重载时会重新调用它对齐政策)。
|
|
92
|
+
* 注意:本方法(与 watch 回调)不应用任何字段政策(默认回填/裁剪)——
|
|
93
|
+
* 政策归宿主(@aalis/runtime 的 config-sync),机制与政策分层。
|
|
117
94
|
*/
|
|
118
95
|
reloadFrom(next: AalisConfig): AalisConfig;
|
|
119
96
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,gBAAgB;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AASD,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,gBAAgB,CAA6B;gBAEzC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAMhE,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAIxD,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;IAInG;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB,MAAM,IAAI,QAAQ,CAAC,WAAW,CAAC;IAI/B,GAAG,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrE,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI1E,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI5C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI7C,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAY5D,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI/C,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK3D,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3C;;;OAGG;IACH,IAAI,IAAI,IAAI;IAUZ;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IAK1C;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAUjC,OAAO,IAAI,IAAI;CAKhB"}
|
package/dist/config.js
CHANGED
|
@@ -4,22 +4,6 @@ const DEFAULT_CONFIG = {
|
|
|
4
4
|
plugins: {},
|
|
5
5
|
disabledPlugins: [],
|
|
6
6
|
};
|
|
7
|
-
/** 核心配置的 Schema,与插件 configSchema 走同一套渲染路径 */
|
|
8
|
-
export const CORE_CONFIG_SCHEMA = {
|
|
9
|
-
name: { type: 'string', label: '应用名称', description: '应用显示名称,用于日志和界面展示', default: 'Aalis' },
|
|
10
|
-
logLevel: {
|
|
11
|
-
type: 'select',
|
|
12
|
-
label: '日志等级',
|
|
13
|
-
description: '日志输出等级',
|
|
14
|
-
default: 'info',
|
|
15
|
-
options: [
|
|
16
|
-
{ label: 'debug', value: 'debug' },
|
|
17
|
-
{ label: 'info', value: 'info' },
|
|
18
|
-
{ label: 'warn', value: 'warn' },
|
|
19
|
-
{ label: 'error', value: 'error' },
|
|
20
|
-
],
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
7
|
/**
|
|
24
8
|
* 配置管理器:纯内存的配置中枢。
|
|
25
9
|
*
|
|
@@ -40,15 +24,12 @@ export class ConfigManager {
|
|
|
40
24
|
config;
|
|
41
25
|
provider;
|
|
42
26
|
dataDir;
|
|
43
|
-
/** syncPluginDefaults 的字段裁剪政策(公开只读:scope 继承、宿主可内省) */
|
|
44
|
-
trimUnknownFields;
|
|
45
27
|
unwatchFn = null;
|
|
46
28
|
onChangeCallback = null;
|
|
47
29
|
constructor(initial, options) {
|
|
48
30
|
this.config = mergeDefaultsConfig(initial);
|
|
49
31
|
this.provider = options?.provider;
|
|
50
32
|
this.dataDir = options?.dataDir ?? '.';
|
|
51
|
-
this.trimUnknownFields = options?.trimUnknownFields ?? true;
|
|
52
33
|
}
|
|
53
34
|
get(key) {
|
|
54
35
|
return this.config[key];
|
|
@@ -75,31 +56,6 @@ export class ConfigManager {
|
|
|
75
56
|
removePluginConfig(pluginName) {
|
|
76
57
|
delete this.config.plugins[pluginName];
|
|
77
58
|
}
|
|
78
|
-
/**
|
|
79
|
-
* 将插件 defaultConfig 中缺失的字段合并到配置;同时按 configSchema
|
|
80
|
-
* 移除多余字段。返回发生变更的插件 instanceId 列表(调用方可决定要不要 log)。
|
|
81
|
-
*
|
|
82
|
-
* 副作用:内部对每个发生变化的条目调用 setPluginConfig;若有变化最终调用 save()。
|
|
83
|
-
*/
|
|
84
|
-
syncPluginDefaults(plugins) {
|
|
85
|
-
const changed = [];
|
|
86
|
-
for (const plugin of plugins) {
|
|
87
|
-
const defaults = plugin.defaultConfig ?? {};
|
|
88
|
-
const schema = plugin.configSchema;
|
|
89
|
-
const fileConfig = this.getPluginConfig(plugin.instanceId);
|
|
90
|
-
let merged = deepMergeDefaults(defaults, fileConfig);
|
|
91
|
-
if (this.trimUnknownFields && schema && Object.keys(schema).length > 0) {
|
|
92
|
-
merged = removeExtraFields(merged, schema);
|
|
93
|
-
}
|
|
94
|
-
if (JSON.stringify(merged) !== JSON.stringify(fileConfig)) {
|
|
95
|
-
this.setPluginConfig(plugin.instanceId, merged);
|
|
96
|
-
changed.push(plugin.instanceId);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (changed.length > 0)
|
|
100
|
-
this.save();
|
|
101
|
-
return changed;
|
|
102
|
-
}
|
|
103
59
|
isPluginDisabled(pluginName) {
|
|
104
60
|
return (this.config.disabledPlugins ?? []).includes(pluginName);
|
|
105
61
|
}
|
|
@@ -148,9 +104,8 @@ export class ConfigManager {
|
|
|
148
104
|
* 历史上这是"从磁盘 re-read"的入口;现在交由 provider 决定何时
|
|
149
105
|
* 通过 `watch(onChange)` 把新快照推过来;本方法仅供 watch 回调使用。
|
|
150
106
|
*
|
|
151
|
-
* 注意:本方法(与 watch
|
|
152
|
-
*
|
|
153
|
-
* (App.handleConfigFileChanged 热重载时会重新调用它对齐政策)。
|
|
107
|
+
* 注意:本方法(与 watch 回调)不应用任何字段政策(默认回填/裁剪)——
|
|
108
|
+
* 政策归宿主(@aalis/runtime 的 config-sync),机制与政策分层。
|
|
154
109
|
*/
|
|
155
110
|
reloadFrom(next) {
|
|
156
111
|
this.config = mergeDefaultsConfig(next);
|
|
@@ -191,53 +146,4 @@ function mergeDefaultsConfig(input) {
|
|
|
191
146
|
}
|
|
192
147
|
return merged;
|
|
193
148
|
}
|
|
194
|
-
/**
|
|
195
|
-
* 深度合并默认值:只填充缺失的键,不覆盖已有值。
|
|
196
|
-
* 嵌套对象会递归合并;数组与基础类型按"已存在则保留"处理。
|
|
197
|
-
*/
|
|
198
|
-
function deepMergeDefaults(defaults, current) {
|
|
199
|
-
const result = { ...current };
|
|
200
|
-
for (const [key, defaultValue] of Object.entries(defaults)) {
|
|
201
|
-
if (!(key in result)) {
|
|
202
|
-
result[key] = defaultValue;
|
|
203
|
-
}
|
|
204
|
-
else if (defaultValue !== null &&
|
|
205
|
-
typeof defaultValue === 'object' &&
|
|
206
|
-
!Array.isArray(defaultValue) &&
|
|
207
|
-
result[key] !== null &&
|
|
208
|
-
typeof result[key] === 'object' &&
|
|
209
|
-
!Array.isArray(result[key])) {
|
|
210
|
-
result[key] = deepMergeDefaults(defaultValue, result[key]);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
return result;
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* 根据 configSchema 移除多余字段。
|
|
217
|
-
* SchemaGroup(含 fields)对应嵌套对象,递归清理;
|
|
218
|
-
* SchemaArray(type=array)直接保留;
|
|
219
|
-
* SchemaField 对应普通字段。
|
|
220
|
-
*/
|
|
221
|
-
function removeExtraFields(config, schema) {
|
|
222
|
-
const result = {};
|
|
223
|
-
for (const [key, value] of Object.entries(config)) {
|
|
224
|
-
if (!(key in schema))
|
|
225
|
-
continue;
|
|
226
|
-
const schemaDef = schema[key];
|
|
227
|
-
if (schemaDef.type === 'array') {
|
|
228
|
-
result[key] = value;
|
|
229
|
-
}
|
|
230
|
-
else if (schemaDef.fields &&
|
|
231
|
-
typeof schemaDef.fields === 'object' &&
|
|
232
|
-
value !== null &&
|
|
233
|
-
typeof value === 'object' &&
|
|
234
|
-
!Array.isArray(value)) {
|
|
235
|
-
result[key] = removeExtraFields(value, schemaDef.fields);
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
result[key] = value;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
return result;
|
|
242
|
-
}
|
|
243
149
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|