@aalis/core 0.1.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/README.md +21 -0
- package/dist/app.d.ts +166 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +348 -0
- package/dist/app.js.map +1 -0
- package/dist/config.d.ts +174 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +377 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +31 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +36 -0
- package/dist/constants.js.map +1 -0
- package/dist/context.d.ts +328 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +521 -0
- package/dist/context.js.map +1 -0
- package/dist/disposable-chain.d.ts +31 -0
- package/dist/disposable-chain.d.ts.map +1 -0
- package/dist/disposable-chain.js +66 -0
- package/dist/disposable-chain.js.map +1 -0
- package/dist/events.d.ts +64 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +145 -0
- package/dist/events.js.map +1 -0
- package/dist/hooks.d.ts +49 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +102 -0
- package/dist/hooks.js.map +1 -0
- package/dist/i18n.d.ts +6 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +26 -0
- package/dist/i18n.js.map +1 -0
- package/dist/identity.d.ts +26 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +36 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +20 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +455 -0
- package/dist/init.js.map +1 -0
- package/dist/llm-router.d.ts.map +1 -0
- package/dist/llm-router.js +123 -0
- package/dist/llm-router.js.map +1 -0
- package/dist/logger.d.ts +76 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +187 -0
- package/dist/logger.js.map +1 -0
- package/dist/marketplace-bootstrap.d.ts +54 -0
- package/dist/marketplace-bootstrap.d.ts.map +1 -0
- package/dist/marketplace-bootstrap.js +132 -0
- package/dist/marketplace-bootstrap.js.map +1 -0
- package/dist/mixin-registry.d.ts +34 -0
- package/dist/mixin-registry.d.ts.map +1 -0
- package/dist/mixin-registry.js +60 -0
- package/dist/mixin-registry.js.map +1 -0
- package/dist/model-ref.d.ts +22 -0
- package/dist/model-ref.d.ts.map +1 -0
- package/dist/model-ref.js +46 -0
- package/dist/model-ref.js.map +1 -0
- package/dist/pending-buffer.d.ts +46 -0
- package/dist/pending-buffer.d.ts.map +1 -0
- package/dist/pending-buffer.js +131 -0
- package/dist/pending-buffer.js.map +1 -0
- package/dist/platform-registry.d.ts +40 -0
- package/dist/platform-registry.d.ts.map +1 -0
- package/dist/platform-registry.js +64 -0
- package/dist/platform-registry.js.map +1 -0
- package/dist/plugin-activation.d.ts +43 -0
- package/dist/plugin-activation.d.ts.map +1 -0
- package/dist/plugin-activation.js +172 -0
- package/dist/plugin-activation.js.map +1 -0
- package/dist/plugin-topology.d.ts +40 -0
- package/dist/plugin-topology.d.ts.map +1 -0
- package/dist/plugin-topology.js +126 -0
- package/dist/plugin-topology.js.map +1 -0
- package/dist/plugin.d.ts +184 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +549 -0
- package/dist/plugin.js.map +1 -0
- package/dist/providers.d.ts +85 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +2 -0
- package/dist/providers.js.map +1 -0
- package/dist/semver-mini.d.ts +20 -0
- package/dist/semver-mini.d.ts.map +1 -0
- package/dist/semver-mini.js +94 -0
- package/dist/semver-mini.js.map +1 -0
- package/dist/service-helpers.d.ts +34 -0
- package/dist/service-helpers.d.ts.map +1 -0
- package/dist/service-helpers.js +68 -0
- package/dist/service-helpers.js.map +1 -0
- package/dist/service.d.ts +145 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +279 -0
- package/dist/service.js.map +1 -0
- package/dist/types/agent.d.ts +51 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +3 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/app.d.ts +74 -0
- package/dist/types/app.d.ts.map +1 -0
- package/dist/types/app.js +3 -0
- package/dist/types/app.js.map +1 -0
- package/dist/types/archive.d.ts +59 -0
- package/dist/types/archive.d.ts.map +1 -0
- package/dist/types/archive.js +16 -0
- package/dist/types/archive.js.map +1 -0
- package/dist/types/authority.d.ts +63 -0
- package/dist/types/authority.d.ts.map +1 -0
- package/dist/types/authority.js +3 -0
- package/dist/types/authority.js.map +1 -0
- package/dist/types/capabilities.d.ts +53 -0
- package/dist/types/capabilities.d.ts.map +1 -0
- package/dist/types/capabilities.js +87 -0
- package/dist/types/capabilities.js.map +1 -0
- package/dist/types/cli.d.ts +14 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +3 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/commands.d.ts +98 -0
- package/dist/types/commands.d.ts.map +1 -0
- package/dist/types/commands.js +3 -0
- package/dist/types/commands.js.map +1 -0
- package/dist/types/core.d.ts +117 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +6 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/disposable-service.d.ts +31 -0
- package/dist/types/disposable-service.d.ts.map +1 -0
- package/dist/types/disposable-service.js +3 -0
- package/dist/types/disposable-service.js.map +1 -0
- package/dist/types/embedding.d.ts +7 -0
- package/dist/types/embedding.d.ts.map +1 -0
- package/dist/types/embedding.js +3 -0
- package/dist/types/embedding.js.map +1 -0
- package/dist/types/flow-control.d.ts +51 -0
- package/dist/types/flow-control.d.ts.map +1 -0
- package/dist/types/flow-control.js +12 -0
- package/dist/types/flow-control.js.map +1 -0
- package/dist/types/gateway.d.ts +24 -0
- package/dist/types/gateway.d.ts.map +1 -0
- package/dist/types/gateway.js +15 -0
- package/dist/types/gateway.js.map +1 -0
- package/dist/types/hooks.d.ts +3 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/hooks.js +18 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/types/image-recognition.d.ts +123 -0
- package/dist/types/image-recognition.d.ts.map +1 -0
- package/dist/types/image-recognition.js +31 -0
- package/dist/types/image-recognition.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +17 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/llm.d.ts +146 -0
- package/dist/types/llm.d.ts.map +1 -0
- package/dist/types/llm.js +27 -0
- package/dist/types/llm.js.map +1 -0
- package/dist/types/memory.d.ts +62 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +22 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/persona.d.ts +45 -0
- package/dist/types/persona.d.ts.map +1 -0
- package/dist/types/persona.js +3 -0
- package/dist/types/persona.js.map +1 -0
- package/dist/types/platform.d.ts +126 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +5 -0
- package/dist/types/platform.js.map +1 -0
- package/dist/types/plugin.d.ts +84 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +24 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/service.d.ts +43 -0
- package/dist/types/service.d.ts.map +1 -0
- package/dist/types/service.js +38 -0
- package/dist/types/service.js.map +1 -0
- package/dist/types/services.d.ts +17 -0
- package/dist/types/services.d.ts.map +1 -0
- package/dist/types/services.js +41 -0
- package/dist/types/services.js.map +1 -0
- package/dist/types/session.d.ts +153 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +19 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/storage.d.ts +100 -0
- package/dist/types/storage.d.ts.map +1 -0
- package/dist/types/storage.js +29 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/types/tools.d.ts +39 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +3 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/trigger-policy.d.ts +16 -0
- package/dist/types/trigger-policy.d.ts.map +1 -0
- package/dist/types/trigger-policy.js +6 -0
- package/dist/types/trigger-policy.js.map +1 -0
- package/dist/types/vectorstore.d.ts +23 -0
- package/dist/types/vectorstore.d.ts.map +1 -0
- package/dist/types/vectorstore.js +3 -0
- package/dist/types/vectorstore.js.map +1 -0
- package/dist/types/web-search.d.ts +88 -0
- package/dist/types/web-search.d.ts.map +1 -0
- package/dist/types/web-search.js +23 -0
- package/dist/types/web-search.js.map +1 -0
- package/dist/types/webui.d.ts +137 -0
- package/dist/types/webui.d.ts.map +1 -0
- package/dist/types/webui.js +3 -0
- package/dist/types/webui.js.map +1 -0
- package/package.json +22 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
export interface ServiceDependency {
|
|
2
|
+
service: string;
|
|
3
|
+
capabilities?: string[];
|
|
4
|
+
}
|
|
5
|
+
export type DependencyDeclaration = string | ServiceDependency;
|
|
6
|
+
export interface InjectDeclaration {
|
|
7
|
+
required?: DependencyDeclaration[];
|
|
8
|
+
optional?: DependencyDeclaration[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Schema 字段类型注册表 —— declaration merging 扩展点。
|
|
12
|
+
*
|
|
13
|
+
* core 只内置环境无关的基础类型;带业务/宿主语义的类型由对应 api 包合并声明
|
|
14
|
+
* (如 `'llm-ref'` 由 @aalis/plugin-llm-api 注入)。key 即类型名,value 恒为 true。
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* declare module '@aalis/core' {
|
|
18
|
+
* interface SchemaFieldTypes {
|
|
19
|
+
* 'llm-ref': true;
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export interface SchemaFieldTypes {
|
|
25
|
+
string: true;
|
|
26
|
+
number: true;
|
|
27
|
+
boolean: true;
|
|
28
|
+
select: true;
|
|
29
|
+
multiselect: true;
|
|
30
|
+
textarea: true;
|
|
31
|
+
}
|
|
32
|
+
export type SchemaFieldType = keyof SchemaFieldTypes & string;
|
|
33
|
+
/**
|
|
34
|
+
* 单个配置字段。
|
|
35
|
+
*
|
|
36
|
+
* core 只声明任意宿主都需要的中立字段;渲染/交互相关的扩展属性
|
|
37
|
+
* (如 `secret` / `dynamicOptions` / `allowCustom`)由消费它们的宿主 api 包
|
|
38
|
+
* (@aalis/plugin-webui-api)通过 declaration merging 注入——core 不感知
|
|
39
|
+
* 任何具体宿主的表单语义。
|
|
40
|
+
*/
|
|
41
|
+
export interface SchemaField {
|
|
42
|
+
type: SchemaFieldType;
|
|
43
|
+
label: string;
|
|
44
|
+
description?: string;
|
|
45
|
+
default?: unknown;
|
|
46
|
+
required?: boolean;
|
|
47
|
+
/** select / multiselect 类型的静态选项 */
|
|
48
|
+
options?: Array<{
|
|
49
|
+
label: string;
|
|
50
|
+
value: string | number;
|
|
51
|
+
}>;
|
|
52
|
+
}
|
|
53
|
+
export interface SchemaGroup {
|
|
54
|
+
label?: string;
|
|
55
|
+
description?: string;
|
|
56
|
+
fields: Record<string, SchemaField>;
|
|
57
|
+
}
|
|
58
|
+
/** 数组 Schema:对象数组,每个元素用 items 描述其字段结构 */
|
|
59
|
+
export interface SchemaArray {
|
|
60
|
+
type: 'array';
|
|
61
|
+
label: string;
|
|
62
|
+
description?: string;
|
|
63
|
+
/** 数组每个元素的字段定义 */
|
|
64
|
+
items: Record<string, SchemaField>;
|
|
65
|
+
default?: unknown[];
|
|
66
|
+
}
|
|
67
|
+
/** 配置 Schema:顶层 key 可以是字段、分组或数组 */
|
|
68
|
+
export type ConfigSchema = Record<string, SchemaField | SchemaGroup | SchemaArray>;
|
|
69
|
+
/**
|
|
70
|
+
* 内置事件表
|
|
71
|
+
*
|
|
72
|
+
* 第三方插件可通过 TypeScript declaration merging 扩展:
|
|
73
|
+
* ```ts
|
|
74
|
+
* declare module '@aalis/core' {
|
|
75
|
+
* interface AalisEvents {
|
|
76
|
+
* 'scheduler:tick': [jobId: string];
|
|
77
|
+
* }
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export interface AalisEvents {
|
|
82
|
+
'service:registered': [name: string, capabilities: string[]];
|
|
83
|
+
'service:unregistered': [name: string];
|
|
84
|
+
/**
|
|
85
|
+
* 某服务的偏好 provider 发生切换(preferService / unpreferService)。
|
|
86
|
+
* 偏好切换会改变 getService(name) 的胜者但不改变 entry 集合,
|
|
87
|
+
* 因此不能复用 registered/unregistered 语义;whenService 借此事件跟随重挂。
|
|
88
|
+
*/
|
|
89
|
+
'service:preference-changed': [name: string];
|
|
90
|
+
'plugin:loaded': [name: string];
|
|
91
|
+
'plugin:unloaded': [name: string];
|
|
92
|
+
'plugins:changed': [];
|
|
93
|
+
ready: [];
|
|
94
|
+
/** 应用已启动完成,适合 CLI / TUI 等用户交互入口接管终端 */
|
|
95
|
+
'app:started': [];
|
|
96
|
+
restarting: [];
|
|
97
|
+
/** 应用正在启动(start() 开头,在服务检查和消息路由注册之前) */
|
|
98
|
+
'app:starting': [];
|
|
99
|
+
/**
|
|
100
|
+
* 应用正在停止(stop() 开头,在插件拓扑逆序 dispose 之前)。
|
|
101
|
+
*
|
|
102
|
+
* ⚠. 插件内部清理副作用(关连接、停计时器、flush 缓冲区等)请用
|
|
103
|
+
* `ctx.onDispose(cb)` 而不是订阅任何事件。事件只在 app 全局停机
|
|
104
|
+
* 时触发一次,**不会**在插件 bounce / unload / updatePluginConfig 等
|
|
105
|
+
* 增量重载路径上触发——会造成资源泄漏(旧 ws/db 连接未关闭等)。
|
|
106
|
+
*/
|
|
107
|
+
'app:stopping': [];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 中间件 next 函数,调用它将控制传递给下一个中间件或默认行为
|
|
111
|
+
*/
|
|
112
|
+
export type MiddlewareNext = () => Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* 中间件函数签名:接收数据和 next,可选择修改数据或中断流程
|
|
115
|
+
*/
|
|
116
|
+
export type MiddlewareFn<T> = (data: T, next: MiddlewareNext) => Promise<void>;
|
|
117
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACpC;AAID;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;AAInF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAK1B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,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;;;;;;;OAOG;IACH,cAAc,EAAE,EAAE,CAAC;CACpB;AAID;;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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// ===== 核心机制类型 =====
|
|
2
|
+
export {};
|
|
3
|
+
// 注:指令系统类型(CommandContext / CommandValueType / CommandArgumentDefinition /
|
|
4
|
+
// CommandOptionDefinition / CommandDefinition / SubcommandDefinition / RegisteredCommand)
|
|
5
|
+
// 已迁出到 @aalis/plugin-commands-api(cleanup-6)
|
|
6
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA,qBAAqB;;AAoJrB,2EAA2E;AAC3E,0FAA0F;AAC1F,6CAA6C"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 服务自清理协议
|
|
3
|
+
*
|
|
4
|
+
* 任何接受插件注册项(tools / commands / pages / strategies 等)的服务,
|
|
5
|
+
* **应当**实现该接口的 `unregisterByPlugin(contextId)`。当某个 Context dispose 时,
|
|
6
|
+
* core 会遍历所有已注册服务并调用该方法,使服务释放属于该 contextId 的所有注册项。
|
|
7
|
+
*
|
|
8
|
+
* core 自身不需要知道每个服务内部的注册结构,只通过这个简单接口与服务沟通。
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* class ToolService implements DisposableService {
|
|
12
|
+
* private byPlugin = new Map<string, Set<string>>();
|
|
13
|
+
* register(tool: Tool, contextId: string) { ... }
|
|
14
|
+
* unregisterByPlugin(contextId: string) {
|
|
15
|
+
* for (const name of this.byPlugin.get(contextId) ?? []) {
|
|
16
|
+
* this.tools.delete(name);
|
|
17
|
+
* }
|
|
18
|
+
* this.byPlugin.delete(contextId);
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
export interface DisposableService {
|
|
23
|
+
/**
|
|
24
|
+
* 清理由指定 contextId 注册到本服务的所有副作用。
|
|
25
|
+
*
|
|
26
|
+
* 在 Context.dispose() 时由 core 自动调用。
|
|
27
|
+
* 失败应当抛错(core 会记录 warn 日志但不中断 dispose 链)。
|
|
28
|
+
*/
|
|
29
|
+
unregisterByPlugin(contextId: string): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=disposable-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disposable-service.d.ts","sourceRoot":"","sources":["../../src/types/disposable-service.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disposable-service.js","sourceRoot":"","sources":["../../src/types/disposable-service.ts"],"names":[],"mappings":"AAAA,sBAAsB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/types/embedding.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,cAAc;IACd,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,uBAAuB;IACvB,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/types/embedding.ts"],"names":[],"mappings":"AAAA,6BAA6B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** 单会话的流控状态快照(只读视图,便于 trigger-policy 计算) */
|
|
2
|
+
export interface FlowSessionStateSnapshot {
|
|
3
|
+
messageCount: number;
|
|
4
|
+
activityScore: number;
|
|
5
|
+
lastReplyTime: number;
|
|
6
|
+
lastMessageTime: number;
|
|
7
|
+
cooldownUntil: number;
|
|
8
|
+
mutedUntil: number;
|
|
9
|
+
idleBackoff: number;
|
|
10
|
+
/** 当前限速窗口内已使用的回复槽 */
|
|
11
|
+
rateLimitUsed: number;
|
|
12
|
+
/** 限速窗口最大可回复次数(0 表示未启用限速) */
|
|
13
|
+
rateLimitMax: number;
|
|
14
|
+
/** 间隔触发使用的固定间隔阈值(供 trigger-policy 复用同一参数) */
|
|
15
|
+
fixedInterval: number;
|
|
16
|
+
/** 用户交互次数表(userId → count) */
|
|
17
|
+
userInteractions: ReadonlyMap<string, {
|
|
18
|
+
count: number;
|
|
19
|
+
lastTime: number;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export interface FlowControlService {
|
|
23
|
+
/** 获取或创建 session 状态(首次访问会初始化) */
|
|
24
|
+
ensureState(sessionId: string, platform: string): void;
|
|
25
|
+
/** 只读快照(trigger-policy 用) */
|
|
26
|
+
getStateSnapshot(sessionId: string): FlowSessionStateSnapshot | undefined;
|
|
27
|
+
/** 入站消息累加(messageCount, activityScore, lastMessageTime, userInteractions, 应用衰减) */
|
|
28
|
+
recordIncoming(sessionId: string, platform: string, userId?: string): void;
|
|
29
|
+
/** 触发后重置(messageCount=0, activityScore=0, lastReplyTime=now, idleBackoff=1) */
|
|
30
|
+
recordTriggered(sessionId: string): void;
|
|
31
|
+
/** 出站消息后处理:设置冷却 + 限速窗口记录 + 重置退避 + 重排 idle 调度 */
|
|
32
|
+
recordReply(sessionId: string, platform: string): void;
|
|
33
|
+
/** 当前是否在冷却 */
|
|
34
|
+
isCoolingDown(sessionId: string): boolean;
|
|
35
|
+
/** 当前是否在禁言 */
|
|
36
|
+
isMuted(sessionId: string): boolean;
|
|
37
|
+
/** 限速检查(返回 true 表示已超限) */
|
|
38
|
+
isRateLimited(sessionId: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* 设置自禁言(平台 mute 事件或关键词命中时调用)。
|
|
41
|
+
* - durationSec > 0:mutedUntil = now + durationSec*1000
|
|
42
|
+
* - durationSec <= 0:解除禁言(mutedUntil = 0)
|
|
43
|
+
* 若状态未初始化但提供 platform,会自动创建。
|
|
44
|
+
*/
|
|
45
|
+
setMuted(sessionId: string, durationSec: number, platform?: string): void;
|
|
46
|
+
/** 计算当前阈值(动态衰减) */
|
|
47
|
+
getThreshold(sessionId: string): number;
|
|
48
|
+
/** 重新调度本会话的 idle trigger(在每次入站后调用) */
|
|
49
|
+
rescheduleIdle(sessionId: string, platform: string): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=flow-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-control.d.ts","sourceRoot":"","sources":["../../src/types/flow-control.ts"],"names":[],"mappings":"AAWA,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvD,6BAA6B;IAC7B,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAAC;IAE1E,mFAAmF;IACnF,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3E,+EAA+E;IAC/E,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,gDAAgD;IAChD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvD,cAAc;IACd,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1C,cAAc;IACd,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,0BAA0B;IAC1B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1E,mBAAmB;IACnB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAExC,sCAAsC;IACtC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// ----- Flow Control 服务接口 -----
|
|
2
|
+
//
|
|
3
|
+
// FlowControlService 负责管理每会话的"流控状态":
|
|
4
|
+
// - 计数器/活跃指数(间隔触发依据)
|
|
5
|
+
// - 冷却/禁言时段
|
|
6
|
+
// - 限速窗口(防 DDoS)
|
|
7
|
+
// - 闲置触发调度
|
|
8
|
+
//
|
|
9
|
+
// 状态由 plugin-flow-control 持有;trigger-policy 通过本服务读取/更新。
|
|
10
|
+
// 平台适配器(如 OneBot)可调用 setMuted() 上报平台层面的禁言事件。
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=flow-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-control.js","sourceRoot":"","sources":["../../src/types/flow-control.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,EAAE;AACF,qCAAqC;AACrC,uBAAuB;AACvB,cAAc;AACd,mBAAmB;AACnB,aAAa;AACb,EAAE;AACF,wDAAwD;AACxD,6CAA6C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IncomingMessage, OutgoingMessage } from './core.js';
|
|
2
|
+
/**
|
|
3
|
+
* Gateway 服务 —— 消息流编排中枢
|
|
4
|
+
*
|
|
5
|
+
* 默认实现由 `@aalis/plugin-gateway` 提供。
|
|
6
|
+
* 业务层不应再直接 `emit('outbound:message')`,而应调用 `dispatchOutbound()`,
|
|
7
|
+
* 以便所有出站消息都经过 outbound:dispatch 钩子链(脱敏、限速、审计等)。
|
|
8
|
+
*/
|
|
9
|
+
export interface GatewayService {
|
|
10
|
+
/**
|
|
11
|
+
* 主动注入一条入站消息(用于 idle-trigger、webui 直发、内部自检等)。
|
|
12
|
+
* 与直接 `emit('inbound:message')` 等价 —— 都会走 gateway 入站相位链。
|
|
13
|
+
*/
|
|
14
|
+
ingressMessage(message: IncomingMessage): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* 派发一条出站消息。
|
|
17
|
+
*
|
|
18
|
+
* 替代 `ctx.emit('outbound:message', msg)` —— 后者将逐步迁移:
|
|
19
|
+
* - 平台适配器仍可监听 `outbound:message` 接收最终发送指令;
|
|
20
|
+
* - 发出方应改用本接口,以经过 `outbound:dispatch` 钩子链。
|
|
21
|
+
*/
|
|
22
|
+
dispatchOutbound(message: OutgoingMessage): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/types/gateway.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// ----- Gateway 服务接口 -----
|
|
2
|
+
//
|
|
3
|
+
// Gateway 是 Aalis 的运行时编排中枢:
|
|
4
|
+
// - 入站:监听 `inbound:message`,按 INBOUND_PHASE_ORDER 顺序运行
|
|
5
|
+
// inbound:command → inbound:flow → inbound:trigger → inbound:dispatch
|
|
6
|
+
// 四个命名相位,dispatch 的默认动作是调用 agent.handleMessage。
|
|
7
|
+
// 前三相位任一被 swallow(handler 不调用 next)即停止后续调度。
|
|
8
|
+
// - 出站:提供 `dispatchOutbound()` 接口,运行 `outbound:dispatch` 钩子链,
|
|
9
|
+
// 默认动作是向 `outbound:message` 事件总线广播,平台插件接收并发送。
|
|
10
|
+
//
|
|
11
|
+
// core 不再绑定具体的路由实现,gateway 服务由 plugin-gateway 提供。
|
|
12
|
+
// 完整发行入口可通过 `requiredServices` 声明 gateway 依赖;最小应用可不加载 gateway,
|
|
13
|
+
// 由 core fallback 入站路由直接派发给 agent。
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/types/gateway.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,EAAE;AACF,4BAA4B;AAC5B,yDAAyD;AACzD,gFAAgF;AAChF,0DAA0D;AAC1D,sDAAsD;AACtD,gEAAgE;AAChE,wDAAwD;AACxD,EAAE;AACF,kDAAkD;AAClD,+DAA+D;AAC/D,mCAAmC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,cAAc;CAAG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// ----- 钩子/中间件上下文映射 -----
|
|
2
|
+
//
|
|
3
|
+
// 这是一个可扩展的「字符串键 → 上下文类型」映射。core 自身不预声明任何
|
|
4
|
+
// 业务钩子键;具体钩子由各 api 包通过 declaration merging 注入:
|
|
5
|
+
//
|
|
6
|
+
// - @aalis/plugin-agent-api → agent:*(含 llm/tool/reply/input/turn)
|
|
7
|
+
// - @aalis/plugin-gateway-api → inbound:* / outbound:dispatch(含 InboundPhaseData)
|
|
8
|
+
// - @aalis/plugin-memory-api → memory:clear
|
|
9
|
+
// - @aalis/plugin-session-manager → session:*
|
|
10
|
+
//
|
|
11
|
+
// 第三方插件可继续 augment 自定义钩子:
|
|
12
|
+
// declare module '@aalis/core' {
|
|
13
|
+
// interface HookContextMap {
|
|
14
|
+
// 'schedule:before': { jobId: string; cron: string };
|
|
15
|
+
// }
|
|
16
|
+
// }
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/types/hooks.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,EAAE;AACF,yCAAyC;AACzC,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,wFAAwF;AACxF,mDAAmD;AACnD,gDAAgD;AAChD,EAAE;AACF,0BAA0B;AAC1B,mCAAmC;AACnC,iCAAiC;AACjC,4DAA4D;AAC5D,QAAQ;AACR,MAAM"}
|
|
@@ -0,0 +1,123 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { AppService, PluginManagerService, PluginStatusEntry } from './app.js';
|
|
2
|
+
export type { CapabilityList, CapabilityOf, CapabilityProbe, ServiceCapabilityMap } from './capabilities.js';
|
|
3
|
+
export { probeCapability, registerCapabilityProbe } from './capabilities.js';
|
|
4
|
+
export type { AalisEvents, ConfigSchema, DependencyDeclaration, InjectDeclaration, MiddlewareFn, MiddlewareNext, SchemaArray, SchemaField, SchemaFieldType, SchemaFieldTypes, SchemaGroup, ServiceDependency, } from './core.js';
|
|
5
|
+
export type { DisposableService } from './disposable-service.js';
|
|
6
|
+
export type { HookContextMap } from './hooks.js';
|
|
7
|
+
export type { ServiceOf, ServiceTypeMap } from './services.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAiBA,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEpF,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// @aalis/core - types 子模块统一导出
|
|
3
|
+
//
|
|
4
|
+
// 仅包含 core 自身定义的:
|
|
5
|
+
// - 通用 IoC 数据契约(types/core.ts:Schema / Middleware / Dependency / AalisEvents 等)
|
|
6
|
+
// - 钩子扩展点(types/hooks.ts,仅空 HookContextMap)
|
|
7
|
+
// - 服务能力声明框架(types/capabilities.ts)
|
|
8
|
+
// - App 服务接口(types/app.ts)
|
|
9
|
+
//
|
|
10
|
+
// 业务/领域类型一律由 plugin-*-api 包导出:
|
|
11
|
+
// - Message / ContentSegment → @aalis/plugin-agent-api
|
|
12
|
+
// - ToolCall / ToolDefinition / ToolFunction → @aalis/plugin-tools-api
|
|
13
|
+
// - LLM / Memory / Storage / Embedding / VectorStore / Tools / Commands / Gateway /
|
|
14
|
+
// WebUI / Authority / Agent / Platform 等服务接口同样在各自的 plugin-*-api。
|
|
15
|
+
// ============================================================
|
|
16
|
+
export { probeCapability, registerCapabilityProbe } from './capabilities.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,sCAAsC;AACtC,6BAA6B;AAC7B,EAAE;AACF,+BAA+B;AAC/B,mEAAmE;AACnE,yEAAyE;AACzE,sFAAsF;AACtF,qEAAqE;AACrE,+DAA+D;AAM/D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
|