@aalis/plugin-tools 0.9.0 → 0.11.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/tools.js CHANGED
@@ -1,4 +1,9 @@
1
1
  import { capabilityMinLevel, DEFAULT_AUTHORITY, resolveCapabilityPolicy } from '@aalis/api-authority';
2
+ import { takenBackgroundParams, toolFailed, } from '@aalis/api-tools';
3
+ import { toSource } from '@aalis/schema-i18n';
4
+ import { DEFAULT_YIELD_SECONDS, errorIn, exitCodeOf, inTurn } from './background.js';
5
+ import { backgroundTaskTools } from './background-tools.js';
6
+ import { t } from './texts.js';
2
7
  /**
3
8
  * 工具注册表 —— 管理 AI 可调用工具的注册、查询、执行
4
9
  *
@@ -6,41 +11,88 @@ import { capabilityMinLevel, DEFAULT_AUTHORITY, resolveCapabilityPolicy } from '
6
11
  * 消费方声明 @aalis/api-tools 的 `tools` 描述符,经绑定接口注册与查询。
7
12
  *
8
13
  * 与 plugin-commands/CommandRegistry 同属"中心 Registry 模式":
9
- * - 单一 Map<name, Registered> 存储,name 全局唯一(重名警告并覆盖)
14
+ * - 一张登记表,name 全局唯一(重名警告并覆盖),另加四个自带的后台任务工具:它们的名字保留,同名登记被拒并告警
10
15
  * - register() 返回退订,退订按条目身份,由绑定门面在激活撤回时调用
11
- * - 通过 setExecutionGuard() 注入统一权限/安全检查钩子
16
+ * - 通过 setExecutionGuard() 注入统一权限/安全检查钩子;经审批放行的调用按批的人执行,取用判定(approveFor)也经守卫
17
+ *
18
+ * 声明了 background 的工具由执行器转后台(见 background.ts);四个后台任务工具只在可见的工具里有可转后台的时才可见。
12
19
  */
13
20
  export class ToolRegistry {
21
+ sessionGroups;
14
22
  tools = new Map();
23
+ taskTools;
15
24
  _groups = new Map();
16
25
  logger;
26
+ tasks;
17
27
  _guard;
18
- constructor(logger) {
28
+ constructor(logger, tasks,
29
+ /** 这个会话启用的工具分组:插件按会话读「工具分组」 */
30
+ sessionGroups) {
31
+ this.sessionGroups = sessionGroups;
19
32
  this.logger = logger.child('tools');
33
+ this.tasks = tasks;
34
+ this.taskTools = new Map(backgroundTaskTools(this.tasks).map(tool => [
35
+ tool.definition.function.name,
36
+ { tool: { ...tool, pluginName: '@aalis/plugin-tools' }, definition: tool.definition },
37
+ ]));
20
38
  }
21
39
  // ---- 注册 / 注销 ----
22
40
  register(tool, contextId) {
23
41
  const name = tool.definition.function.name;
42
+ if (this.taskTools.has(name)) {
43
+ this.logger.warn(`工具名 "${name}" 留给后台任务工具,${contextId} 的这个登记已忽略`);
44
+ return () => { };
45
+ }
24
46
  if (this.tools.has(name)) {
25
47
  this.logger.warn(`工具 "${name}" 已存在,将被覆盖 (来自 ${contextId})`);
26
48
  }
27
- const entry = { ...tool, pluginName: contextId };
49
+ const entry = { tool: { ...tool, pluginName: contextId }, ...this.declare(tool) };
28
50
  this.tools.set(name, entry);
29
51
  this.logger.debug(`注册工具: ${name} (来自 ${contextId})`);
30
- // 退订按条目引用比对:同名重注册后,旧退订闭包不得误删新登记(按 name + contextId 比对会)
52
+ // 退订按条目引用比对:同名重注册后,旧退订闭包不得误删新登记(按 name + contextId 比对会)。
53
+ // 这个登记在跑的调用随撤回一并中止(所属插件停用),不论它是否已被同名登记顶掉
31
54
  return () => {
55
+ this.tasks.withdraw(entry, name);
32
56
  if (this.tools.get(name) !== entry)
33
57
  return;
34
58
  this.tools.delete(name);
35
59
  this.logger.debug(`注销工具: ${name}`);
36
60
  };
37
61
  }
62
+ /** 发给模型的声明与让出时限:声明了 background、参数表里没有同名项的补上两项参数;有同名项的当作没声明 */
63
+ declare(tool) {
64
+ const fn = tool.definition.function;
65
+ if (!tool.background)
66
+ return { definition: tool.definition };
67
+ const taken = takenBackgroundParams(fn.parameters);
68
+ if (taken.length > 0) {
69
+ this.logger.warn(`工具 "${fn.name}" 的参数表里已有 ${taken.join('、')},当作不可转后台`);
70
+ return { definition: tool.definition };
71
+ }
72
+ const yieldSeconds = tool.background.yieldSeconds ?? DEFAULT_YIELD_SECONDS;
73
+ const max = this.tasks.limits.maxWaitSeconds;
74
+ const properties = {
75
+ ...fn.parameters.properties,
76
+ runInBackground: {
77
+ type: 'boolean',
78
+ description: '立即转到后台:先回给你任务 id,不等结果,结束时会通知你。明知要很久的(构建、下载、长驻进程)用它',
79
+ },
80
+ waitSeconds: {
81
+ type: 'number',
82
+ description: `前台最多等多少秒,到时还没结束就转到后台(默认 ${Math.min(yieldSeconds, max)},最多 ${max})`,
83
+ },
84
+ };
85
+ return {
86
+ yieldSeconds,
87
+ definition: { ...tool.definition, function: { ...fn, parameters: { ...fn.parameters, properties } } },
88
+ };
89
+ }
38
90
  // ---- 查询 ----
39
91
  getDefinitions(filter) {
40
- return this.filtered(filter).map(t => t.definition);
92
+ return this.filtered(filter).map(e => e.definition);
41
93
  }
42
94
  getSummaries(filter) {
43
- return this.filtered(filter).map(t => ({
95
+ return this.filtered(filter).map(({ tool: t }) => ({
44
96
  name: t.definition.function.name,
45
97
  description: t.definition.function.description,
46
98
  groups: t.groups,
@@ -62,12 +114,22 @@ export class ToolRegistry {
62
114
  * 分组过滤:无分组的通用工具恒可见;带分组的只在命中 `groups` 时可见,`'*'` 表示全部分组。
63
115
  * 未指定(或为空)即只给通用工具——多人平台上 public 工具的可达性靠这道闸
64
116
  * (docs/concepts/security-model.md);owner 专用平台由平台档显式给 `['*']`。
117
+ * 可见的工具里有可转后台的,才连同四个后台任务工具
65
118
  */
66
119
  filtered(filter) {
67
- return [...this.tools.values()].filter(t => this.groupAllowed(t, filter?.groups ?? []));
120
+ const visible = [...this.tools.values()].filter(e => this.groupAllowed(e.tool, filter?.groups ?? []));
121
+ return visible.some(e => e.yieldSeconds !== undefined) ? [...visible, ...this.taskTools.values()] : visible;
122
+ }
123
+ /** 后台任务工具:执行面与列举面同一判据;调用方没给 enabledGroups 时不过分组闸,有可转后台的工具即可用 */
124
+ taskTool(name, groups) {
125
+ const entry = this.taskTools.get(name);
126
+ if (!entry)
127
+ return undefined;
128
+ const available = [...this.tools.values()].some(e => e.yieldSeconds !== undefined && (!groups || this.groupAllowed(e.tool, groups)));
129
+ return available ? entry : undefined;
68
130
  }
69
131
  getAll() {
70
- return [...this.tools.values()].map(t => {
132
+ return this.filtered({ groups: ['*'] }).map(({ tool: t }) => {
71
133
  const { visibility, confirm } = resolveCapabilityPolicy(t);
72
134
  return {
73
135
  name: t.definition.function.name,
@@ -75,8 +137,9 @@ export class ToolRegistry {
75
137
  pluginName: t.pluginName,
76
138
  visibility,
77
139
  confirm,
78
- risk: t.risk, // 原始风险透传:让 authority 区分 sensitive(朋友) / dangerous(信任),否则二者都折成 restricted=信任
140
+ risk: t.risk, // 原始风险透传:让 authority 区分 sensitive(等级 1)与 dangerous(等级 2),否则二者都折成 restricted(等级 2)
79
141
  groups: t.groups,
142
+ display: t.display,
80
143
  };
81
144
  });
82
145
  }
@@ -103,7 +166,7 @@ export class ToolRegistry {
103
166
  const q = query.toLowerCase();
104
167
  const qTokens = new Set(q.split(/[_\s-]+/).filter(Boolean));
105
168
  const scored = [];
106
- for (const [name, tool] of this.tools) {
169
+ for (const [name, { tool }] of this.tools) {
107
170
  // 不把本会话未暴露分组的工具名建议回模型:那等于替它把闸外的名字念一遍
108
171
  if (enabledGroups && !this.groupAllowed(tool, enabledGroups))
109
172
  continue;
@@ -123,14 +186,15 @@ export class ToolRegistry {
123
186
  .map(s => s.name);
124
187
  }
125
188
  async execute(toolName, args, callCtx) {
126
- const tool = this.tools.get(toolName);
127
- if (!tool) {
189
+ const entry = this.tools.get(toolName) ?? this.taskTool(toolName, callCtx.enabledGroups);
190
+ if (!entry) {
128
191
  // LLM 常臆造工具名(如把 send_attachment 叫成 send_image)。给出近似名建议,
129
192
  // 让模型本轮直接纠正调用,而不是再花一轮 search_tools 找正确名字。
130
193
  const suggestions = this.suggestToolNames(toolName, callCtx.enabledGroups);
131
194
  const hint = suggestions.length > 0 ? `,你是否想用:${suggestions.join(' / ')}` : '';
132
- return { content: JSON.stringify({ error: `工具 "${toolName}" 未找到${hint}` }) };
195
+ return failure(`工具 "${toolName}" 未找到${hint}`);
133
196
  }
197
+ const { tool } = entry;
134
198
  // 分组闸:此前只在列举面(filtered)生效,execute 按名直调完全不校验。被提示注入的
135
199
  // 模型可以叫出一个本回合没下发给它的名字(安全模型把 LLM 输出列为不可信),于是
136
200
  // onebot 群会话里未暴露分组的工具照样被执行——而「不在 enabledGroups 里故不可达」
@@ -139,61 +203,177 @@ export class ToolRegistry {
139
203
  // 各自另有暴露面控制,行为不变。
140
204
  if (callCtx.enabledGroups && !this.groupAllowed(tool, callCtx.enabledGroups)) {
141
205
  // 与「未找到」同形:不向闸外的调用者确认该工具存在
142
- return { content: JSON.stringify({ error: `工具 "${toolName}" 未找到` }) };
206
+ return failure(`工具 "${toolName}" 未找到`);
207
+ }
208
+ // 可转后台的工具:执行器的两项参数先取出,再做参数校验、过守卫、交给工具(审批事实里没有它们)
209
+ let toolArgs = args;
210
+ let plan;
211
+ if (entry.yieldSeconds !== undefined) {
212
+ const taken = takeFlags(args);
213
+ if (typeof taken === 'string')
214
+ return failure(taken);
215
+ if (taken.runInBackground && !inTurn(callCtx)) {
216
+ return failure('不在对话回合里的调用不能转后台:没有可以通知的对话');
217
+ }
218
+ toolArgs = taken.args;
219
+ plan = {
220
+ waitSeconds: Math.min(taken.waitSeconds ?? entry.yieldSeconds, this.tasks.limits.maxWaitSeconds),
221
+ immediate: taken.runInBackground,
222
+ };
143
223
  }
144
224
  // 参数 schema 校验:检测缺失必填项 / 多余未知键(LLM 写错参数名时给出明确提示)
145
- const schemaError = validateToolArgs(toolName, tool.definition, args);
225
+ const schemaError = validateToolArgs(toolName, tool.definition, toolArgs);
146
226
  if (schemaError) {
147
227
  this.logger.warn(`工具 ${toolName} 参数校验失败: ${schemaError}`);
148
- return { content: JSON.stringify({ error: schemaError }) };
228
+ return failure(schemaError);
149
229
  }
150
- const { visibility, confirm } = resolveCapabilityPolicy(tool);
151
- if (this._guard) {
152
- const denied = await this._guard({
153
- name: toolName,
154
- type: 'tool',
155
- visibility,
156
- confirm,
157
- risk: tool.risk,
158
- sessionId: callCtx.sessionId,
159
- platform: callCtx.platform ?? 'unknown',
160
- userId: callCtx.userId,
161
- actor: callCtx.actor,
230
+ // 同一会话里在跑的可转后台调用满了时,在过守卫之前就拒绝(不为执行不了的调用发审批)
231
+ const call = plan && this.tasks.admit(callCtx, entry, plan);
232
+ if (typeof call === 'string')
233
+ return { content: call };
234
+ // 占到的位置没交给 run 的(守卫拒绝或抛错、已中止)一律让出
235
+ let handedOver = false;
236
+ try {
237
+ const verdict = await this.guard(tool, toolArgs, callCtx);
238
+ if (!verdict.ok)
239
+ return failure(toSource(verdict.reason));
240
+ // 等审批期间这次调用可能已被中止(工具撤回登记、会话删除、执行器停用)
241
+ if (call?.controller.signal.aborted)
242
+ return failure('调用已中止,未执行');
243
+ if (resolveCapabilityPolicy(tool).visibility === 'restricted') {
244
+ this.logger.info(`受限工具执行: ${toolName} session=${callCtx.sessionId} platform=${callCtx.platform ?? 'unknown'} args=${JSON.stringify(toolArgs)}`);
245
+ }
246
+ // 批过的调用按批的人执行:交给处理函数与转后台登记的都是参与者换成他的这一份,它派生的(子任务、结束通知、定时任务)随之
247
+ const request = verdict.by ? { ...callCtx, participants: [verdict.by] } : callCtx;
248
+ if (!call) {
249
+ return this.invoke(tool, toolArgs, {
250
+ ...request,
251
+ output: this.tasks.outputFor(request),
252
+ approveFor: check => this.approveFor(tool, toolArgs, request, check, true),
253
+ });
254
+ }
255
+ handedOver = true;
256
+ return this.tasks.run(call, {
257
+ tool: toolName,
162
258
  args,
163
- signal: callCtx.signal,
259
+ ctx: request,
260
+ display: tool.display,
261
+ approve: (ctx, check, asks) => this.approveFor(tool, toolArgs, ctx, check, asks),
262
+ invoke: ctx => this.invoke(tool, toolArgs, ctx),
164
263
  });
165
- if (denied) {
166
- this.logger.warn(`工具 ${toolName} 被执行守卫拦截: ${denied}`);
167
- return { content: JSON.stringify({ error: denied }) };
264
+ }
265
+ finally {
266
+ if (call && !handedOver)
267
+ this.tasks.release(call);
268
+ }
269
+ }
270
+ /** 这次调用交给执行守卫的上下文 */
271
+ guardContext(tool, args, callCtx) {
272
+ const { visibility, confirm } = resolveCapabilityPolicy(tool);
273
+ return {
274
+ name: tool.definition.function.name,
275
+ type: 'tool',
276
+ visibility,
277
+ confirm,
278
+ risk: tool.risk,
279
+ sessionId: callCtx.sessionId,
280
+ platform: callCtx.platform ?? 'unknown',
281
+ userId: callCtx.userId,
282
+ participants: callCtx.participants,
283
+ toolGroups: tool.groups,
284
+ args,
285
+ turnId: callCtx.turnId,
286
+ callId: callCtx.callId,
287
+ inbound: callCtx.inbound,
288
+ signal: callCtx.signal,
289
+ };
290
+ }
291
+ /**
292
+ * 过执行守卫;拒绝时回原因(交给模型,取原文),经审批放行的带回批的人。守卫可能等过一轮审批:期间回合若已被停下
293
+ * (停止键、禁言、停机等),不替停下的回合执行
294
+ */
295
+ async guard(tool, args, callCtx) {
296
+ const toolName = tool.definition.function.name;
297
+ const aborted = { ok: false, reason: '回合已中止,未执行' };
298
+ if (!this._guard) {
299
+ const { visibility, confirm } = resolveCapabilityPolicy(tool);
300
+ if (confirm || capabilityMinLevel({ risk: tool.risk, visibility }) > DEFAULT_AUTHORITY) {
301
+ // 没有守卫(未装权限插件)时 fail-closed:等同人人都是默认等级、没人能确认。
302
+ // 需要更高等级或需要确认的工具一律拒绝,默认等级可用且无需确认的照常执行。
303
+ const reason = `工具 "${toolName}" 需要权限校验或确认,但未安装权限插件 @aalis/plugin-authority,已拒绝执行`;
304
+ this.logger.warn(reason);
305
+ return { ok: false, reason };
168
306
  }
307
+ return callCtx.signal?.aborted ? aborted : { ok: true };
308
+ }
309
+ const verdict = await this._guard(this.guardContext(tool, args, callCtx));
310
+ if (!verdict.ok) {
311
+ this.logger.warn(`工具 ${toolName} 被执行守卫拦截: ${toSource(verdict.reason)}`);
312
+ return verdict;
169
313
  }
170
- else if (confirm || capabilityMinLevel({ risk: tool.risk, visibility }) > DEFAULT_AUTHORITY) {
171
- // 没有守卫(未装权限插件)时 fail-closed:等同人人都是默认等级、没有确认通道。
172
- // 需要更高等级或需要确认的工具一律拒绝,默认等级可用且无需确认的照常执行。
173
- const reason = `工具 "${toolName}" 需要权限校验或确认,但未安装权限插件 @aalis/plugin-authority,已拒绝执行`;
174
- this.logger.warn(reason);
175
- return { content: JSON.stringify({ error: reason }) };
314
+ return callCtx.signal?.aborted ? aborted : verdict;
315
+ }
316
+ /**
317
+ * 处理函数里的取用判定(ToolCallContext.approveFor):按这次调用的参与者经执行守卫三分,可能等一道参与者审批,审批随 callCtx
318
+ * 的中止信号撤销。asks 为假(调用已转到后台)、守卫不在或调用不在回合里时只按参与者都过判、不出审批,过不了的回第一位的原因;
319
+ * 参与者为空的不判、直接拒绝,与守卫判空参与者同一结论
320
+ */
321
+ async approveFor(tool, args, callCtx, check, asks) {
322
+ if (!asks || !this._guard || !inTurn(callCtx)) {
323
+ const { participants } = callCtx;
324
+ if (participants.length === 0)
325
+ return { ok: false, reason: t('nobodyCan') };
326
+ return participants.map(check).find(verdict => !verdict.ok) ?? { ok: true };
176
327
  }
177
- // 守卫可能等过一轮人工确认:期间回合若已中止(latest-wins / 手动 abort),不替死回合执行
178
- if (callCtx.signal?.aborted)
179
- return { content: JSON.stringify({ error: '回合已中止,未执行' }) };
328
+ return this._guard({ ...this.guardContext(tool, args, callCtx), check });
329
+ }
330
+ /**
331
+ * 跑工具:字符串结果归一为统一形态,带图结果只保留非空 images(空数组等于没图);抛错转成 { error },不冒泡。结局按 toolFailed
332
+ * 记日志(命令类的退出码按展示种类取),与后台任务的结局、会话服务的工具卡同一个判据:返回带 error 的结果与抛错一样记失败。
333
+ * 调用的信号已中止的(停掉的后台命令、回合中止、会话删除)记中止,与后台任务把停掉的落成 stopped 同一口径:被杀的命令退出码
334
+ * 不为 0,不是执行失败
335
+ */
336
+ async invoke(tool, args, ctx) {
337
+ const toolName = tool.definition.function.name;
338
+ let result;
180
339
  try {
181
- if (visibility === 'restricted') {
182
- this.logger.info(`受限工具执行: ${toolName} session=${callCtx.sessionId} platform=${callCtx.platform ?? 'unknown'} args=${JSON.stringify(args)}`);
183
- }
184
- const result = await tool.handler(args, callCtx);
185
- this.logger.debug(`工具 ${toolName} 执行成功`);
186
- // 字符串结果归一为统一形态;带图结果只保留非空 images(空数组等于没图)
187
- if (typeof result === 'string')
188
- return { content: result };
189
- return result.images && result.images.length > 0 ? result : { content: result.content };
340
+ const returned = await tool.handler(args, ctx);
341
+ if (typeof returned === 'string')
342
+ result = { content: returned };
343
+ else
344
+ result = returned.images && returned.images.length > 0 ? returned : { content: returned.content };
190
345
  }
191
346
  catch (err) {
192
- const message = err instanceof Error ? err.message : String(err);
193
- this.logger.error(`工具 ${toolName} 执行失败: ${message}`);
194
- return { content: JSON.stringify({ error: message }) };
347
+ result = failure(err instanceof Error ? err.message : String(err));
348
+ }
349
+ const exitCode = exitCodeOf(tool.display, result.content);
350
+ if (ctx.signal?.aborted) {
351
+ this.logger.debug(`工具 ${toolName} 执行中止`);
352
+ }
353
+ else if (toolFailed(result.content, exitCode)) {
354
+ this.logger.error(`工具 ${toolName} 执行失败: ${errorIn(result.content) ?? `退出码 ${exitCode}`}`);
195
355
  }
356
+ else {
357
+ this.logger.debug(`工具 ${toolName} 执行成功`);
358
+ }
359
+ return result;
360
+ }
361
+ }
362
+ const failure = (message) => ({ content: JSON.stringify({ error: message }) });
363
+ /** 取出执行器的两项参数并核对类型:回剩下交给工具的参数,类型不对时回错误 */
364
+ function takeFlags(args) {
365
+ const { runInBackground, waitSeconds, ...rest } = args;
366
+ if (runInBackground !== undefined && typeof runInBackground !== 'boolean')
367
+ return 'runInBackground 要是布尔值';
368
+ if (waitSeconds !== undefined &&
369
+ !(typeof waitSeconds === 'number' && Number.isFinite(waitSeconds) && waitSeconds >= 0)) {
370
+ return 'waitSeconds 要是不小于 0 的秒数';
196
371
  }
372
+ return {
373
+ args: rest,
374
+ runInBackground: runInBackground === true,
375
+ ...(waitSeconds !== undefined ? { waitSeconds } : {}),
376
+ };
197
377
  }
198
378
  /**
199
379
  * 轻量工具参数校验:
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalis/plugin-tools",
3
- "version": "0.9.0",
3
+ "version": "0.11.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,25 +24,41 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@aalis/api-authority": ">=0.10.0 <1.0.0",
28
- "@aalis/api-tools": ">=0.10.0 <1.0.0"
27
+ "@aalis/api-authority": ">=0.12.0 <1.0.0",
28
+ "@aalis/api-tools": ">=0.12.0 <1.0.0",
29
+ "@aalis/api-storage": ">=0.9.0 <1.0.0",
30
+ "@aalis/schema-config": ">=0.16.0 <1.0.0",
31
+ "@aalis/schema-i18n": ">=0.1.0 <1.0.0",
32
+ "@aalis/schema-message": ">=0.11.0 <1.0.0",
33
+ "@aalis/util-text-normalize": ">=0.6.0 <1.0.0",
34
+ "@aalis/api-host-config": ">=0.3.0 <1.0.0",
35
+ "@aalis/api-session-settings": ">=0.1.0 <1.0.0"
29
36
  },
30
37
  "devDependencies": {
31
38
  "@types/node": "^22.0.0",
32
39
  "typescript": "^5.7.0",
33
- "@aalis/core": "0.18.0"
40
+ "@aalis/core": "0.21.0"
34
41
  },
35
42
  "peerDependencies": {
36
- "@aalis/core": ">=0.18.0 <1.0.0"
43
+ "@aalis/core": ">=0.21.0 <1.0.0"
37
44
  },
38
45
  "aalis": {
39
46
  "service": {
40
47
  "provides": [
41
- "tools"
48
+ "tools",
49
+ "background-tasks"
42
50
  ],
43
51
  "required": [
52
+ "config",
53
+ "events",
54
+ "lifecycle",
44
55
  "logger",
45
56
  "provide"
57
+ ],
58
+ "optional": [
59
+ "storage",
60
+ "host-config",
61
+ "session-settings"
46
62
  ]
47
63
  }
48
64
  },