@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.
Files changed (202) hide show
  1. package/dist/app.d.ts +12 -13
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +16 -45
  4. package/dist/app.js.map +1 -1
  5. package/dist/config.d.ts +2 -25
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +2 -96
  8. package/dist/config.js.map +1 -1
  9. package/dist/context.d.ts +50 -23
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/context.js +102 -33
  12. package/dist/context.js.map +1 -1
  13. package/dist/contributions.d.ts +1 -1
  14. package/dist/contributions.js +1 -1
  15. package/dist/disposable-chain.d.ts +47 -6
  16. package/dist/disposable-chain.d.ts.map +1 -1
  17. package/dist/disposable-chain.js +92 -12
  18. package/dist/disposable-chain.js.map +1 -1
  19. package/dist/events.d.ts +1 -9
  20. package/dist/events.d.ts.map +1 -1
  21. package/dist/events.js +1 -23
  22. package/dist/events.js.map +1 -1
  23. package/dist/index.d.ts +4 -4
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +2 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/plugin-activation.d.ts +2 -0
  28. package/dist/plugin-activation.d.ts.map +1 -1
  29. package/dist/plugin-activation.js +9 -5
  30. package/dist/plugin-activation.js.map +1 -1
  31. package/dist/plugin-topology.d.ts +6 -2
  32. package/dist/plugin-topology.d.ts.map +1 -1
  33. package/dist/plugin-topology.js +6 -4
  34. package/dist/plugin-topology.js.map +1 -1
  35. package/dist/plugin.d.ts +20 -14
  36. package/dist/plugin.d.ts.map +1 -1
  37. package/dist/plugin.js +53 -72
  38. package/dist/plugin.js.map +1 -1
  39. package/dist/{service-helpers.d.ts → services-helpers.d.ts} +2 -2
  40. package/dist/services-helpers.d.ts.map +1 -0
  41. package/dist/{service-helpers.js → services-helpers.js} +2 -2
  42. package/dist/{service-helpers.js.map → services-helpers.js.map} +1 -1
  43. package/dist/{service.d.ts → services.d.ts} +44 -9
  44. package/dist/services.d.ts.map +1 -0
  45. package/dist/{service.js → services.js} +35 -11
  46. package/dist/services.js.map +1 -0
  47. package/dist/types/app.d.ts +8 -8
  48. package/dist/types/app.d.ts.map +1 -1
  49. package/dist/types/events.d.ts +44 -0
  50. package/dist/types/events.d.ts.map +1 -0
  51. package/dist/types/events.js +6 -0
  52. package/dist/types/events.js.map +1 -0
  53. package/dist/types/hooks.d.ts +8 -0
  54. package/dist/types/hooks.d.ts.map +1 -1
  55. package/dist/types/index.d.ts +4 -3
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/dist/types/index.js +7 -6
  58. package/dist/types/index.js.map +1 -1
  59. package/dist/types/plugin.d.ts +12 -4
  60. package/dist/types/plugin.d.ts.map +1 -1
  61. package/dist/types/plugin.js.map +1 -1
  62. package/dist/types/services.d.ts +4 -0
  63. package/dist/types/services.d.ts.map +1 -1
  64. package/package.json +1 -1
  65. package/dist/constants.d.ts +0 -31
  66. package/dist/constants.d.ts.map +0 -1
  67. package/dist/constants.js +0 -36
  68. package/dist/constants.js.map +0 -1
  69. package/dist/i18n.d.ts +0 -6
  70. package/dist/i18n.d.ts.map +0 -1
  71. package/dist/i18n.js +0 -26
  72. package/dist/i18n.js.map +0 -1
  73. package/dist/identity.d.ts +0 -26
  74. package/dist/identity.d.ts.map +0 -1
  75. package/dist/identity.js +0 -36
  76. package/dist/identity.js.map +0 -1
  77. package/dist/init.d.ts +0 -20
  78. package/dist/init.d.ts.map +0 -1
  79. package/dist/init.js +0 -455
  80. package/dist/init.js.map +0 -1
  81. package/dist/llm-router.d.ts.map +0 -1
  82. package/dist/llm-router.js +0 -123
  83. package/dist/llm-router.js.map +0 -1
  84. package/dist/marketplace-bootstrap.d.ts +0 -54
  85. package/dist/marketplace-bootstrap.d.ts.map +0 -1
  86. package/dist/marketplace-bootstrap.js +0 -132
  87. package/dist/marketplace-bootstrap.js.map +0 -1
  88. package/dist/mixin-registry.d.ts +0 -34
  89. package/dist/mixin-registry.d.ts.map +0 -1
  90. package/dist/mixin-registry.js +0 -60
  91. package/dist/mixin-registry.js.map +0 -1
  92. package/dist/model-ref.d.ts +0 -22
  93. package/dist/model-ref.d.ts.map +0 -1
  94. package/dist/model-ref.js +0 -46
  95. package/dist/model-ref.js.map +0 -1
  96. package/dist/pending-buffer.d.ts +0 -46
  97. package/dist/pending-buffer.d.ts.map +0 -1
  98. package/dist/pending-buffer.js +0 -131
  99. package/dist/pending-buffer.js.map +0 -1
  100. package/dist/platform-registry.d.ts +0 -40
  101. package/dist/platform-registry.d.ts.map +0 -1
  102. package/dist/platform-registry.js +0 -64
  103. package/dist/platform-registry.js.map +0 -1
  104. package/dist/semver-mini.d.ts +0 -20
  105. package/dist/semver-mini.d.ts.map +0 -1
  106. package/dist/semver-mini.js +0 -94
  107. package/dist/semver-mini.js.map +0 -1
  108. package/dist/service-helpers.d.ts.map +0 -1
  109. package/dist/service.d.ts.map +0 -1
  110. package/dist/service.js.map +0 -1
  111. package/dist/types/agent.d.ts +0 -51
  112. package/dist/types/agent.d.ts.map +0 -1
  113. package/dist/types/agent.js +0 -3
  114. package/dist/types/agent.js.map +0 -1
  115. package/dist/types/archive.d.ts +0 -59
  116. package/dist/types/archive.d.ts.map +0 -1
  117. package/dist/types/archive.js +0 -16
  118. package/dist/types/archive.js.map +0 -1
  119. package/dist/types/authority.d.ts +0 -63
  120. package/dist/types/authority.d.ts.map +0 -1
  121. package/dist/types/authority.js +0 -3
  122. package/dist/types/authority.js.map +0 -1
  123. package/dist/types/capabilities.d.ts +0 -53
  124. package/dist/types/capabilities.d.ts.map +0 -1
  125. package/dist/types/capabilities.js +0 -87
  126. package/dist/types/capabilities.js.map +0 -1
  127. package/dist/types/cli.d.ts +0 -14
  128. package/dist/types/cli.d.ts.map +0 -1
  129. package/dist/types/cli.js +0 -3
  130. package/dist/types/cli.js.map +0 -1
  131. package/dist/types/commands.d.ts +0 -98
  132. package/dist/types/commands.d.ts.map +0 -1
  133. package/dist/types/commands.js +0 -3
  134. package/dist/types/commands.js.map +0 -1
  135. package/dist/types/core.d.ts +0 -116
  136. package/dist/types/core.d.ts.map +0 -1
  137. package/dist/types/core.js +0 -6
  138. package/dist/types/core.js.map +0 -1
  139. package/dist/types/embedding.d.ts +0 -7
  140. package/dist/types/embedding.d.ts.map +0 -1
  141. package/dist/types/embedding.js +0 -3
  142. package/dist/types/embedding.js.map +0 -1
  143. package/dist/types/flow-control.d.ts +0 -51
  144. package/dist/types/flow-control.d.ts.map +0 -1
  145. package/dist/types/flow-control.js +0 -12
  146. package/dist/types/flow-control.js.map +0 -1
  147. package/dist/types/gateway.d.ts +0 -24
  148. package/dist/types/gateway.d.ts.map +0 -1
  149. package/dist/types/gateway.js +0 -15
  150. package/dist/types/gateway.js.map +0 -1
  151. package/dist/types/image-recognition.d.ts +0 -123
  152. package/dist/types/image-recognition.d.ts.map +0 -1
  153. package/dist/types/image-recognition.js +0 -31
  154. package/dist/types/image-recognition.js.map +0 -1
  155. package/dist/types/llm.d.ts +0 -146
  156. package/dist/types/llm.d.ts.map +0 -1
  157. package/dist/types/llm.js +0 -27
  158. package/dist/types/llm.js.map +0 -1
  159. package/dist/types/memory.d.ts +0 -62
  160. package/dist/types/memory.d.ts.map +0 -1
  161. package/dist/types/memory.js +0 -22
  162. package/dist/types/memory.js.map +0 -1
  163. package/dist/types/persona.d.ts +0 -45
  164. package/dist/types/persona.d.ts.map +0 -1
  165. package/dist/types/persona.js +0 -3
  166. package/dist/types/persona.js.map +0 -1
  167. package/dist/types/platform.d.ts +0 -126
  168. package/dist/types/platform.d.ts.map +0 -1
  169. package/dist/types/platform.js +0 -5
  170. package/dist/types/platform.js.map +0 -1
  171. package/dist/types/service.d.ts +0 -41
  172. package/dist/types/service.d.ts.map +0 -1
  173. package/dist/types/service.js +0 -35
  174. package/dist/types/service.js.map +0 -1
  175. package/dist/types/session.d.ts +0 -153
  176. package/dist/types/session.d.ts.map +0 -1
  177. package/dist/types/session.js +0 -19
  178. package/dist/types/session.js.map +0 -1
  179. package/dist/types/storage.d.ts +0 -100
  180. package/dist/types/storage.d.ts.map +0 -1
  181. package/dist/types/storage.js +0 -29
  182. package/dist/types/storage.js.map +0 -1
  183. package/dist/types/tools.d.ts +0 -39
  184. package/dist/types/tools.d.ts.map +0 -1
  185. package/dist/types/tools.js +0 -3
  186. package/dist/types/tools.js.map +0 -1
  187. package/dist/types/trigger-policy.d.ts +0 -16
  188. package/dist/types/trigger-policy.d.ts.map +0 -1
  189. package/dist/types/trigger-policy.js +0 -6
  190. package/dist/types/trigger-policy.js.map +0 -1
  191. package/dist/types/vectorstore.d.ts +0 -23
  192. package/dist/types/vectorstore.d.ts.map +0 -1
  193. package/dist/types/vectorstore.js +0 -3
  194. package/dist/types/vectorstore.js.map +0 -1
  195. package/dist/types/web-search.d.ts +0 -88
  196. package/dist/types/web-search.d.ts.map +0 -1
  197. package/dist/types/web-search.js +0 -23
  198. package/dist/types/web-search.js.map +0 -1
  199. package/dist/types/webui.d.ts +0 -137
  200. package/dist/types/webui.d.ts.map +0 -1
  201. package/dist/types/webui.js +0 -3
  202. package/dist/types/webui.js.map +0 -1
@@ -1,6 +1,44 @@
1
- import { type NormalizedDependency, normalizeDependency, type ServiceEntry, ServicePriority, type ServicePriorityValue } from './types/service.js';
2
- export type { NormalizedDependency, ServiceEntry, ServicePriorityValue };
3
- export { normalizeDependency, ServicePriority };
1
+ import type { DependencyDeclaration } from './types/services.js';
2
+ /**
3
+ * 服务优先级约定(数字越大越优先)
4
+ *
5
+ * 用于 `ctx.provide(name, instance, { priority })`。
6
+ * 同优先级时,先注册的胜出(稳定降序排序)。
7
+ *
8
+ * 设计目的:把『谁是默认胜者』变成静态、可预测的契约。
9
+ * 与 preferService 正交、非替代关系:优先级是静态默认序,偏好是用户显式覆盖,
10
+ * 解析序恒为「偏好 > 优先级 > 注册顺序」。
11
+ *
12
+ * 推荐用法:
13
+ * - `Backend = 0`:普通后端实现(如 plugin-openai / plugin-deepseek)。
14
+ * - `Override = 50`:用户级覆盖;同名服务希望默认胜过普通后端时使用。
15
+ * - `System = 200`:保留给核心系统级覆盖。
16
+ *
17
+ * 注:feat/service-granularity 之后已不再有 router/facade 层级——LLM / storage / platform
18
+ * 均改为按 model / root / sessionId 直接注册多 entry,跨 entry 的聚合与路由由各自
19
+ * `*-api` 的 helper 函数承担(`createStorageGateway` / `resolvePlatformBySession` / ...),
20
+ * 没有同名 facade entry,因此曾经的 `Router = 100` 槽位整体废弃。
21
+ */
22
+ export declare const ServicePriority: {
23
+ readonly Backend: 0;
24
+ readonly Override: 50;
25
+ readonly System: 200;
26
+ };
27
+ export type ServicePriorityValue = (typeof ServicePriority)[keyof typeof ServicePriority];
28
+ export interface ServiceEntry {
29
+ instance: unknown;
30
+ priority: number;
31
+ contextId: string;
32
+ /** 可选的展示标签(如 "OpenAI / gpt-4o") */
33
+ label?: string;
34
+ }
35
+ export interface NormalizedDependency {
36
+ service: string;
37
+ }
38
+ /**
39
+ * 将 string | ServiceDependency 统一为 NormalizedDependency
40
+ */
41
+ export declare function normalizeDependency(dep: DependencyDeclaration): NormalizedDependency;
4
42
  /**
5
43
  * 服务容器 —— 支持同名多实现
6
44
  *
@@ -32,10 +70,6 @@ export declare class ServiceContainer {
32
70
  * 获取一个满足能力要求的服务实例
33
71
  */
34
72
  get<T>(name: string): T | undefined;
35
- /**
36
- * 检查某个服务是否存在
37
- */
38
- has(name: string): boolean;
39
73
  /**
40
74
  * 检查指定 contextId 是否注册了某个服务。
41
75
  *
@@ -68,13 +102,14 @@ export declare class ServiceContainer {
68
102
  */
69
103
  getEntries(name: string): ServiceEntry[];
70
104
  /**
71
- * 获取某个服务的所有实例(带提供者信息)
105
+ * 获取某个服务的所有实例(带提供者信息与优先级)
72
106
  *
73
107
  * 返回顺序遵循「偏好 > 优先级 > 注册顺序」。
74
108
  */
75
109
  getAll<T>(name: string): Array<{
76
110
  instance: T;
77
111
  contextId: string;
112
+ priority: number;
78
113
  label?: string;
79
114
  }>;
80
115
  /**
@@ -99,4 +134,4 @@ export declare class ServiceContainer {
99
134
  */
100
135
  getPreferred(name: string): string | undefined;
101
136
  }
102
- //# sourceMappingURL=service.d.ts.map
137
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAIjE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAE1F,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,GAAG,oBAAoB,CAEpF;AAED;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAqC;IACpD,uEAAuE;IACvE,OAAO,CAAC,WAAW,CAA6B;IAEhD;;;;OAIG;IACH,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,QAAQ,GAAE,MAAU,EACpB,SAAS,GAAE,MAAe,EAC1B,KAAK,CAAC,EAAE,MAAM,GACb,YAAY;IAkBf;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAKnC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAOtD;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO;IAU3D;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAkBhD;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;IAIxC;;;;OAIG;IACH,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,QAAQ,EAAE,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IASpG;;;;;;;;;OASG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAKhD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAG/C"}
@@ -1,6 +1,35 @@
1
- import { normalizeDependency, ServicePriority, } from './types/service.js';
2
- // 类型与纯辅助 re-export,保留同名旧导入路径
3
- export { normalizeDependency, ServicePriority };
1
+ // ----- 服务系统数据契约(与容器实现同文件,同 contributions.ts Spec/Handle 惯例) -----
2
+ /**
3
+ * 服务优先级约定(数字越大越优先)
4
+ *
5
+ * 用于 `ctx.provide(name, instance, { priority })`。
6
+ * 同优先级时,先注册的胜出(稳定降序排序)。
7
+ *
8
+ * 设计目的:把『谁是默认胜者』变成静态、可预测的契约。
9
+ * 与 preferService 正交、非替代关系:优先级是静态默认序,偏好是用户显式覆盖,
10
+ * 解析序恒为「偏好 > 优先级 > 注册顺序」。
11
+ *
12
+ * 推荐用法:
13
+ * - `Backend = 0`:普通后端实现(如 plugin-openai / plugin-deepseek)。
14
+ * - `Override = 50`:用户级覆盖;同名服务希望默认胜过普通后端时使用。
15
+ * - `System = 200`:保留给核心系统级覆盖。
16
+ *
17
+ * 注:feat/service-granularity 之后已不再有 router/facade 层级——LLM / storage / platform
18
+ * 均改为按 model / root / sessionId 直接注册多 entry,跨 entry 的聚合与路由由各自
19
+ * `*-api` 的 helper 函数承担(`createStorageGateway` / `resolvePlatformBySession` / ...),
20
+ * 没有同名 facade entry,因此曾经的 `Router = 100` 槽位整体废弃。
21
+ */
22
+ export const ServicePriority = {
23
+ Backend: 0,
24
+ Override: 50,
25
+ System: 200,
26
+ };
27
+ /**
28
+ * 将 string | ServiceDependency 统一为 NormalizedDependency
29
+ */
30
+ export function normalizeDependency(dep) {
31
+ return { service: typeof dep === 'string' ? dep : dep.service };
32
+ }
4
33
  /**
5
34
  * 服务容器 —— 支持同名多实现
6
35
  *
@@ -62,12 +91,6 @@ export class ServiceContainer {
62
91
  const list = this.resolveEntries(name);
63
92
  return list.length > 0 ? list[0].instance : undefined;
64
93
  }
65
- /**
66
- * 检查某个服务是否存在
67
- */
68
- has(name) {
69
- return this.get(name) !== undefined;
70
- }
71
94
  /**
72
95
  * 检查指定 contextId 是否注册了某个服务。
73
96
  *
@@ -138,7 +161,7 @@ export class ServiceContainer {
138
161
  return this.resolveEntries(name);
139
162
  }
140
163
  /**
141
- * 获取某个服务的所有实例(带提供者信息)
164
+ * 获取某个服务的所有实例(带提供者信息与优先级)
142
165
  *
143
166
  * 返回顺序遵循「偏好 > 优先级 > 注册顺序」。
144
167
  */
@@ -146,6 +169,7 @@ export class ServiceContainer {
146
169
  return this.resolveEntries(name).map(entry => ({
147
170
  instance: entry.instance,
148
171
  contextId: entry.contextId,
172
+ priority: entry.priority,
149
173
  label: entry.label,
150
174
  }));
151
175
  }
@@ -178,4 +202,4 @@ export class ServiceContainer {
178
202
  return this.preferences.get(name);
179
203
  }
180
204
  }
181
- //# sourceMappingURL=service.js.map
205
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { ConfigSchema } from './core.js';
2
1
  import type { PluginEntry, PluginState } from './plugin.js';
3
2
  /**
4
3
  * App 生命周期 + 配置 + 市场 接口
@@ -29,9 +28,6 @@ export interface PluginStatusEntry {
29
28
  requiredServices?: string[];
30
29
  /** 可选依赖的服务名(来自 inject.optional) */
31
30
  optionalServices?: string[];
32
- config: Record<string, unknown>;
33
- configSchema?: ConfigSchema;
34
- defaultConfig?: Record<string, unknown>;
35
31
  error?: string;
36
32
  }
37
33
  /**
@@ -53,10 +49,14 @@ export interface PluginManagerService {
53
49
  disablePlugin(name: string): Promise<boolean>;
54
50
  /** 彻底卸载插件:dispose 上下文并从注册表移除(用于市场卸载,区别于 disablePlugin 仅置禁用态) */
55
51
  unload(name: string): Promise<void>;
56
- /** 基于 reusable 插件创建新实例,返回 instanceId */
57
- createInstance(moduleName: string, suffix: string, config?: Record<string, unknown>): Promise<string | undefined>;
58
- /** 删除实例 */
59
- removeInstance(instanceId: string): Promise<boolean>;
52
+ /** 注册并尝试激活一个插件模块(多实例经 instanceId 区分;供管理面基于 register/unload 组合实例编排) */
53
+ register(module: PluginEntry['module'], config?: Record<string, unknown>, instanceId?: string): Promise<void>;
54
+ /**
55
+ * 等待插件状态机静置(无在飞/排队的 recompute)。变更 API 在 flight 在飞时
56
+ * 排队早退,需要"尘埃落定后再观察"的调用方在变更后 await 本方法。
57
+ * ⚠. 不得在插件 apply / onDispose 内调用(互等死锁)。
58
+ */
59
+ idle(): Promise<void>;
60
60
  }
61
61
  declare module './services.js' {
62
62
  interface ServiceTypeMap {
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/types/app.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,gCAAgC;IAChC,OAAO,IAAI,IAAI,CAAC;IAChB,cAAc;IACd,UAAU,IAAI,IAAI,CAAC;IAEnB,uCAAuC;IACvC,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB;IACnB,SAAS,IAAI,iBAAiB,EAAE,CAAC;IACjC,eAAe;IACf,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IACjD,sBAAsB;IACtB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,WAAW;IACX,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,WAAW;IACX,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,gEAAgE;IAChE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,wCAAwC;IACxC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClH,WAAW;IACX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;AAED,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,cAAc;QACtB,GAAG,EAAE,UAAU,CAAC;QAChB,OAAO,EAAE,oBAAoB,CAAC;KAC/B;CACF"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/types/app.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,gCAAgC;IAChC,OAAO,IAAI,IAAI,CAAC;IAChB,cAAc;IACd,UAAU,IAAI,IAAI,CAAC;IAEnB,uCAAuC;IACvC,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAGhB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,mBAAmB;IACnB,SAAS,IAAI,iBAAiB,EAAE,CAAC;IACjC,eAAe;IACf,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IACjD,sBAAsB;IACtB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF,WAAW;IACX,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,WAAW;IACX,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,gEAAgE;IAChE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9G;;;;OAIG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,cAAc;QACtB,GAAG,EAAE,UAAU,CAAC;QAChB,OAAO,EAAE,oBAAoB,CAAC;KAC/B;CACF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 内置事件表
3
+ *
4
+ * 第三方插件可通过 TypeScript declaration merging 扩展:
5
+ * ```ts
6
+ * declare module '@aalis/core' {
7
+ * interface AalisEvents {
8
+ * 'scheduler:tick': [jobId: string];
9
+ * }
10
+ * }
11
+ * ```
12
+ */
13
+ export interface AalisEvents {
14
+ 'service:registered': [name: string];
15
+ 'service:unregistered': [name: string];
16
+ /**
17
+ * 某服务的偏好 provider 发生切换(preferService / unpreferService)。
18
+ * 偏好切换会改变 getService(name) 的胜者但不改变 entry 集合,
19
+ * 因此不能复用 registered/unregistered 语义;whenService 借此事件跟随重挂。
20
+ */
21
+ 'service:preference-changed': [name: string];
22
+ 'plugin:loaded': [name: string];
23
+ 'plugin:unloaded': [name: string];
24
+ 'plugins:changed': [];
25
+ ready: [];
26
+ /** 应用已启动完成,适合 CLI / TUI 等用户交互入口接管终端 */
27
+ 'app:started': [];
28
+ restarting: [];
29
+ /** 应用正在启动(start() 开头,在服务检查和消息路由注册之前) */
30
+ 'app:starting': [];
31
+ /**
32
+ * 应用正在停止(stop() 开头,在插件拓扑逆序 dispose 之前)。
33
+ *
34
+ * 本事件的定位是**通知**(如 CLI 打印告别语、状态条切换),**不是清理通道**。
35
+ *
36
+ * ⚠. 插件内部清理副作用(关连接、停计时器、flush 缓冲区、落盘等)一律用
37
+ * `ctx.onDispose(cb)`:它覆盖 bounce / unload / updatePluginConfig 等
38
+ * 全部拆卸路径,且异步清理会被编排层的 disposeAsync 等待完成。
39
+ * 本事件只在 app 全局停机时触发一次,用它做清理会在热重载路径上
40
+ * 造成资源泄漏与数据丢失。
41
+ */
42
+ 'app:stopping': [];
43
+ }
44
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAK1B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC;;;;OAIG;IACH,4BAA4B,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,iBAAiB,EAAE,EAAE,CAAC;IACtB,KAAK,EAAE,EAAE,CAAC;IACV,uCAAuC;IACvC,aAAa,EAAE,EAAE,CAAC;IAClB,UAAU,EAAE,EAAE,CAAC;IACf,wCAAwC;IACxC,cAAc,EAAE,EAAE,CAAC;IACnB;;;;;;;;;;OAUG;IACH,cAAc,EAAE,EAAE,CAAC;CACpB"}
@@ -0,0 +1,6 @@
1
+ // ============================================================
2
+ // 事件扩展点:内置事件表 + declaration merging 靶子。
3
+ // 与 hooks / services / contributions 的扩展点文件同构——一原语一文件。
4
+ // ============================================================
5
+ export {};
6
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wCAAwC;AACxC,uDAAuD;AACvD,+DAA+D"}
@@ -1,3 +1,11 @@
1
1
  export interface HookContextMap {
2
2
  }
3
+ /**
4
+ * 中间件 next 函数,调用它将控制传递给下一个中间件或默认行为
5
+ */
6
+ export type MiddlewareNext = () => Promise<void>;
7
+ /**
8
+ * 中间件函数签名:接收数据和 next,可选择修改数据或中断流程
9
+ */
10
+ export type MiddlewareFn<T> = (data: T, next: MiddlewareNext) => Promise<void>;
3
11
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;CAAG"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;CAAG;AAIlC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1,7 +1,8 @@
1
1
  export type { AppService, PluginManagerService, PluginStatusEntry } from './app.js';
2
2
  export type { ContributionPointMap } from './contributions.js';
3
- export type { AalisEvents, ConfigSchema, DependencyDeclaration, InjectDeclaration, MiddlewareFn, MiddlewareNext, SchemaArray, SchemaField, SchemaFieldType, SchemaFieldTypes, SchemaGroup, ServiceDependency, } from './core.js';
4
3
  export type { DisposableService } from './disposable-service.js';
5
- export type { HookContextMap } from './hooks.js';
6
- export type { ServiceOf, ServiceTypeMap } from './services.js';
4
+ export type { AalisEvents } from './events.js';
5
+ export type { HookContextMap, MiddlewareFn, MiddlewareNext } from './hooks.js';
6
+ export type { InjectDeclaration } from './plugin.js';
7
+ export type { DependencyDeclaration, ServiceDependency, ServiceOf, ServiceTypeMap } from './services.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAkBA,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEpF,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,YAAY,EACV,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAmBA,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEpF,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -1,12 +1,13 @@
1
1
  // ============================================================
2
2
  // @aalis/core - types 子模块统一导出
3
3
  //
4
- // 仅包含 core 自身定义的:
5
- // - 通用 IoC 数据契约(types/core.ts:Schema / Middleware / Dependency / AalisEvents 等)
6
- // - 钩子扩展点(types/hooks.ts,仅空 HookContextMap)
7
- // - 贡献点扩展点(types/contributions.ts,仅空 ContributionPointMap)
8
- // - 服务类型注册表(types/services.ts,仅空 ServiceTypeMap)
9
- // - App 服务接口(types/app.ts
4
+ // 四原语一人一个扩展点文件(均为 declaration merging 靶子 + 域词汇):
5
+ // - types/events.ts AalisEvents(事件名 参数元组)
6
+ // - types/hooks.ts HookContextMap(钩子名 → 中间件上下文)+ Middleware 签名
7
+ // - types/services.ts ServiceTypeMap(服务名 → 实例接口)+ 服务依赖声明
8
+ // - types/contributions.ts ContributionPointMap(贡献点名 → spec 类型)
9
+ // 另:types/app.ts(App 服务接口)、types/plugin.ts(插件模块词汇)、
10
+ // types/disposable-service.ts(服务自清理协议)。
10
11
  //
11
12
  // 业务/领域类型一律由 plugin-*-api 包导出:
12
13
  // - Message / ContentSegment → @aalis/plugin-message-api
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,8BAA8B;AAC9B,EAAE;AACF,kBAAkB;AAClB,kFAAkF;AAClF,8CAA8C;AAC9C,6DAA6D;AAC7D,mDAAmD;AACnD,6BAA6B;AAC7B,EAAE;AACF,+BAA+B;AAC/B,qEAAqE;AACrE,yEAAyE;AACzE,sFAAsF;AACtF,qEAAqE;AACrE,+DAA+D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,8BAA8B;AAC9B,EAAE;AACF,iDAAiD;AACjD,qDAAqD;AACrD,yEAAyE;AACzE,gEAAgE;AAChE,kEAAkE;AAClE,oDAAoD;AACpD,4CAA4C;AAC5C,EAAE;AACF,+BAA+B;AAC/B,qEAAqE;AACrE,yEAAyE;AACzE,sFAAsF;AACtF,qEAAqE;AACrE,+DAA+D"}
@@ -1,6 +1,10 @@
1
1
  import type { Context } from '../context.js';
2
- import type { ConfigSchema, InjectDeclaration } from './core.js';
3
- import type { NormalizedDependency } from './service.js';
2
+ import type { NormalizedDependency } from '../services.js';
3
+ import type { DependencyDeclaration } from './services.js';
4
+ export interface InjectDeclaration {
5
+ required?: DependencyDeclaration[];
6
+ optional?: DependencyDeclaration[];
7
+ }
4
8
  export interface PluginModule {
5
9
  name: string;
6
10
  /** 插件的显示名称,用于前端展示 */
@@ -19,8 +23,12 @@ export interface PluginModule {
19
23
  * 适合多实例的插件:LLM adapters、embedding adapters、platform adapters、memory backends。
20
24
  */
21
25
  reusable?: boolean;
22
- /** 配置 Schema,用于前端自动生成配置表单 */
23
- configSchema?: ConfigSchema;
26
+ /**
27
+ * 配置 Schema——core 视为 **opaque 数据**原样透传,不解释任何字段。
28
+ * 表单形状类型由 @aalis/plugin-config-api 定义,渲染宿主与配置同步
29
+ * 政策(@aalis/runtime)自行消费。
30
+ */
31
+ configSchema?: Record<string, unknown>;
24
32
  /** 插件默认配置,当主配置文件中无此插件配置时使用 */
25
33
  defaultConfig?: Record<string, unknown>;
26
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAIjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIzD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAK5E;AAID,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAElG;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAW3F"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAI3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACpC;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC;;;;;;;;;;;OAWG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAK5E;AAID,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAElG;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAW3F"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,EAAE;AACF,kDAAkD;AAClD,qBAAqB;AAqFrB;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,4BAA4B;IAC5B,uCAAuC;IACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IACpD,OAAO;QACL,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;QACzC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/types/plugin.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,EAAE;AACF,kDAAkD;AAClD,qBAAqB;AA+FrB;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,4BAA4B;IAC5B,uCAAuC;IACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IACpD,OAAO;QACL,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;QACzC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;KACvC,CAAC;AACJ,CAAC"}
@@ -14,4 +14,8 @@ export interface ServiceTypeMap {
14
14
  * 用户便利类型;core 自己用 `ServiceTypeMap[TName]` 直接索引。
15
15
  */
16
16
  export type ServiceOf<TName extends string> = TName extends keyof ServiceTypeMap ? ServiceTypeMap[TName] : unknown;
17
+ export interface ServiceDependency {
18
+ service: string;
19
+ }
20
+ export type DependencyDeclaration = string | ServiceDependency;
17
21
  //# sourceMappingURL=services.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/types/services.ts"],"names":[],"mappings":"AAsCA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;CAAG;AAElC;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,MAAM,IAAI,KAAK,SAAS,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/types/services.ts"],"names":[],"mappings":"AAsCA;;;;;GAKG;AACH,MAAM,WAAW,cAAc;CAAG;AAElC;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,MAAM,IAAI,KAAK,SAAS,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;AAInH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalis/core",
3
- "version": "0.8.0",
3
+ "version": "0.9.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,31 +0,0 @@
1
- /**
2
- * Aalis 核心常量
3
- */
4
- /**
5
- * Gateway 入站消息生命周期相位(按下面的顺序串行执行)。
6
- *
7
- * 每个相位是一个独立的命名钩子键,对应一个职责清晰的拦截点。
8
- * 同一相位内部的多个 handler 按 **注册顺序** 执行洋葱模型 (next 语义),
9
- * 跨相位则由 plugin-gateway 顺序调度,无需任何优先级数字。
10
- *
11
- * COMMAND → 指令解析与执行(由 plugin-commands 占据)
12
- * FLOW → 流控前置闸门(禁言/冷却/限速;由 plugin-flow-control 占据)
13
- * TRIGGER → 触发策略判定(mute 关键词/@/计数评分;由 plugin-trigger-policy 占据)
14
- * DISPATCH → 默认派发到 agent.handleMessage(plugin-gateway 提供 default action)
15
- *
16
- * 任一相位的 handler 不调用 next() 即视为"我已处理",
17
- * 整个入站管道立即停止(不再进入后续相位)。
18
- *
19
- * 第三方插件可以注册到任一相位以获得清晰的语义位置,
20
- * 无需理解优先级数字、无需与其他插件协商占位。
21
- */
22
- export declare const INBOUND_PHASE: {
23
- readonly COMMAND: "inbound:command";
24
- readonly FLOW: "inbound:flow";
25
- readonly TRIGGER: "inbound:trigger";
26
- readonly DISPATCH: "inbound:dispatch";
27
- };
28
- /** 默认相位执行顺序(gateway 内部调度使用)。 */
29
- export declare const INBOUND_PHASE_ORDER: readonly ["inbound:command", "inbound:flow", "inbound:trigger", "inbound:dispatch"];
30
- export type InboundPhase = typeof INBOUND_PHASE_ORDER[number];
31
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,gCAAgC;AAChC,eAAO,MAAM,mBAAmB,qFAKtB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC"}
package/dist/constants.js DELETED
@@ -1,36 +0,0 @@
1
- /**
2
- * Aalis 核心常量
3
- */
4
- // ----- Gateway 入站生命周期相位 -----
5
- /**
6
- * Gateway 入站消息生命周期相位(按下面的顺序串行执行)。
7
- *
8
- * 每个相位是一个独立的命名钩子键,对应一个职责清晰的拦截点。
9
- * 同一相位内部的多个 handler 按 **注册顺序** 执行洋葱模型 (next 语义),
10
- * 跨相位则由 plugin-gateway 顺序调度,无需任何优先级数字。
11
- *
12
- * COMMAND → 指令解析与执行(由 plugin-commands 占据)
13
- * FLOW → 流控前置闸门(禁言/冷却/限速;由 plugin-flow-control 占据)
14
- * TRIGGER → 触发策略判定(mute 关键词/@/计数评分;由 plugin-trigger-policy 占据)
15
- * DISPATCH → 默认派发到 agent.handleMessage(plugin-gateway 提供 default action)
16
- *
17
- * 任一相位的 handler 不调用 next() 即视为"我已处理",
18
- * 整个入站管道立即停止(不再进入后续相位)。
19
- *
20
- * 第三方插件可以注册到任一相位以获得清晰的语义位置,
21
- * 无需理解优先级数字、无需与其他插件协商占位。
22
- */
23
- export const INBOUND_PHASE = {
24
- COMMAND: 'inbound:command',
25
- FLOW: 'inbound:flow',
26
- TRIGGER: 'inbound:trigger',
27
- DISPATCH: 'inbound:dispatch',
28
- };
29
- /** 默认相位执行顺序(gateway 内部调度使用)。 */
30
- export const INBOUND_PHASE_ORDER = [
31
- INBOUND_PHASE.COMMAND,
32
- INBOUND_PHASE.FLOW,
33
- INBOUND_PHASE.TRIGGER,
34
- INBOUND_PHASE.DISPATCH,
35
- ];
36
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+BAA+B;AAE/B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,kBAAkB;CACpB,CAAC;AAEX,gCAAgC;AAChC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,aAAa,CAAC,OAAO;IACrB,aAAa,CAAC,IAAI;IAClB,aAAa,CAAC,OAAO;IACrB,aAAa,CAAC,QAAQ;CACd,CAAC"}
package/dist/i18n.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import type { I18nResources } from './types/index.js';
2
- export declare const DEFAULT_LOCALE = "zh-CN";
3
- export declare function resolveI18nText(resources: I18nResources | undefined, locale: string | undefined, key: string, fallback?: string): string;
4
- export declare function normalizeLocale(locale: string | undefined): string;
5
- export declare function resolveLocalePreference(locale: string | undefined, fallbackLocale?: string): string;
6
- //# sourceMappingURL=i18n.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,GAAG,SAAS,EACpC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,SAAM,GACb,MAAM,CAWR;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAIlE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,SAAiB,GAAG,MAAM,CAI3G"}
package/dist/i18n.js DELETED
@@ -1,26 +0,0 @@
1
- export const DEFAULT_LOCALE = 'zh-CN';
2
- export function resolveI18nText(resources, locale, key, fallback = key) {
3
- const normalized = normalizeLocale(locale);
4
- const exact = resources?.[normalized]?.[key];
5
- if (exact)
6
- return exact;
7
- const baseLocale = normalized.split('-')[0];
8
- const base = resources?.[baseLocale]?.[key];
9
- if (base)
10
- return base;
11
- const zh = resources?.[DEFAULT_LOCALE]?.[key];
12
- return zh ?? fallback;
13
- }
14
- export function normalizeLocale(locale) {
15
- const value = locale?.trim();
16
- if (!value || value === 'auto')
17
- return DEFAULT_LOCALE;
18
- return value;
19
- }
20
- export function resolveLocalePreference(locale, fallbackLocale = DEFAULT_LOCALE) {
21
- const value = locale?.trim();
22
- if (!value || value === 'auto')
23
- return normalizeLocale(fallbackLocale);
24
- return value;
25
- }
26
- //# sourceMappingURL=i18n.js.map
package/dist/i18n.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,UAAU,eAAe,CAC7B,SAAoC,EACpC,MAA0B,EAC1B,GAAW,EACX,QAAQ,GAAG,GAAG;IAEd,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,EAAE,IAAI,QAAQ,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,MAAM,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,cAAc,CAAC;IACtD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA0B,EAAE,cAAc,GAAG,cAAc;IACjG,MAAM,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * 用户身份标识工具函数
3
- *
4
- * 统一 userId / nickname 的使用模式,避免各插件实现不一致。
5
- */
6
- /**
7
- * 获取消息发送者的显示标签。
8
- * 同时展示 nickname 和 userId 帮助 LLM 关联身份。
9
- * - 两者都有时返回 `昵称(ID)`
10
- * - 只有 nickname 返回 nickname
11
- * - 只有 userId 返回 userId
12
- * - 都无返回 undefined
13
- */
14
- export declare function getSenderLabel(nickname?: string, userId?: string): string | undefined;
15
- /**
16
- * 将发送者标签格式化为消息前缀。
17
- * 有标签时返回 `[label]: content`,无标签时原样返回 content。
18
- */
19
- export declare function prefixSender(content: string, nickname?: string, userId?: string): string;
20
- /**
21
- * 获取适用于 Message.name / OpenAI API name 字段的安全标识符。
22
- * 使用 userId(稳定不变)而非 nickname(可变)。
23
- * 返回 undefined 表示不设置 name 字段。
24
- */
25
- export declare function getMessageName(userId?: string): string | undefined;
26
- //# sourceMappingURL=identity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGxF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE"}
package/dist/identity.js DELETED
@@ -1,36 +0,0 @@
1
- /**
2
- * 用户身份标识工具函数
3
- *
4
- * 统一 userId / nickname 的使用模式,避免各插件实现不一致。
5
- */
6
- /**
7
- * 获取消息发送者的显示标签。
8
- * 同时展示 nickname 和 userId 帮助 LLM 关联身份。
9
- * - 两者都有时返回 `昵称(ID)`
10
- * - 只有 nickname 返回 nickname
11
- * - 只有 userId 返回 userId
12
- * - 都无返回 undefined
13
- */
14
- export function getSenderLabel(nickname, userId) {
15
- const nick = nickname?.trim();
16
- if (nick && userId)
17
- return `${nick}(${userId})`;
18
- return nick || userId || undefined;
19
- }
20
- /**
21
- * 将发送者标签格式化为消息前缀。
22
- * 有标签时返回 `[label]: content`,无标签时原样返回 content。
23
- */
24
- export function prefixSender(content, nickname, userId) {
25
- const label = getSenderLabel(nickname, userId);
26
- return label ? `[${label}]: ${content}` : content;
27
- }
28
- /**
29
- * 获取适用于 Message.name / OpenAI API name 字段的安全标识符。
30
- * 使用 userId(稳定不变)而非 nickname(可变)。
31
- * 返回 undefined 表示不设置 name 字段。
32
- */
33
- export function getMessageName(userId) {
34
- return userId || undefined;
35
- }
36
- //# sourceMappingURL=identity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB,EAAE,MAAe;IAC/D,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,IAAI,IAAI,MAAM;QAAE,OAAO,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC;IAChD,OAAO,IAAI,IAAI,MAAM,IAAI,SAAS,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,QAAiB,EAAE,MAAe;IAC9E,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,OAAO,MAAM,IAAI,SAAS,CAAC;AAC7B,CAAC"}