@aalis/core 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/app.d.ts +16 -13
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +20 -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 +105 -34
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/context.js +185 -43
  12. package/dist/context.js.map +1 -1
  13. package/dist/contributions.d.ts +75 -0
  14. package/dist/contributions.d.ts.map +1 -0
  15. package/dist/contributions.js +83 -0
  16. package/dist/contributions.js.map +1 -0
  17. package/dist/disposable-chain.d.ts +47 -6
  18. package/dist/disposable-chain.d.ts.map +1 -1
  19. package/dist/disposable-chain.js +92 -12
  20. package/dist/disposable-chain.js.map +1 -1
  21. package/dist/events.d.ts +1 -9
  22. package/dist/events.d.ts.map +1 -1
  23. package/dist/events.js +1 -23
  24. package/dist/events.js.map +1 -1
  25. package/dist/hooks.d.ts +7 -22
  26. package/dist/hooks.d.ts.map +1 -1
  27. package/dist/hooks.js +6 -2
  28. package/dist/hooks.js.map +1 -1
  29. package/dist/index.d.ts +6 -5
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +5 -4
  32. package/dist/index.js.map +1 -1
  33. package/dist/plugin-activation.d.ts +2 -0
  34. package/dist/plugin-activation.d.ts.map +1 -1
  35. package/dist/plugin-activation.js +9 -5
  36. package/dist/plugin-activation.js.map +1 -1
  37. package/dist/plugin-topology.d.ts +6 -2
  38. package/dist/plugin-topology.d.ts.map +1 -1
  39. package/dist/plugin-topology.js +6 -4
  40. package/dist/plugin-topology.js.map +1 -1
  41. package/dist/plugin.d.ts +20 -14
  42. package/dist/plugin.d.ts.map +1 -1
  43. package/dist/plugin.js +53 -72
  44. package/dist/plugin.js.map +1 -1
  45. package/dist/{service-helpers.d.ts → services-helpers.d.ts} +2 -2
  46. package/dist/services-helpers.d.ts.map +1 -0
  47. package/dist/{service-helpers.js → services-helpers.js} +2 -2
  48. package/dist/{service-helpers.js.map → services-helpers.js.map} +1 -1
  49. package/dist/{service.d.ts → services.d.ts} +43 -9
  50. package/dist/services.d.ts.map +1 -0
  51. package/dist/{service.js → services.js} +34 -11
  52. package/dist/services.js.map +1 -0
  53. package/dist/types/app.d.ts +8 -8
  54. package/dist/types/app.d.ts.map +1 -1
  55. package/dist/types/contributions.d.ts +3 -0
  56. package/dist/types/contributions.d.ts.map +1 -0
  57. package/dist/types/contributions.js +10 -0
  58. package/dist/types/contributions.js.map +1 -0
  59. package/dist/types/events.d.ts +44 -0
  60. package/dist/types/events.d.ts.map +1 -0
  61. package/dist/types/events.js +6 -0
  62. package/dist/types/events.js.map +1 -0
  63. package/dist/types/hooks.d.ts +8 -0
  64. package/dist/types/hooks.d.ts.map +1 -1
  65. package/dist/types/index.d.ts +5 -3
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/dist/types/index.js +8 -6
  68. package/dist/types/index.js.map +1 -1
  69. package/dist/types/plugin.d.ts +12 -4
  70. package/dist/types/plugin.d.ts.map +1 -1
  71. package/dist/types/plugin.js.map +1 -1
  72. package/dist/types/services.d.ts +4 -0
  73. package/dist/types/services.d.ts.map +1 -1
  74. package/package.json +1 -1
  75. package/dist/constants.d.ts +0 -31
  76. package/dist/constants.d.ts.map +0 -1
  77. package/dist/constants.js +0 -36
  78. package/dist/constants.js.map +0 -1
  79. package/dist/i18n.d.ts +0 -6
  80. package/dist/i18n.d.ts.map +0 -1
  81. package/dist/i18n.js +0 -26
  82. package/dist/i18n.js.map +0 -1
  83. package/dist/identity.d.ts +0 -26
  84. package/dist/identity.d.ts.map +0 -1
  85. package/dist/identity.js +0 -36
  86. package/dist/identity.js.map +0 -1
  87. package/dist/init.d.ts +0 -20
  88. package/dist/init.d.ts.map +0 -1
  89. package/dist/init.js +0 -455
  90. package/dist/init.js.map +0 -1
  91. package/dist/llm-router.d.ts.map +0 -1
  92. package/dist/llm-router.js +0 -123
  93. package/dist/llm-router.js.map +0 -1
  94. package/dist/marketplace-bootstrap.d.ts +0 -54
  95. package/dist/marketplace-bootstrap.d.ts.map +0 -1
  96. package/dist/marketplace-bootstrap.js +0 -132
  97. package/dist/marketplace-bootstrap.js.map +0 -1
  98. package/dist/mixin-registry.d.ts +0 -34
  99. package/dist/mixin-registry.d.ts.map +0 -1
  100. package/dist/mixin-registry.js +0 -60
  101. package/dist/mixin-registry.js.map +0 -1
  102. package/dist/model-ref.d.ts +0 -22
  103. package/dist/model-ref.d.ts.map +0 -1
  104. package/dist/model-ref.js +0 -46
  105. package/dist/model-ref.js.map +0 -1
  106. package/dist/pending-buffer.d.ts +0 -46
  107. package/dist/pending-buffer.d.ts.map +0 -1
  108. package/dist/pending-buffer.js +0 -131
  109. package/dist/pending-buffer.js.map +0 -1
  110. package/dist/platform-registry.d.ts +0 -40
  111. package/dist/platform-registry.d.ts.map +0 -1
  112. package/dist/platform-registry.js +0 -64
  113. package/dist/platform-registry.js.map +0 -1
  114. package/dist/semver-mini.d.ts +0 -20
  115. package/dist/semver-mini.d.ts.map +0 -1
  116. package/dist/semver-mini.js +0 -94
  117. package/dist/semver-mini.js.map +0 -1
  118. package/dist/service-helpers.d.ts.map +0 -1
  119. package/dist/service.d.ts.map +0 -1
  120. package/dist/service.js.map +0 -1
  121. package/dist/types/agent.d.ts +0 -51
  122. package/dist/types/agent.d.ts.map +0 -1
  123. package/dist/types/agent.js +0 -3
  124. package/dist/types/agent.js.map +0 -1
  125. package/dist/types/archive.d.ts +0 -59
  126. package/dist/types/archive.d.ts.map +0 -1
  127. package/dist/types/archive.js +0 -16
  128. package/dist/types/archive.js.map +0 -1
  129. package/dist/types/authority.d.ts +0 -63
  130. package/dist/types/authority.d.ts.map +0 -1
  131. package/dist/types/authority.js +0 -3
  132. package/dist/types/authority.js.map +0 -1
  133. package/dist/types/capabilities.d.ts +0 -53
  134. package/dist/types/capabilities.d.ts.map +0 -1
  135. package/dist/types/capabilities.js +0 -87
  136. package/dist/types/capabilities.js.map +0 -1
  137. package/dist/types/cli.d.ts +0 -14
  138. package/dist/types/cli.d.ts.map +0 -1
  139. package/dist/types/cli.js +0 -3
  140. package/dist/types/cli.js.map +0 -1
  141. package/dist/types/commands.d.ts +0 -98
  142. package/dist/types/commands.d.ts.map +0 -1
  143. package/dist/types/commands.js +0 -3
  144. package/dist/types/commands.js.map +0 -1
  145. package/dist/types/core.d.ts +0 -116
  146. package/dist/types/core.d.ts.map +0 -1
  147. package/dist/types/core.js +0 -6
  148. package/dist/types/core.js.map +0 -1
  149. package/dist/types/embedding.d.ts +0 -7
  150. package/dist/types/embedding.d.ts.map +0 -1
  151. package/dist/types/embedding.js +0 -3
  152. package/dist/types/embedding.js.map +0 -1
  153. package/dist/types/flow-control.d.ts +0 -51
  154. package/dist/types/flow-control.d.ts.map +0 -1
  155. package/dist/types/flow-control.js +0 -12
  156. package/dist/types/flow-control.js.map +0 -1
  157. package/dist/types/gateway.d.ts +0 -24
  158. package/dist/types/gateway.d.ts.map +0 -1
  159. package/dist/types/gateway.js +0 -15
  160. package/dist/types/gateway.js.map +0 -1
  161. package/dist/types/image-recognition.d.ts +0 -123
  162. package/dist/types/image-recognition.d.ts.map +0 -1
  163. package/dist/types/image-recognition.js +0 -31
  164. package/dist/types/image-recognition.js.map +0 -1
  165. package/dist/types/llm.d.ts +0 -146
  166. package/dist/types/llm.d.ts.map +0 -1
  167. package/dist/types/llm.js +0 -27
  168. package/dist/types/llm.js.map +0 -1
  169. package/dist/types/memory.d.ts +0 -62
  170. package/dist/types/memory.d.ts.map +0 -1
  171. package/dist/types/memory.js +0 -22
  172. package/dist/types/memory.js.map +0 -1
  173. package/dist/types/persona.d.ts +0 -45
  174. package/dist/types/persona.d.ts.map +0 -1
  175. package/dist/types/persona.js +0 -3
  176. package/dist/types/persona.js.map +0 -1
  177. package/dist/types/platform.d.ts +0 -126
  178. package/dist/types/platform.d.ts.map +0 -1
  179. package/dist/types/platform.js +0 -5
  180. package/dist/types/platform.js.map +0 -1
  181. package/dist/types/service.d.ts +0 -41
  182. package/dist/types/service.d.ts.map +0 -1
  183. package/dist/types/service.js +0 -35
  184. package/dist/types/service.js.map +0 -1
  185. package/dist/types/session.d.ts +0 -153
  186. package/dist/types/session.d.ts.map +0 -1
  187. package/dist/types/session.js +0 -19
  188. package/dist/types/session.js.map +0 -1
  189. package/dist/types/storage.d.ts +0 -100
  190. package/dist/types/storage.d.ts.map +0 -1
  191. package/dist/types/storage.js +0 -29
  192. package/dist/types/storage.js.map +0 -1
  193. package/dist/types/tools.d.ts +0 -39
  194. package/dist/types/tools.d.ts.map +0 -1
  195. package/dist/types/tools.js +0 -3
  196. package/dist/types/tools.js.map +0 -1
  197. package/dist/types/trigger-policy.d.ts +0 -16
  198. package/dist/types/trigger-policy.d.ts.map +0 -1
  199. package/dist/types/trigger-policy.js +0 -6
  200. package/dist/types/trigger-policy.js.map +0 -1
  201. package/dist/types/vectorstore.d.ts +0 -23
  202. package/dist/types/vectorstore.d.ts.map +0 -1
  203. package/dist/types/vectorstore.js +0 -3
  204. package/dist/types/vectorstore.js.map +0 -1
  205. package/dist/types/web-search.d.ts +0 -88
  206. package/dist/types/web-search.d.ts.map +0 -1
  207. package/dist/types/web-search.js +0 -23
  208. package/dist/types/web-search.js.map +0 -1
  209. package/dist/types/webui.d.ts +0 -137
  210. package/dist/types/webui.d.ts.map +0 -1
  211. package/dist/types/webui.js +0 -3
  212. package/dist/types/webui.js.map +0 -1
@@ -1,123 +0,0 @@
1
- import type { IncomingMessage } from './core.js';
2
- /** 图像识别处理消息的输入 */
3
- export interface ImageRecognitionInput {
4
- /** 文本内容 */
5
- content: string;
6
- /** 图片列表(URL / data URI / 本地路径) */
7
- images: string[];
8
- /** 可选:当前消息、引用消息或最近上下文,用于指导图片识别重点 */
9
- context?: string;
10
- /** 可选:附件出现顺序,用于在 transformedContent 中保留图文混排 */
11
- attachmentOrder?: Array<'image' | 'file'>;
12
- }
13
- /** 图像识别上下文构造选项 */
14
- export interface ImageRecognitionContextOptions {
15
- /** 最近前文条数,默认由实现决定 */
16
- beforeLimit?: number;
17
- }
18
- /** 图像识别处理消息的结果 */
19
- export interface ImageRecognitionResult {
20
- /** 原始 content(便于下游比对) */
21
- content: string;
22
- /** 各图片对应的描述 */
23
- imageDescriptions?: string[];
24
- /** 处理信息(用于日志/归档) */
25
- info: {
26
- imageCount: number;
27
- successCount: number;
28
- descriptions: string[];
29
- /** 替换掉图片占位后的文本(如 "[图片: xxx描述]" 形式) */
30
- transformedContent: string;
31
- };
32
- }
33
- /**
34
- * 图像识别服务
35
- *
36
- * 内置能力(`ImageRecognitionCapabilityRegistry`):
37
- * - `describe`: 单张图片描述
38
- * - `process-message`: 整条消息批处理(图文混排)
39
- * - `build-context`: 为图片识别构造上下文
40
- * - `animated`: 支持 GIF/视频帧提取与综合描述
41
- *
42
- * 第三方可扩展能力:
43
- * ```ts
44
- * declare module '@aalis/core' {
45
- * interface ImageRecognitionCapabilityRegistry {
46
- * Ocr: 'ocr';
47
- * ObjectDetection: 'object_detection';
48
- * }
49
- * }
50
- * ```
51
- */
52
- export interface ImageRecognitionService {
53
- /** 当前是否可用(如 LLM 尚未就绪时为 false) */
54
- readonly available: boolean;
55
- /**
56
- * 当前是否处于「本插件主动识别」模式
57
- *
58
- * - true:识别后把图片替换为文字描述交给主 Agent
59
- * - false:直接把图片原样透传给主 Agent(要求主模型具备 vision 能力)
60
- */
61
- readonly enabled: boolean;
62
- /**
63
- * 描述单张图片,返回文字描述。失败/不可用时返回空串。
64
- * @param imageUrl 图片 URL 或 data URI
65
- * @param localRefPath 可选的本地缓存文件路径(用于动图帧提取等)
66
- */
67
- describe(imageUrl: string, localRefPath?: string): Promise<string>;
68
- /**
69
- * 对整条含图消息做批处理:识别所有图片并返回处理结果。
70
- * 不可用或 images 为空时返回 null。
71
- */
72
- processMessage(input: ImageRecognitionInput): Promise<ImageRecognitionResult | null>;
73
- /**
74
- * 为含图消息构造视觉识别上下文。
75
- * 实现应把上下文作为识别线索,而不是覆盖图片事实的强约束。
76
- */
77
- buildContext?(message: IncomingMessage, options?: ImageRecognitionContextOptions): Promise<string>;
78
- /**
79
- * 查询已缓存的图片描述(不会触发识别)。未命中返回 null。
80
- * 用于引用回复等场景:同一张图片在主消息流程中被识别过后,可以免费复用。
81
- */
82
- lookupDescription?(imageUrl: string): string | null;
83
- }
84
- /**
85
- * 图像识别服务能力注册表
86
- *
87
- * 第三方可通过 declaration merging 追加:
88
- * ```ts
89
- * declare module '@aalis/core' {
90
- * interface ImageRecognitionCapabilityRegistry {
91
- * Ocr: 'ocr';
92
- * }
93
- * }
94
- * ```
95
- */
96
- export interface ImageRecognitionCapabilityRegistry {
97
- /** 单图描述 */
98
- Describe: 'describe';
99
- /** 批处理整条消息(含图文混排) */
100
- ProcessMessage: 'process-message';
101
- /** 构造图片识别上下文 */
102
- BuildContext: 'build-context';
103
- /** 支持动图/视频帧提取 */
104
- Animated: 'animated';
105
- /** 描述缓存查询 */
106
- DescriptionCache: 'description-cache';
107
- }
108
- /** 图像识别能力字符串 union(自动包含第三方扩展) */
109
- export type ImageRecognitionCapability = ImageRecognitionCapabilityRegistry[keyof ImageRecognitionCapabilityRegistry];
110
- /** 图像识别内置能力常量 */
111
- export declare const ImageRecognitionCapabilities: {
112
- readonly Describe: "describe";
113
- readonly ProcessMessage: "process-message";
114
- readonly BuildContext: "build-context";
115
- readonly Animated: "animated";
116
- readonly DescriptionCache: "description-cache";
117
- };
118
- declare module './capabilities.js' {
119
- interface ServiceCapabilityMap {
120
- 'image-recognition': ImageRecognitionCapability;
121
- }
122
- }
123
- //# sourceMappingURL=image-recognition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-recognition.d.ts","sourceRoot":"","sources":["../../src/types/image-recognition.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,kBAAkB;AAClB,MAAM,WAAW,qBAAqB;IACpC,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;CAC3C;AAED,kBAAkB;AAClB,MAAM,WAAW,8BAA8B;IAC7C,qBAAqB;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,kBAAkB;AAClB,MAAM,WAAW,sBAAsB;IACrC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,oBAAoB;IACpB,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,sCAAsC;QACtC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnE;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAErF;;;OAGG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,8BAA8B,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnG;;;OAGG;IACH,iBAAiB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACrD;AAID;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kCAAkC;IACjD,WAAW;IACX,QAAQ,EAAE,UAAU,CAAC;IACrB,qBAAqB;IACrB,cAAc,EAAE,iBAAiB,CAAC;IAClC,gBAAgB;IAChB,YAAY,EAAE,eAAe,CAAC;IAC9B,iBAAiB;IACjB,QAAQ,EAAE,UAAU,CAAC;IACrB,aAAa;IACb,gBAAgB,EAAE,mBAAmB,CAAC;CACvC;AAED,iCAAiC;AACjC,MAAM,MAAM,0BAA0B,GAAG,kCAAkC,CAAC,MAAM,kCAAkC,CAAC,CAAC;AAEtH,iBAAiB;AACjB,eAAO,MAAM,4BAA4B;;;;;;CAMc,CAAC;AAExD,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAU,oBAAoB;QAC5B,mBAAmB,EAAE,0BAA0B,CAAC;KACjD;CACF"}
@@ -1,31 +0,0 @@
1
- // ----- 图像识别服务接口 -----
2
- //
3
- // 由 plugin-image-recognition 等插件实现。其他插件(如 plugin-message-archive、
4
- // plugin-memory-summary)通过 `ctx.getService<ImageRecognitionService>('image-recognition')`
5
- // 消费该服务,无需依赖具体实现。
6
- //
7
- // 第三方若要实现替代方案(如调用专用视觉 API),只需满足本接口即可。
8
- /** 图像识别内置能力常量 */
9
- export const ImageRecognitionCapabilities = {
10
- Describe: 'describe',
11
- ProcessMessage: 'process-message',
12
- BuildContext: 'build-context',
13
- Animated: 'animated',
14
- DescriptionCache: 'description-cache',
15
- };
16
- // 注册能力↔方法探测器
17
- import { registerCapabilityProbe } from './capabilities.js';
18
- registerCapabilityProbe('image-recognition', ImageRecognitionCapabilities.Describe, inst => typeof inst.describe === 'function'
19
- ? true
20
- : 'ImageRecognitionService.describe() is required for capability "describe"');
21
- registerCapabilityProbe('image-recognition', ImageRecognitionCapabilities.ProcessMessage, inst => typeof inst.processMessage === 'function'
22
- ? true
23
- : 'ImageRecognitionService.processMessage() is required for capability "process-message"');
24
- registerCapabilityProbe('image-recognition', ImageRecognitionCapabilities.BuildContext, inst => typeof inst.buildContext === 'function'
25
- ? true
26
- : 'ImageRecognitionService.buildContext() is required for capability "build-context"');
27
- registerCapabilityProbe('image-recognition', ImageRecognitionCapabilities.DescriptionCache, inst => typeof inst.lookupDescription === 'function'
28
- ? true
29
- : 'ImageRecognitionService.lookupDescription() is required for capability "description-cache"');
30
- // Animated 为配置/运行时开关,无固定方法签名,不做探测。
31
- //# sourceMappingURL=image-recognition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-recognition.js","sourceRoot":"","sources":["../../src/types/image-recognition.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,EAAE;AACF,kEAAkE;AAClE,0FAA0F;AAC1F,kBAAkB;AAClB,EAAE;AACF,sCAAsC;AA4HtC,iBAAiB;AACjB,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,QAAQ,EAAE,UAAU;IACpB,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,UAAU;IACpB,gBAAgB,EAAE,mBAAmB;CACgB,CAAC;AAQxD,aAAa;AACb,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,uBAAuB,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CACzF,OAAQ,IAA+B,CAAC,QAAQ,KAAK,UAAU;IAC7D,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,0EAA0E,CAAC,CAAC;AAElF,uBAAuB,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAC/F,OAAQ,IAAqC,CAAC,cAAc,KAAK,UAAU;IACzE,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,uFAAuF,CAAC,CAAC;AAE/F,uBAAuB,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAC7F,OAAQ,IAAmC,CAAC,YAAY,KAAK,UAAU;IACrE,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,mFAAmF,CAAC,CAAC;AAE3F,uBAAuB,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CACjG,OAAQ,IAAwC,CAAC,iBAAiB,KAAK,UAAU;IAC/E,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,4FAA4F,CAAC,CAAC;AAEpG,mCAAmC"}
@@ -1,146 +0,0 @@
1
- import type { Message, ToolDefinition, ToolCall } from './core.js';
2
- export interface ChatRequest {
3
- messages: Message[];
4
- tools?: ToolDefinition[];
5
- temperature?: number;
6
- maxTokens?: number;
7
- /** 覆盖模型(不指定则使用服务默认模型) */
8
- model?: string;
9
- /**
10
- * 精确指定 provider(contextId / instanceId,如 `@aalis/plugin-openai`)。
11
- *
12
- * - 指定时 LLMRouter 直接路由到该 provider,不再依赖 model id 的全局唯一性
13
- * - 未指定时 router 退化为"在所有 provider 的 listModels 中查找该 model id",
14
- * 命中多个 / 零个均会抛错
15
- * - 这是解决"多个 provider 都声称支持同名 model"歧义的唯一正确手段
16
- *
17
- * 推荐通过 `parseModelRef("<provider>::<model>")` 从配置/UI 取值。
18
- */
19
- provider?: string;
20
- /** 中止信号,用于取消正在进行的 LLM 调用 */
21
- signal?: AbortSignal;
22
- /** 是否启用扩展思考。设为 false 可显式关闭提供者默认的 think 模式 */
23
- think?: boolean;
24
- }
25
- export interface ChatResponse {
26
- content: string | null;
27
- toolCalls?: ToolCall[];
28
- reasoningContent?: string | null;
29
- usage?: {
30
- promptTokens: number;
31
- completionTokens: number;
32
- totalTokens: number;
33
- };
34
- }
35
- /** 流式响应的单个 chunk */
36
- export interface ChatStreamChunk {
37
- /** 增量内容片段 */
38
- contentDelta?: string;
39
- /** 增量思考内容片段 */
40
- reasoningDelta?: string;
41
- /** 工具调用(仅在流结束时出现) */
42
- toolCalls?: ToolCall[];
43
- /** 是否结束 */
44
- done?: boolean;
45
- /** 用量统计(仅在最后一个 chunk 可能包含) */
46
- usage?: {
47
- promptTokens: number;
48
- completionTokens: number;
49
- totalTokens: number;
50
- };
51
- }
52
- /** 模型信息(含能力声明)。router 聚合后的条目会携带 provider/contextId 归属。 */
53
- export interface ModelInfo {
54
- id: string;
55
- capabilities: LLMCapability[];
56
- /** router 聚合时填充(展示用 label 或 instanceId) */
57
- provider?: string;
58
- /** router 聚合时填充(用于精确定位提供者) */
59
- contextId?: string;
60
- /**
61
- * 模型上下文窗口大小(token)。provider 在 listModels() 中填入该模型的真实窗口,
62
- * 调用方(如 memory-summary)可据此为不同模型计算合适的 token 预算。
63
- * 未提供时调用方应回退到 LLMService.getContextLength()。
64
- */
65
- contextLength?: number;
66
- }
67
- export interface LLMService {
68
- chat(request: ChatRequest): Promise<ChatResponse>;
69
- chatStream(request: ChatRequest): AsyncIterable<ChatStreamChunk>;
70
- getTemperature(): number;
71
- getMaxTokens(): number;
72
- /** 模型上下文窗口大小(token 数) */
73
- getContextLength(): number;
74
- /**
75
- * 列出该 provider 推荐展示给用户的模型集合。
76
- *
77
- * - WebUI 下拉框、各插件 dynamicOptions:'llm' 的候选来源
78
- * - 同时也是 LLMRouter 在仅指定 model 不指定 provider 时的定位依据
79
- * (在哪个 provider 的 listModels 里 → 归该 provider)
80
- * - 如果 provider 希望支持“任意 model id 直通”(OpenAI 兼容 endpoint 通配),
81
- * 用户需显式指定 `request.provider`;Router 不会仅凭 model id 猜测。
82
- */
83
- listModels?(): Promise<ModelInfo[]>;
84
- /**
85
- * 提供者自报默认模型 ID。
86
- * LLMRouter 在用户未指定 `model` 时可参考此值。
87
- */
88
- getDefaultModelId?(): string | undefined;
89
- }
90
- /**
91
- * LLM 服务能力注册表
92
- *
93
- * 第三方插件可通过 declaration merging 追加新能力:
94
- *
95
- * ```ts
96
- * declare module '@aalis/core' {
97
- * interface LLMCapabilityRegistry {
98
- * AudioInput: 'audio_input';
99
- * FimCompletion: 'fim_completion';
100
- * }
101
- * }
102
- * ```
103
- *
104
- * 然后在自己的 LLM 服务里:
105
- * ```ts
106
- * ctx.provide('llm', service, { capabilities: ['chat', 'audio_input'] });
107
- * ```
108
- */
109
- export interface LLMCapabilityRegistry {
110
- /** 基础对话能力(必备) */
111
- Chat: 'chat';
112
- /** 支持工具调用 / function calling */
113
- ToolCalling: 'tool_calling';
114
- /** 支持流式输出 */
115
- Streaming: 'streaming';
116
- /** 支持图像输入(多模态) */
117
- Vision: 'vision';
118
- /** 支持扩展思考 / reasoning */
119
- Thinking: 'thinking';
120
- /** 路由器 facade(按 model id 查找提供者,不提供 chat) */
121
- Router: 'router';
122
- }
123
- /** LLM 能力字符串 union(自动包含第三方扩展) */
124
- export type LLMCapability = LLMCapabilityRegistry[keyof LLMCapabilityRegistry];
125
- /**
126
- * LLM 内置能力常量
127
- *
128
- * 用于注册时引用,避免 magic string 拼写错误:
129
- * ```ts
130
- * ctx.provide('llm', service, { capabilities: [LLMCapabilities.Chat, LLMCapabilities.Streaming] });
131
- * ```
132
- */
133
- export declare const LLMCapabilities: {
134
- readonly Chat: "chat";
135
- readonly ToolCalling: "tool_calling";
136
- readonly Streaming: "streaming";
137
- readonly Vision: "vision";
138
- readonly Thinking: "thinking";
139
- readonly Router: "router";
140
- };
141
- declare module './capabilities.js' {
142
- interface ServiceCapabilityMap {
143
- llm: LLMCapability;
144
- }
145
- }
146
- //# sourceMappingURL=llm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/types/llm.ts"],"names":[],"mappings":"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"}
package/dist/types/llm.js DELETED
@@ -1,27 +0,0 @@
1
- // ----- LLM 服务接口 -----
2
- /**
3
- * LLM 内置能力常量
4
- *
5
- * 用于注册时引用,避免 magic string 拼写错误:
6
- * ```ts
7
- * ctx.provide('llm', service, { capabilities: [LLMCapabilities.Chat, LLMCapabilities.Streaming] });
8
- * ```
9
- */
10
- export const LLMCapabilities = {
11
- Chat: 'chat',
12
- ToolCalling: 'tool_calling',
13
- Streaming: 'streaming',
14
- Vision: 'vision',
15
- Thinking: 'thinking',
16
- Router: 'router',
17
- };
18
- // 注册能力↔方法探测器(dev 模式下在 ctx.provide 时校验)
19
- import { registerCapabilityProbe } from './capabilities.js';
20
- registerCapabilityProbe('llm', LLMCapabilities.Chat, inst => typeof inst.chat === 'function'
21
- ? true
22
- : 'LLMService.chat() is required for capability "chat"');
23
- registerCapabilityProbe('llm', LLMCapabilities.Streaming, inst => typeof inst.chatStream === 'function'
24
- ? true
25
- : 'LLMService.chatStream() is required for capability "streaming"');
26
- // ToolCalling / Vision / Thinking 为参数层能力,由调用方按请求传参判定,不做方法探测。
27
- //# sourceMappingURL=llm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/types/llm.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAwIvB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,cAAc;IAC3B,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;CACwB,CAAC;AAS3C,uCAAuC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAC1D,OAAQ,IAA2B,CAAC,IAAI,KAAK,UAAU;IACrD,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,qDAAqD,CAAC,CAAC;AAE7D,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAC/D,OAAQ,IAAiC,CAAC,UAAU,KAAK,UAAU;IACjE,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,gEAAgE,CAAC,CAAC;AAExE,6DAA6D"}
@@ -1,62 +0,0 @@
1
- import type { Message } from './core.js';
2
- export interface MemoryService {
3
- saveMessage(sessionId: string, message: Message): Promise<void>;
4
- getHistory(sessionId: string, limit?: number): Promise<Message[]>;
5
- clearSession(sessionId: string): Promise<void>;
6
- /** 清空所有会话的所有消息和归档 */
7
- clearAll?(): Promise<void>;
8
- /** 归档旧消息,仅保留最近 keepRecent 条为活跃状态,返回被归档的条数 */
9
- trimHistory?(sessionId: string, keepRecent: number): Promise<number>;
10
- /** 获取完整历史(含已归档消息),用于 UI 展示 */
11
- getFullHistory?(sessionId: string, limit?: number): Promise<Message[]>;
12
- /** 范围查询:取指定会话内 [fromTs, toTs] 区间的消息(按时间升序,可按 role 过滤) */
13
- getMessagesBySessionRange?(sessionId: string, fromTs: number, toTs: number, roles?: Array<Message['role']>): Promise<Message[]>;
14
- /** 保存结构化元数据(namespace 隔离,key 唯一) */
15
- saveMetadata?(namespace: string, key: string, data: Record<string, unknown>): Promise<void>;
16
- /** 读取元数据 */
17
- getMetadata?(namespace: string, key: string): Promise<Record<string, unknown> | undefined>;
18
- /** 列出指定 namespace 下所有元数据条目 */
19
- listMetadata?(namespace: string): Promise<Array<{
20
- key: string;
21
- data: Record<string, unknown>;
22
- }>>;
23
- /** 删除元数据条目 */
24
- deleteMetadata?(namespace: string, key: string): Promise<void>;
25
- /** 在指定会话的最近 N 条消息中,将 content 里的 oldText 替换为 newText,返回受影响的条数 */
26
- updateMessageContent?(sessionId: string, oldText: string, newText: string, recentLimit?: number): Promise<number>;
27
- /** 按时间戳批量删除指定会话的消息(用于回滚整轮对话),返回实际删除条数 */
28
- deleteMessagesByTimestamps?(sessionId: string, timestamps: number[]): Promise<number>;
29
- }
30
- /**
31
- * 记忆服务能力注册表
32
- *
33
- * 第三方可扩展:
34
- * ```ts
35
- * declare module '@aalis/core' {
36
- * interface MemoryCapabilityRegistry { Persistent: 'persistent'; Encrypted: 'encrypted'; }
37
- * }
38
- * ```
39
- */
40
- export interface MemoryCapabilityRegistry {
41
- /** 基础的消息历史保存/读取 */
42
- History: 'history';
43
- /** 支持结构化元数据存储(saveMetadata 等) */
44
- Metadata: 'metadata';
45
- /** 支持消息内容更新(updateMessageContent) */
46
- ContentUpdate: 'content-update';
47
- /** 支持按时间戳批量删除消息(deleteMessagesByTimestamps) */
48
- MessageDelete: 'message-delete';
49
- }
50
- export type MemoryCapability = MemoryCapabilityRegistry[keyof MemoryCapabilityRegistry];
51
- export declare const MemoryCapabilities: {
52
- readonly History: "history";
53
- readonly Metadata: "metadata";
54
- readonly ContentUpdate: "content-update";
55
- readonly MessageDelete: "message-delete";
56
- };
57
- declare module './capabilities.js' {
58
- interface ServiceCapabilityMap {
59
- memory: MemoryCapability;
60
- }
61
- }
62
- //# sourceMappingURL=memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/types/memory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,qBAAqB;IACrB,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,6CAA6C;IAC7C,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,8BAA8B;IAC9B,cAAc,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAIvE,yDAAyD;IACzD,yBAAyB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAIhI,oCAAoC;IACpC,YAAY,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,YAAY;IACZ,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IAC3F,8BAA8B;IAC9B,YAAY,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC,CAAC;IACjG,cAAc;IACd,cAAc,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D,gEAAgE;IAChE,oBAAoB,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElH,yCAAyC;IACzC,0BAA0B,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvF;AAID;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAwB;IACvC,mBAAmB;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,iCAAiC;IACjC,QAAQ,EAAE,UAAU,CAAC;IACrB,qCAAqC;IACrC,aAAa,EAAE,gBAAgB,CAAC;IAChC,+CAA+C;IAC/C,aAAa,EAAE,gBAAgB,CAAC;CACjC;AAED,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,MAAM,wBAAwB,CAAC,CAAC;AAExF,eAAO,MAAM,kBAAkB;;;;;CAKc,CAAC;AAE9C,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAU,oBAAoB;QAC5B,MAAM,EAAE,gBAAgB,CAAC;KAC1B;CACF"}
@@ -1,22 +0,0 @@
1
- // ----- 记忆服务接口 -----
2
- export const MemoryCapabilities = {
3
- History: 'history',
4
- Metadata: 'metadata',
5
- ContentUpdate: 'content-update',
6
- MessageDelete: 'message-delete',
7
- };
8
- import { registerCapabilityProbe } from './capabilities.js';
9
- registerCapabilityProbe('memory', MemoryCapabilities.History, inst => typeof inst.getHistory === 'function'
10
- && typeof inst.saveMessage === 'function'
11
- ? true
12
- : 'MemoryService.saveMessage()/getHistory() are required for capability "history"');
13
- registerCapabilityProbe('memory', MemoryCapabilities.Metadata, inst => typeof inst.saveMetadata === 'function'
14
- ? true
15
- : 'MemoryService.saveMetadata() is required for capability "metadata"');
16
- registerCapabilityProbe('memory', MemoryCapabilities.ContentUpdate, inst => typeof inst.updateMessageContent === 'function'
17
- ? true
18
- : 'MemoryService.updateMessageContent() is required for capability "content-update"');
19
- registerCapabilityProbe('memory', MemoryCapabilities.MessageDelete, inst => typeof inst.deleteMessagesByTimestamps === 'function'
20
- ? true
21
- : 'MemoryService.deleteMessagesByTimestamps() is required for capability "message-delete"');
22
- //# sourceMappingURL=memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/types/memory.ts"],"names":[],"mappings":"AAAA,qBAAqB;AA+DrB,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,gBAAgB;IAC/B,aAAa,EAAE,gBAAgB;CACY,CAAC;AAQ9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CACnE,OAAQ,IAAiC,CAAC,UAAU,KAAK,UAAU;OAC9D,OAAQ,IAAkC,CAAC,WAAW,KAAK,UAAU;IACxE,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,gFAAgF,CAAC,CAAC;AAExF,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CACpE,OAAQ,IAAmC,CAAC,YAAY,KAAK,UAAU;IACrE,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,oEAAoE,CAAC,CAAC;AAE5E,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CACzE,OAAQ,IAA2C,CAAC,oBAAoB,KAAK,UAAU;IACrF,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,kFAAkF,CAAC,CAAC;AAE1F,uBAAuB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CACzE,OAAQ,IAAiD,CAAC,0BAA0B,KAAK,UAAU;IACjG,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,wFAAwF,CAAC,CAAC"}
@@ -1,45 +0,0 @@
1
- /** 输出格式中单个字段的定义 */
2
- export interface OutputFormatField {
3
- /** 字段用途描述(写入 system prompt 供 LLM 理解) */
4
- description: string;
5
- /** 字段类型(影响 system prompt 占位符和输出后的类型强制) */
6
- type?: 'string' | 'number' | 'boolean';
7
- /** 是否为发送给用户的回复字段(有且仅有一个) */
8
- reply?: boolean;
9
- }
10
- /** 角色卡定义的结构化输出格式 */
11
- export interface OutputFormat {
12
- /** 字段定义表:key = JSON 字段名 */
13
- fields: Record<string, OutputFormatField>;
14
- /** 回复字段名(自动推断,取 reply: true 的那个 key) */
15
- replyField: string;
16
- }
17
- /**
18
- * 会话级选项,由调用方(如 agent-default)从 SessionConfig 构造后传入。
19
- * PersonaService 本身不关心 session-manager,只根据传入的选项调整行为。
20
- */
21
- export interface PersonaSessionOptions {
22
- /** 覆盖角色卡名称 */
23
- persona?: string;
24
- /** 禁用结构化输出格式 */
25
- disableOutputFormat?: boolean;
26
- /** 客户端渲染 JSON 覆盖 */
27
- clientSideJsonRendering?: boolean;
28
- }
29
- export interface PersonaService {
30
- getSystemPrompt(options?: PersonaSessionOptions): string;
31
- getPersonaName(): string;
32
- /** 获取角色卡定义的结构化输出格式,无定义时返回 undefined */
33
- getOutputFormat?(options?: PersonaSessionOptions): OutputFormat | undefined;
34
- /** 该角色卡是否配置为客户端渲染 JSON */
35
- isClientSideJsonRendering?(options?: PersonaSessionOptions): boolean;
36
- /** 列出可用的人设卡(用于前端下拉框) */
37
- listModels?(): Promise<string[]>;
38
- /** 获取角色卡定义的昵称列表(用于触发检测) */
39
- getNickNames?(): string[];
40
- /** 获取角色卡定义的禁言关键词列表 */
41
- getMuteKeywords?(): string[];
42
- /** 是否启用了时间注入(供其他插件判断是否需要注册时间相关工具) */
43
- isTimeInjectionEnabled?(): boolean;
44
- }
45
- //# sourceMappingURL=persona.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../src/types/persona.ts"],"names":[],"mappings":"AAEA,mBAAmB;AACnB,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,oBAAoB;AACpB,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,cAAc;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB;IACpB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC;IACzD,cAAc,IAAI,MAAM,CAAC;IACzB,uCAAuC;IACvC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,YAAY,GAAG,SAAS,CAAC;IAC5E,0BAA0B;IAC1B,yBAAyB,CAAC,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC;IACrE,wBAAwB;IACxB,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,2BAA2B;IAC3B,YAAY,CAAC,IAAI,MAAM,EAAE,CAAC;IAC1B,sBAAsB;IACtB,eAAe,CAAC,IAAI,MAAM,EAAE,CAAC;IAC7B,qCAAqC;IACrC,sBAAsB,CAAC,IAAI,OAAO,CAAC;CACpC"}
@@ -1,3 +0,0 @@
1
- // ----- 人格服务接口 -----
2
- export {};
3
- //# sourceMappingURL=persona.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persona.js","sourceRoot":"","sources":["../../src/types/persona.ts"],"names":[],"mappings":"AAAA,qBAAqB"}
@@ -1,126 +0,0 @@
1
- /** 单个平台连接的状态 */
2
- export interface PlatformConnection {
3
- /** 连接唯一标识 */
4
- id: string;
5
- /** 平台名称 (如 'cli', 'webui', 'onebot') */
6
- platform: string;
7
- /** 机器人自身 ID(仅协议平台使用) */
8
- selfId?: string;
9
- /** 机器人自身昵称/显示名(仅协议平台使用) */
10
- selfNickname?: string;
11
- /** 连接状态 */
12
- status: 'online' | 'offline' | 'connecting';
13
- /** 额外信息 (如 OneBot 的实现名称、版本等) */
14
- detail?: Record<string, unknown>;
15
- }
16
- /** 平台自身身份(机器人/账号),用于 prompt 注入和历史消息归档 */
17
- export interface PlatformSelfIdentity {
18
- /** 平台名称 (如 'onebot', 'cli', 'webui') */
19
- platform: string;
20
- /** 平台账号 ID(协议平台通常可用) */
21
- selfId?: string;
22
- /** 平台账号昵称/显示名 */
23
- nickname?: string;
24
- }
25
- /**
26
- * 平台适配器 —— 每个平台插件实现此接口
27
- *
28
- * 提供统一的平台抽象,使核心可以查询所有已接入平台的连接状态,
29
- * 也使其他插件可以向指定平台发送消息。
30
- *
31
- * 第三方平台接入只需实现此接口并通过 `ctx.provide('platform', adapter)` 注册即可。
32
- */
33
- export interface PlatformAdapter {
34
- /** 适配器显示名称 */
35
- adapterName: string;
36
- /** 平台标识 (如 'cli', 'webui', 'onebot', 'telegram', 'discord') */
37
- platform: string;
38
- /**
39
- * 平台可能发出的 IncomingMessage.sessionType 枚举。
40
- *
41
- * 消费者(如 plugin-flow-control / plugin-trigger-policy)可以从中汇总出
42
- * 真实可选作用域,避免在 UI 上臆造不存在的选项。
43
- *
44
- * 未声明表示适配器不区分 sessionType(如 cli / webui 都是单会话)。
45
- */
46
- sessionTypes?: readonly string[];
47
- /** 获取当前所有连接 */
48
- getConnections(): PlatformConnection[];
49
- /** 向指定 sessionId 发送纯文本消息 */
50
- sendMessage(sessionId: string, content: string, options?: {
51
- skipSplit?: boolean;
52
- }): Promise<void>;
53
- /**
54
- * 判断该 adapter 是否能处理给定 sessionId(**路由用**)。
55
- *
56
- * - PlatformRouter 按 sessionId 路由时枚举所有 adapter 调此方法定位归属
57
- * - 未实现时 router 默认 fallback 为 `sessionId.startsWith(this.platform + ':')`
58
- * —— 适合 sessionId 形如 `<platform>:<...>` 的协议平台(如 onebot)
59
- * - sessionId 不携带 platform 前缀的 adapter(如 cli 的自定义 sessionId)
60
- * **必须**显式实现此方法
61
- *
62
- * 与 LLMService.supportsModel 的设计意图对称:每个 provider 自报"我接不接这个 key",
63
- * router 不假设 key 的格式约定。
64
- */
65
- canHandle?(sessionId: string): boolean | Promise<boolean>;
66
- /** 获取当前平台账号自身身份;多连接平台可用 sessionId 定位具体连接 */
67
- getSelfIdentity?(sessionId?: string): PlatformSelfIdentity | undefined;
68
- /**
69
- * 适配器是否至少有一个可用连接
70
- * 默认实现:检查 getConnections() 中是否有 status === 'online'
71
- */
72
- isReady?(): boolean;
73
- /**
74
- * 调用平台原生 API(可选,由具体适配器实现)
75
- *
76
- * 例如 OneBot 适配器通过此接口调用 set_group_ban 等 Action。
77
- * @param sessionId 用于定位连接的 sessionId
78
- * @param action API 名称
79
- * @param params API 参数
80
- */
81
- callAction?(sessionId: string, action: string, params: Record<string, unknown>): Promise<unknown>;
82
- }
83
- import type { PluginGroupInfo } from './core.js';
84
- /**
85
- * 平台聚合服务 —— 同名 facade,对外暴露为 `'platform'`
86
- *
87
- * 与 storage-router / llm-router 同模式:以 `capability:['router']`
88
- * 注册到 `'platform'` 服务名下,consumer 通过 `ctx.getService('platform')`
89
- * 拿到聚合层;如需访问具体某个 adapter,可用
90
- * `ctx.getService<PlatformAdapter>('platform', ['<platform-name>'])`。
91
- *
92
- * 默认由 plugin-platform 提供。
93
- */
94
- export interface PlatformService {
95
- /** 获取平台子系统的插件分组(基于 provides ∩ inject 自动计算) */
96
- getPluginGroups(): PluginGroupInfo[];
97
- /** 获取所有平台的聚合连接列表 */
98
- getConnections(): PlatformConnection[];
99
- /** 获取所有已注册的平台名称 */
100
- getPlatformNames(): string[];
101
- /** 获取所有合规的平台适配器实例(不含 router 自身) */
102
- getAdapters(): PlatformAdapter[];
103
- /** 获取所有平台适配器及其连接详情 */
104
- getDetails(): Array<{
105
- adapterName: string;
106
- platform: string;
107
- contextId: string;
108
- capabilities: string[];
109
- connections: PlatformConnection[];
110
- }>;
111
- /** 获取指定平台在当前会话中的自身身份 */
112
- getSelfIdentity?(platform: string, sessionId?: string): PlatformSelfIdentity | undefined;
113
- }
114
- export interface PlatformCapabilityRegistry {
115
- Router: 'router';
116
- }
117
- export type PlatformCapability = PlatformCapabilityRegistry[keyof PlatformCapabilityRegistry];
118
- export declare const PlatformCapabilities: {
119
- readonly Router: "router";
120
- };
121
- declare module './capabilities.js' {
122
- interface ServiceCapabilityMap {
123
- platform: PlatformCapability | string;
124
- }
125
- }
126
- //# sourceMappingURL=platform.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/types/platform.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- // ----- 平台适配器接口 -----
2
- export const PlatformCapabilities = {
3
- Router: 'router',
4
- };
5
- //# sourceMappingURL=platform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/types/platform.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAgItB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,QAAQ;CAC6B,CAAC"}