@aalis/core 0.8.0 → 0.9.1
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 +12 -13
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +16 -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 +50 -23
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +102 -33
- package/dist/context.js.map +1 -1
- package/dist/contributions.d.ts +1 -1
- package/dist/contributions.js +1 -1
- 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/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- 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} +44 -9
- package/dist/services.d.ts.map +1 -0
- package/dist/{service.js → services.js} +35 -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/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 +4 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +7 -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
|
@@ -6,7 +6,7 @@ import { HookRegistry } from './hooks.js';
|
|
|
6
6
|
import { type Logger, LogHub } from './logger.js';
|
|
7
7
|
import { PluginManager, type PluginModule } from './plugin.js';
|
|
8
8
|
import type { ConfigProvider, PluginLoader, RestartStrategy } from './providers.js';
|
|
9
|
-
import { ServiceContainer } from './
|
|
9
|
+
import { ServiceContainer } from './services.js';
|
|
10
10
|
/**
|
|
11
11
|
* App 构造选项
|
|
12
12
|
*
|
|
@@ -44,6 +44,13 @@ export interface AppOptions {
|
|
|
44
44
|
hooks?: HookRegistry;
|
|
45
45
|
/** 注入自定义贡献点注册表 */
|
|
46
46
|
contributions?: ContributionRegistry;
|
|
47
|
+
/**
|
|
48
|
+
* 单个异步清理项(onDispose 返回的 promise)的等待上限(毫秒),默认 5000。
|
|
49
|
+
* 用于插件 unload / bounce / 停机路径的 disposeAsync——网络类关闭(数据库/
|
|
50
|
+
* 浏览器/MCP 连接)卡死时放弃等待该项、继续后续清理并 warn 点名,保证
|
|
51
|
+
* 停机始终能走完。传 0 表示不设限。
|
|
52
|
+
*/
|
|
53
|
+
disposeTimeoutMs?: number;
|
|
47
54
|
/**
|
|
48
55
|
* 注入自定义 LogHub。多 App 沙盒 / 集成测试 / 嵌入多实例场景下
|
|
49
56
|
* 可以传入 `new LogHub()`使每个 App 拥有独立的日志通道,不互相串台。
|
|
@@ -56,14 +63,6 @@ export interface AppOptions {
|
|
|
56
63
|
* 监听的是 LogHub,是否对接由注入方自理。缺省 = DefaultLogger(写入 logHub)。
|
|
57
64
|
*/
|
|
58
65
|
logger?: Logger;
|
|
59
|
-
/**
|
|
60
|
-
* 插件配置同步政策。`trimUnknownFields=false` 时 `syncPluginDefaults`
|
|
61
|
-
* 保留 configSchema 之外的未知字段(默认 `true`:按 schema 裁剪)。
|
|
62
|
-
* 仅在传入配置快照时生效;传入现成 ConfigManager 时政策属于该实例自身。
|
|
63
|
-
*/
|
|
64
|
-
configSync?: {
|
|
65
|
-
trimUnknownFields?: boolean;
|
|
66
|
-
};
|
|
67
66
|
/**
|
|
68
67
|
* 开发模式开关——传递给根 Context,决定 `provide` 是否跑能力探测。
|
|
69
68
|
* 默认 `true`(dev-safe);生产宿主应显式传入 `false` 跳过热路径开销。
|
|
@@ -112,6 +111,7 @@ export declare class App {
|
|
|
112
111
|
readonly contributions: ContributionRegistry;
|
|
113
112
|
private readonly pluginLoader?;
|
|
114
113
|
private readonly restartStrategy?;
|
|
114
|
+
private readonly disposeTimeoutMs;
|
|
115
115
|
/** 已发现插件的描述符索引(按模块名)。用于热重载时拿到 source/metadata。 */
|
|
116
116
|
private readonly discoveredCache;
|
|
117
117
|
constructor(options: AppOptions);
|
|
@@ -140,12 +140,11 @@ export declare class App {
|
|
|
140
140
|
* 保存当前配置(委托给 configProvider;无 provider 时静默忽略)。
|
|
141
141
|
*/
|
|
142
142
|
saveConfig(): void;
|
|
143
|
-
/**
|
|
144
|
-
* 配置外部变更时的处理:重新计算各插件配置并热重载差异。
|
|
145
|
-
*/
|
|
146
|
-
private handleConfigFileChanged;
|
|
147
143
|
/**
|
|
148
144
|
* 启动应用
|
|
145
|
+
*
|
|
146
|
+
* 配置外部变更的热重载编排(diff + bounce)属宿主政策:
|
|
147
|
+
* 宿主自行 `app.ctx.config.watch(cb)` 接管。
|
|
149
148
|
*/
|
|
150
149
|
start(): Promise<void>;
|
|
151
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,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,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
|
@@ -5,7 +5,7 @@ import { EventBus } from './events.js';
|
|
|
5
5
|
import { HookRegistry } from './hooks.js';
|
|
6
6
|
import { DefaultLogger, LogHub } from './logger.js';
|
|
7
7
|
import { PluginManager, parseInstanceId } from './plugin.js';
|
|
8
|
-
import { ServiceContainer } from './
|
|
8
|
+
import { ServiceContainer } from './services.js';
|
|
9
9
|
/**
|
|
10
10
|
* 创建 App 实例的工厂函数。
|
|
11
11
|
*
|
|
@@ -37,6 +37,7 @@ export class App {
|
|
|
37
37
|
contributions;
|
|
38
38
|
pluginLoader;
|
|
39
39
|
restartStrategy;
|
|
40
|
+
disposeTimeoutMs;
|
|
40
41
|
/** 已发现插件的描述符索引(按模块名)。用于热重载时拿到 source/metadata。 */
|
|
41
42
|
discoveredCache = new Map();
|
|
42
43
|
constructor(options) {
|
|
@@ -46,7 +47,6 @@ export class App {
|
|
|
46
47
|
: new ConfigManager(options.config, {
|
|
47
48
|
provider: options.configProvider,
|
|
48
49
|
dataDir: options.dataDir,
|
|
49
|
-
trimUnknownFields: options.configSync?.trimUnknownFields,
|
|
50
50
|
});
|
|
51
51
|
this.events = options.events ?? new EventBus();
|
|
52
52
|
// 'ready' / 'app:started' 是"应用启动完成"里程碑:app.start() 仅 emit
|
|
@@ -71,6 +71,7 @@ export class App {
|
|
|
71
71
|
this.hooks.onStall ??= (hook, contextId, skipped) => this.logger.warn(`钩子 ${hook}: handler(来自 ${contextId}) 未调用 next(),其后 ${skipped} 个 handler 被跳过`);
|
|
72
72
|
this.pluginLoader = options.pluginLoader;
|
|
73
73
|
this.restartStrategy = options.restartStrategy;
|
|
74
|
+
this.disposeTimeoutMs = options.disposeTimeoutMs ?? 5000;
|
|
74
75
|
// 2. 根上下文
|
|
75
76
|
this.ctx = new Context({
|
|
76
77
|
id: 'root',
|
|
@@ -83,7 +84,7 @@ export class App {
|
|
|
83
84
|
devMode: options.devMode ?? true,
|
|
84
85
|
});
|
|
85
86
|
// 3. 插件管理器
|
|
86
|
-
this.plugins = new PluginManager(this.ctx, this.logger);
|
|
87
|
+
this.plugins = new PluginManager(this.ctx, this.logger, this.disposeTimeoutMs);
|
|
87
88
|
// 4. 注册核心服务
|
|
88
89
|
this.ctx.provide('app', this);
|
|
89
90
|
this.ctx.provide('plugins', this.plugins);
|
|
@@ -177,12 +178,7 @@ export class App {
|
|
|
177
178
|
this.logger.error(`加载多实例插件 "${configKey}" 失败: ${message}`);
|
|
178
179
|
}
|
|
179
180
|
}
|
|
180
|
-
//
|
|
181
|
-
const changed = this.ctx.config.syncPluginDefaults(this.plugins.getStatus());
|
|
182
|
-
for (const id of changed)
|
|
183
|
-
this.logger.debug(`同步插件配置: ${id}`);
|
|
184
|
-
if (changed.length > 0)
|
|
185
|
-
this.logger.info('已将插件配置同步到配置文件');
|
|
181
|
+
// 配置同步政策(defaultConfig 回填 / schema 裁剪)属宿主层,由宿主在本方法之后自行执行。
|
|
186
182
|
}
|
|
187
183
|
/**
|
|
188
184
|
* 重新扫描插件源,加载新发现的插件(已注册的跳过)。
|
|
@@ -227,48 +223,17 @@ export class App {
|
|
|
227
223
|
this.ctx.config.save();
|
|
228
224
|
this.logger.info('配置已保存');
|
|
229
225
|
}
|
|
230
|
-
/**
|
|
231
|
-
* 配置外部变更时的处理:重新计算各插件配置并热重载差异。
|
|
232
|
-
*/
|
|
233
|
-
async handleConfigFileChanged() {
|
|
234
|
-
this.logger.info('检测到配置变更,正在热重载...');
|
|
235
|
-
try {
|
|
236
|
-
// 先按与启动路径相同的政策同步一遍(补 defaultConfig 缺失字段 +
|
|
237
|
-
// 按 trimUnknownFields 裁剪 schema 外字段)——否则热重载读入的
|
|
238
|
-
// 原始快照会绕过政策,内存态与启动态在字段清理上不一致。
|
|
239
|
-
const synced = this.ctx.config.syncPluginDefaults(this.plugins.getStatus());
|
|
240
|
-
for (const id of synced)
|
|
241
|
-
this.logger.debug(`热重载配置同步: ${id}`);
|
|
242
|
-
let changed = false;
|
|
243
|
-
for (const p of this.plugins.getStatus()) {
|
|
244
|
-
const defaults = p.defaultConfig ?? {};
|
|
245
|
-
const fileConfig = this.ctx.config.getPluginConfig(p.instanceId);
|
|
246
|
-
const newConfig = { ...defaults, ...fileConfig };
|
|
247
|
-
if (JSON.stringify(newConfig) !== JSON.stringify(p.config)) {
|
|
248
|
-
this.logger.info(`插件 ${p.instanceId} 配置已变更,正在重新加载...`);
|
|
249
|
-
await this.plugins.updatePluginConfig(p.instanceId, newConfig);
|
|
250
|
-
changed = true;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
if (changed) {
|
|
254
|
-
await this.ctx.emit('plugins:changed');
|
|
255
|
-
}
|
|
256
|
-
this.logger.info('配置热重载完成');
|
|
257
|
-
}
|
|
258
|
-
catch (e) {
|
|
259
|
-
this.logger.error('配置热重载失败:', e);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
226
|
/**
|
|
263
227
|
* 启动应用
|
|
228
|
+
*
|
|
229
|
+
* 配置外部变更的热重载编排(diff + bounce)属宿主政策:
|
|
230
|
+
* 宿主自行 `app.ctx.config.watch(cb)` 接管。
|
|
264
231
|
*/
|
|
265
232
|
async start() {
|
|
266
233
|
this.logger.info('正在启动...');
|
|
267
234
|
await this.ctx.emit('app:starting');
|
|
268
235
|
// 注:消息路由由 @aalis/plugin-gateway 承担。
|
|
269
236
|
await this.ctx.emit('ready');
|
|
270
|
-
// 监听配置外部变更(provider 不支持 watch 时为 no-op)
|
|
271
|
-
this.ctx.config.watch(() => this.handleConfigFileChanged());
|
|
272
237
|
this.logger.info('启动完成');
|
|
273
238
|
await this.ctx.emit('app:started');
|
|
274
239
|
}
|
|
@@ -303,14 +268,20 @@ export class App {
|
|
|
303
268
|
this.logger.info('正在停止...');
|
|
304
269
|
this.ctx.config.unwatch();
|
|
305
270
|
await this.ctx.emit('app:stopping');
|
|
306
|
-
//
|
|
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 插件——消费者先关,提供者后关——这样下游
|
|
307
277
|
// 插件的 ctx.onDispose 还能安全访问其依赖的服务。stopAll 会置位 shuttingDown,
|
|
308
278
|
// 屏蔽反应式 service:unregistered 级联,避免无意义 bounce 噪声。
|
|
309
279
|
await this.plugins.stopAll();
|
|
310
280
|
// 清掉全部 sticky 缓存('ready' + 'app:started'),防止后续 restart
|
|
311
281
|
// 复用过时的"已启动"标记
|
|
312
282
|
this.events.clearSticky();
|
|
313
|
-
|
|
283
|
+
// 等待根 ctx 的异步清理(含各插件 onDispose 的落盘)真正完成再宣告停止
|
|
284
|
+
await this.ctx.disposeAsync(this.disposeTimeoutMs);
|
|
314
285
|
this.logger.info('已停止');
|
|
315
286
|
}
|
|
316
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":"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"}
|
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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"}
|
package/dist/context.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { ContributionHandle, ContributionRegistry, ContributionSpec } from
|
|
|
3
3
|
import type { EventBus } from './events.js';
|
|
4
4
|
import type { HookRegistry } from './hooks.js';
|
|
5
5
|
import type { Logger } from './logger.js';
|
|
6
|
-
import type { ServiceContainer } from './
|
|
6
|
+
import type { ServiceContainer } from './services.js';
|
|
7
7
|
import type { AalisEvents, ContributionPointMap, HookContextMap, MiddlewareFn, ServiceTypeMap } from './types/index.js';
|
|
8
8
|
type EventHandler<Args extends unknown[]> = (...args: Args) => void | Promise<void>;
|
|
9
9
|
/**
|
|
@@ -44,7 +44,7 @@ export declare class Context {
|
|
|
44
44
|
* 用于同键重注册时先摘旧登记:注册表本身是替换语义,但门面每次 contribute
|
|
45
45
|
* 都会往 _disposables 压一个闭包——不摘旧的,反复刷新贡献(文档明示的合法
|
|
46
46
|
* 用法)会让 dispose 链无界增长且旧 build 闭包无法 GC。
|
|
47
|
-
*
|
|
47
|
+
* 条目数有界于**当前存活**的贡献数:退订时由 off 的自移除逻辑摘掉本条。
|
|
48
48
|
*/
|
|
49
49
|
private readonly _contributionDisposers;
|
|
50
50
|
/** 活跃沙盒子上下文 id(useModule)——用于同名重复挂载时唯一化 childId。 */
|
|
@@ -53,6 +53,13 @@ export declare class Context {
|
|
|
53
53
|
private _children;
|
|
54
54
|
private _parent?;
|
|
55
55
|
private _disposed;
|
|
56
|
+
/**
|
|
57
|
+
* 在飞的拆卸 promise。`_disposed` 在清理**开始前**置位,仅凭它早退会让后来者
|
|
58
|
+
* 拿到"已完成"的假象(并发 disposeAsync、父级联撞上半拆的子 ctx、unload 撞
|
|
59
|
+
* bounce、并发 app.stop 都会 0ms 返回而清理其实没落)。记住它之后,后来者
|
|
60
|
+
* join 而非早退。
|
|
61
|
+
*/
|
|
62
|
+
private _inflightTeardown?;
|
|
56
63
|
constructor(options: {
|
|
57
64
|
id: string;
|
|
58
65
|
events: EventBus;
|
|
@@ -71,8 +78,8 @@ export declare class Context {
|
|
|
71
78
|
* 完整性)使用。
|
|
72
79
|
*
|
|
73
80
|
* **插件请勿直接使用**:
|
|
74
|
-
* - 枚举某服务的所有 entry(含 contextId /
|
|
75
|
-
* → 用公开 API `ctx.
|
|
81
|
+
* - 枚举某服务的所有 entry(含 contextId / priority / label):
|
|
82
|
+
* → 用公开 API `ctx.getAllServices(name)`
|
|
76
83
|
* - 获取服务实例:用 `ctx.getService()` / `ctx.getAllServices()`
|
|
77
84
|
* - 注册服务:用 `ctx.provide()`(会自动登记到 _disposables 链)
|
|
78
85
|
*/
|
|
@@ -82,7 +89,6 @@ export declare class Context {
|
|
|
82
89
|
*/
|
|
83
90
|
fork(id: string): Context;
|
|
84
91
|
on<E extends string & keyof AalisEvents>(event: E, handler: EventHandler<AalisEvents[E]>): () => void;
|
|
85
|
-
once<E extends string & keyof AalisEvents>(event: E, handler: EventHandler<AalisEvents[E]>): () => void;
|
|
86
92
|
/**
|
|
87
93
|
* 把一个底层退订原语登记到 disposable 链,并返回**自移除**的退订函数:
|
|
88
94
|
* 调用方手动退订时,闭包不再滞留 _disposables(否则它持有 handler 引用直到
|
|
@@ -118,16 +124,14 @@ export declare class Context {
|
|
|
118
124
|
*/
|
|
119
125
|
getService<TName extends keyof ServiceTypeMap>(name: TName): ServiceTypeMap[TName] | undefined;
|
|
120
126
|
getService<T = unknown>(name: string): T | undefined;
|
|
121
|
-
/**
|
|
122
|
-
* 检查服务是否可用
|
|
123
|
-
*/
|
|
124
|
-
hasService(name: string): boolean;
|
|
125
127
|
/**
|
|
126
128
|
* 列出所有已注册的服务名
|
|
127
129
|
*/
|
|
128
130
|
getServiceNames(): string[];
|
|
129
131
|
/**
|
|
130
|
-
*
|
|
132
|
+
* 获取某个服务的所有实例(带提供者信息与优先级),按「偏好 > 优先级 > 注册顺序」排序。
|
|
133
|
+
*
|
|
134
|
+
* 业务消费(遍历所有 provider)与管控展示(WebUI / CLI 枚举视图)共用此一个读口。
|
|
131
135
|
*
|
|
132
136
|
* @example
|
|
133
137
|
* const allLLMs = ctx.getAllServices('llm');
|
|
@@ -135,11 +139,13 @@ export declare class Context {
|
|
|
135
139
|
getAllServices<TName extends keyof ServiceTypeMap>(name: TName): Array<{
|
|
136
140
|
instance: ServiceTypeMap[TName];
|
|
137
141
|
contextId: string;
|
|
142
|
+
priority: number;
|
|
138
143
|
label?: string;
|
|
139
144
|
}>;
|
|
140
145
|
getAllServices<T = unknown>(name: string): Array<{
|
|
141
146
|
instance: T;
|
|
142
147
|
contextId: string;
|
|
148
|
+
priority: number;
|
|
143
149
|
label?: string;
|
|
144
150
|
}>;
|
|
145
151
|
/**
|
|
@@ -160,18 +166,6 @@ export declare class Context {
|
|
|
160
166
|
* 读取某服务当前的偏好 contextId(无偏好返回 undefined)
|
|
161
167
|
*/
|
|
162
168
|
getPreferredService(name: string): string | undefined;
|
|
163
|
-
/**
|
|
164
|
-
* 获取某服务的全部 entry(含 priority),按「偏好 > 优先级 > 注册顺序」排序。
|
|
165
|
-
*
|
|
166
|
-
* 主要给管控类消费者(如 WebUI / CLI status 视图)枚举展示用。
|
|
167
|
-
* 业务消费者应优先使用 `getService` / `getAllServices`。
|
|
168
|
-
*/
|
|
169
|
-
getServiceEntries(name: string): ReadonlyArray<{
|
|
170
|
-
instance: unknown;
|
|
171
|
-
contextId: string;
|
|
172
|
-
priority: number;
|
|
173
|
-
label?: string;
|
|
174
|
-
}>;
|
|
175
169
|
/**
|
|
176
170
|
* 持续订阅一个服务:每当 provider 上线就调一次 `cb(svc)`,下线则自动执行
|
|
177
171
|
* 上一次 cb 返回的 cleanup。
|
|
@@ -316,9 +310,42 @@ export declare class Context {
|
|
|
316
310
|
/** @internal 当前 disposable 链长度(诊断 / 测试用:检测 provide/whenService 的闭包是否如期自移除)。 */
|
|
317
311
|
get disposableCount(): number;
|
|
318
312
|
/**
|
|
319
|
-
*
|
|
313
|
+
* @internal 当前贡献登记表条目数(诊断 / 测试用)。
|
|
314
|
+
*
|
|
315
|
+
* 它与 {@link disposableCount} 是**两条独立的账**:贡献的退订闭包由
|
|
316
|
+
* trackDisposable 自摘出 dispose 链,而登记表条目由 contribute 返回的包装
|
|
317
|
+
* 另行摘除。只看 dispose 链长度看不见登记表泄漏,故单开这个口子。
|
|
318
|
+
*/
|
|
319
|
+
get contributionDisposerCount(): number;
|
|
320
|
+
/**
|
|
321
|
+
* 销毁此上下文,清理所有副作用(同步;异步清理不等待)。
|
|
322
|
+
*
|
|
323
|
+
* 需要等待落盘类异步清理完成时用 {@link disposeAsync}——编排层
|
|
324
|
+
* (PluginManager 的 unload / bounce / 停机路径与 App.stop)走的是它。
|
|
320
325
|
*/
|
|
321
326
|
dispose(): void;
|
|
327
|
+
/**
|
|
328
|
+
* 可等待的销毁:语义与 {@link dispose} 相同,但逆序**串行等待**每个异步
|
|
329
|
+
* 清理(`onDispose` 返回的 promise)完成后才返回——bounce / unload / 停机
|
|
330
|
+
* 路径上落盘类清理从此真正落地,而非只是"开始执行"。
|
|
331
|
+
*
|
|
332
|
+
* 幂等且**可 join**:已有拆卸在飞时等待它完成再返回,而不是看到 `_disposed`
|
|
333
|
+
* 就早退(`_disposed` 在清理开始前置位,早退会让调用方拿到"已完成"的假象——
|
|
334
|
+
* 父级联撞上半拆的子 ctx、并发 stop、unload 撞 bounce 都会走到这条路)。
|
|
335
|
+
*
|
|
336
|
+
* ⚠. **`onDispose` 回调里不得 await 任何最终落到本 ctx 或其祖先 ctx 拆卸上的
|
|
337
|
+
* 调用**——在飞的拆卸正等着那个回调返回,await 它即自等自。除直接调用本方法
|
|
338
|
+
* 外,还包括 `plugins.unload/disablePlugin/bouncePlugin`(它们内部 await
|
|
339
|
+
* `entry.context.disposeAsync`)、`app.stop()`、`plugins.idle()`。清理回调
|
|
340
|
+
* 只做自己的收尾,拆卸由编排层驱动。(与 `PluginManagerService.idle()` 同类约束。)
|
|
341
|
+
*
|
|
342
|
+
* @param timeoutMs 单个异步清理项的等待上限;超时放弃该项、继续后续清理
|
|
343
|
+
* 并 warn 点名(防网络类关闭卡死整个停机)。**join 已有在飞拆卸时同样
|
|
344
|
+
* 以本值为上限**——在飞方可能是用更松(甚至不设限)的 timeout 启动的,
|
|
345
|
+
* 无护栏地 join 会让调用方(如 `App.stop`)的停机上限失效。缺省不设限。
|
|
346
|
+
*/
|
|
347
|
+
disposeAsync(timeoutMs?: number): Promise<void>;
|
|
348
|
+
private _teardown;
|
|
322
349
|
}
|
|
323
350
|
export {};
|
|
324
351
|
//# sourceMappingURL=context.d.ts.map
|