@aalis/plugin-image-sender 0.9.0 → 0.10.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 +5 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +140 -191
- package/dist/index.js.map +1 -1
- package/dist/locales/en.d.ts +5 -0
- package/dist/locales/en.d.ts.map +1 -0
- package/dist/locales/en.js +5 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/texts.d.ts +9 -0
- package/dist/texts.d.ts.map +1 -0
- package/dist/texts.js +8 -0
- package/dist/texts.js.map +1 -0
- package/package.json +18 -11
package/README.md
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
图片发送:将生成/本地图片经平台发出
|
|
4
4
|
|
|
5
|
-
`send_attachment` 等待目标适配器确认后才返回 `ok: true`;下载、连接或平台发送失败返回 `error
|
|
5
|
+
`send_attachment` 等待目标适配器确认后才返回 `ok: true`;下载、连接或平台发送失败返回 `error`。图源失效时可重新选图,不能把调用工具当成已送达。发出的附件(`history_ref` 重发的、回复里转出的也一样)不由本插件记进会话历史:送达之后由 message-archive 的 `recordOutbound` 记,网址的图片与视频在后台补识图描述(见 [plugin-message-archive](../../docs/plugins/plugin-message-archive.md))。出站消息带这次调用的回合 id 与 `callId`。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
存储库里的媒体先过媒体判据再发(`@aalis/api-media` 的 `mediaScopeOf`):本会话收到或产生的能发;别的会话的媒体按会话管理的取用规则,带这次调用的授权身份(几个人的一轮逐个参与者判,某人自己私聊里的、别人过不了的由他本人批);不属于任何会话的本机文件只在这一轮的主体是 owner(或 owner 授权的自动运行在没有别人的会话里)时能发,owner 与别人同在的一轮要 owner 批。带 markup 的正文(她的回复)里存储地址的媒体标记由本插件在出站前转成附件,按回复所在那一轮的授权身份过同一份判据(几个人的一轮不带授权身份,不是回合里的回复同样不带),不出审批;不装本插件时发不出,规则见[文档](../../docs/services/media.md#媒体判据)的「出站转换」。
|
|
8
|
+
|
|
9
|
+
OneBot 的成功表示平台接口已确认接受;WebUI 表示已经记进会话历史,不代表用户已阅读或浏览器已加载外部图片。未提供确认的第三方适配器不能返回成功。
|
|
8
10
|
|
|
9
11
|
## 安装
|
|
10
12
|
|
|
@@ -17,7 +19,7 @@ pnpm add @aalis/plugin-image-sender
|
|
|
17
19
|
`definePlugin` 默认导出:
|
|
18
20
|
|
|
19
21
|
- provides:无
|
|
20
|
-
- uses:`events`、`logger`;可选 `tools`、`storage`、`media`、`memory`、`
|
|
22
|
+
- uses:`events`、`logger`;可选 `tools`、`hooks`、`storage`、`media`、`memory`、`sessionManager`(`session-manager`)、`authority`
|
|
21
23
|
|
|
22
24
|
## 文档
|
|
23
25
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { type StorageService } from '@aalis/api-storage';
|
|
2
1
|
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
3
2
|
tools: import("@aalis/core").OptionalUse<import("@aalis/api-tools").ToolService, import("@aalis/api-tools").BoundTools>;
|
|
3
|
+
hooks: import("@aalis/core").OptionalUse<import("@aalis/api-hooks").HookRegistry, import("@aalis/api-hooks").Hooks>;
|
|
4
4
|
events: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Events, import("@aalis/core").Events>;
|
|
5
5
|
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
|
|
6
|
-
storage: import("@aalis/core").OptionalUse<StorageService, import("@aalis/api-storage").BoundStorage>;
|
|
6
|
+
storage: import("@aalis/core").OptionalUse<import("@aalis/api-storage").StorageService, import("@aalis/api-storage").BoundStorage>;
|
|
7
7
|
media: import("@aalis/core").OptionalUse<import("@aalis/api-media").MediaService, import("@aalis/api-media").MediaService>;
|
|
8
8
|
memory: import("@aalis/core").OptionalUse<import("@aalis/api-memory").MemoryService, import("@aalis/api-memory").MemoryService>;
|
|
9
|
-
|
|
9
|
+
sessionManager: import("@aalis/core").OptionalUse<import("@aalis/api-session-manager").SessionManagerService, import("@aalis/api-session-manager").SessionManagerService>;
|
|
10
|
+
authority: import("@aalis/core").OptionalUse<import("@aalis/api-authority").AuthorityService, import("@aalis/api-authority").AuthorityService>;
|
|
10
11
|
}>;
|
|
11
12
|
export default _default;
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AA+DA,wBAMG"}
|
package/dist/index.js
CHANGED
|
@@ -4,59 +4,99 @@
|
|
|
4
4
|
// 工具:
|
|
5
5
|
// 1. preview_image —— 在选图前用 vision 看清候选图(搜索结果标题常误导)
|
|
6
6
|
// 2. send_attachment —— 统一的出站附件接口:把 image/audio/video 发出去;
|
|
7
|
-
//
|
|
8
|
-
//
|
|
7
|
+
// 送达之后由 message-archive 记进会话历史(recordOutbound),
|
|
8
|
+
// 让"AI 之前发过的图/视频"能被 memory_recall 召回
|
|
9
|
+
//
|
|
10
|
+
// 出站中间件:带 markup 的正文(她的回复)里存储地址的媒体标记(<image|video|record url>)转成附件,与 send_attachment 同一份
|
|
11
|
+
// 判据,按回复所在那一轮的授权身份判(几个人时不带),转之前同样核文件头;只摘掉转成了附件的标记,别的留在正文里交给适配器。
|
|
9
12
|
//
|
|
10
13
|
// send_attachment 来源:url / storage_uri / history_ref(不接受裸本地路径);
|
|
11
|
-
//
|
|
14
|
+
// 存储库里的文件先过媒体判据(@aalis/api-media 的 mediaScopeOf:别的会话的媒体按会话管理的取用规则,本机文件按这一轮的
|
|
15
|
+
// 主体,多人的一轮逐个参与者判、有人过不了时发参与者审批),再读文件头核对格式(见 @aalis/util-file-signature)。
|
|
12
16
|
// 此插件不直接调用平台 API,而是 emit `outbound:message`(含 attachments[]);
|
|
13
17
|
// 由各 platform adapter(OneBot / WebUI)按自身能力处理结构化附件。
|
|
14
18
|
// ============================================================
|
|
15
|
-
import {
|
|
19
|
+
import { authority, originTurnOf } from '@aalis/api-authority';
|
|
20
|
+
import { hooks } from '@aalis/api-hooks';
|
|
21
|
+
import { historyMediaRefs, media, mediaRef, mediaScopeOf } from '@aalis/api-media';
|
|
16
22
|
import { memory } from '@aalis/api-memory';
|
|
17
|
-
import {
|
|
18
|
-
import { isStorageNotFound, isStorageUri,
|
|
19
|
-
import { tools } from '@aalis/api-tools';
|
|
23
|
+
import { sessionManager } from '@aalis/api-session-manager';
|
|
24
|
+
import { isStorageNotFound, isStorageUri, isWebUrl, storage } from '@aalis/api-storage';
|
|
25
|
+
import { actingIdentity, tools } from '@aalis/api-tools';
|
|
20
26
|
import { definePlugin, events, logger, optional } from '@aalis/core';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
27
|
+
import { toSource } from '@aalis/schema-i18n';
|
|
28
|
+
import { awaitDelivery } from '@aalis/schema-message';
|
|
29
|
+
import { checkMediaHead, FILE_HEAD_BYTES } from '@aalis/util-file-signature';
|
|
30
|
+
import { t } from './texts.js';
|
|
23
31
|
/** preview_image 单张候选识别等待上限。preview 的目的就是"看清"图,
|
|
24
32
|
* 本地视觉模型(如 33B)单图常需 15-25s,必须给足预算,否则必然超时使 preview 形同虚设。 */
|
|
25
33
|
const PREVIEW_TIMEOUT_MS = 25_000;
|
|
26
|
-
/** 出站归档描述等待上限。该描述在后台计算、不阻塞发送,可放宽。 */
|
|
27
|
-
const ARCHIVE_DESCRIBE_TIMEOUT_MS = 25_000;
|
|
28
|
-
/** 视频描述等待上限(视频需抽帧+ASR,耗时远高于图片)。 */
|
|
29
|
-
const VIDEO_DESCRIBE_TIMEOUT_MS = 30_000;
|
|
30
34
|
/** preview_image 单次允许的候选数量上限。 */
|
|
31
35
|
const PREVIEW_MAX_CANDIDATES = 8;
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
/** 过不了媒体判据时回给模型的话:先判后读,不存在与不是媒体也回这一句,拿它探测不出存储根里有什么 */
|
|
37
|
+
const OUT_OF_SCOPE = '这个文件不在这一轮能取的范围里:别的会话的媒体按这个会话的取用范围与开关;本机文件要这一轮里有 owner 的话、有别人时经她批准,或是 owner 授权的自动运行且会话里没有别人';
|
|
38
|
+
/** 判媒体归属与找 history_ref 回看的历史条数 */
|
|
39
|
+
const HISTORY_LIMIT = 200;
|
|
40
|
+
/** 回复正文里的媒体标记:与 onebot 适配器解析的写法相同 */
|
|
41
|
+
const MEDIA_MARKUP = /<(image|video|record)\s+url=["']([^"']*)["']\s*\/>/g;
|
|
42
|
+
const MARKUP_KIND = { image: 'image', video: 'video', record: 'audio' };
|
|
43
|
+
// tools 与 hooks 不入激活闸:工具与中间件登记走注册账本,提供者上线后自动补挂。
|
|
44
|
+
// 会话管理、权限与记忆给媒体判据用,缺席时判据按它的约定取值(不取别的会话的、主体是 other、没人是 owner、历史为空)。
|
|
34
45
|
const uses = {
|
|
35
46
|
tools: optional(tools),
|
|
47
|
+
hooks: optional(hooks),
|
|
36
48
|
events,
|
|
37
49
|
logger,
|
|
38
50
|
storage: optional(storage),
|
|
39
51
|
media: optional(media),
|
|
40
52
|
memory: optional(memory),
|
|
41
|
-
|
|
53
|
+
sessionManager: optional(sessionManager),
|
|
54
|
+
authority: optional(authority),
|
|
42
55
|
};
|
|
43
56
|
export default definePlugin({
|
|
44
57
|
name: '@aalis/plugin-image-sender',
|
|
45
|
-
displayName: '
|
|
58
|
+
displayName: t('displayName'),
|
|
46
59
|
subsystem: 'tools',
|
|
47
60
|
uses,
|
|
48
61
|
apply: registerImageSender,
|
|
49
62
|
});
|
|
50
63
|
function registerImageSender(caps) {
|
|
51
|
-
const { tools, events, logger, media, memory,
|
|
64
|
+
const { tools, hooks, events, logger, media, memory, sessionManager, authority } = caps;
|
|
52
65
|
const storage = caps.storage.use;
|
|
66
|
+
/** 调用所在会话最近的历史:记忆不在时为空 */
|
|
67
|
+
async function recentHistory(sessionId) {
|
|
68
|
+
if (!memory.present)
|
|
69
|
+
return [];
|
|
70
|
+
const service = memory.use;
|
|
71
|
+
return service.getFullHistory
|
|
72
|
+
? service.getFullHistory(sessionId, HISTORY_LIMIT)
|
|
73
|
+
: service.getHistory(sessionId, HISTORY_LIMIT);
|
|
74
|
+
}
|
|
75
|
+
/** owner 判定:权限服务不在时恒为否 */
|
|
76
|
+
const isOwner = (platform, userId) => authority.present && authority.use.isOwner(platform, userId);
|
|
77
|
+
/** 媒体判据要的服务:每次判时按一次调用交给 mediaScopeOf(工具交这次调用,回复里的标记交它所在的那一轮) */
|
|
78
|
+
const scopeServices = { sessionManager, authority, history: recentHistory };
|
|
79
|
+
/**
|
|
80
|
+
* 在跑的各轮的输入:agent:turn:before 交来的那一份的引用(插进来的输入会追加到它上面),这一轮结束删掉。回复在这一轮结束
|
|
81
|
+
* 之前出站,按它的回合 id 取回,用那时的输入判回复里的标记
|
|
82
|
+
*/
|
|
83
|
+
const turnInputs = new Map();
|
|
84
|
+
hooks.use.middleware('agent:turn:before', async (data, next) => {
|
|
85
|
+
turnInputs.set(data.turnId, data.inputs);
|
|
86
|
+
try {
|
|
87
|
+
await next();
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
turnInputs.delete(data.turnId);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
53
93
|
// 核对存储库内的文件能否按 kind 发送:只读文件头,按 kind 核对格式,不符拒发(存储根里还有配置、令牌、
|
|
54
94
|
// 记忆库等非媒体文件)。放行的交出 storage URI,送达形态由平台适配器决定:onebot 读回内容内联,超过内联上限
|
|
55
95
|
// 时再核对一次文件头才交宿主路径;预先换成 file:// 的话,适配器落不了盘的大文件只能原样透传、无从核对
|
|
56
96
|
async function loadStorageMedia(uri, kind) {
|
|
57
97
|
let head;
|
|
58
98
|
try {
|
|
59
|
-
head = await storage.readFileRange(uri, 0,
|
|
99
|
+
head = await storage.readFileRange(uri, 0, FILE_HEAD_BYTES);
|
|
60
100
|
}
|
|
61
101
|
catch (err) {
|
|
62
102
|
if (isStorageNotFound(err))
|
|
@@ -111,7 +151,7 @@ function registerImageSender(caps) {
|
|
|
111
151
|
const results = [];
|
|
112
152
|
for (let index = 0; index < urls.length; index++) {
|
|
113
153
|
const trimmed = urls[index].trim();
|
|
114
|
-
if (!
|
|
154
|
+
if (!isWebUrl(trimmed)) {
|
|
115
155
|
results.push({ index, url: trimmed, ok: false, error: 'url 必须是 http/https' });
|
|
116
156
|
continue;
|
|
117
157
|
}
|
|
@@ -143,11 +183,14 @@ function registerImageSender(caps) {
|
|
|
143
183
|
'kind 必填,指定附件类型;来源三选一:\n' +
|
|
144
184
|
' - url:网络资源 URL(http/https)。\n' +
|
|
145
185
|
' - storage_uri:存储库内的资源 URI(如 data:/images/xxx)。\n' +
|
|
146
|
-
' - history_ref
|
|
186
|
+
' - history_ref:本会话历史消息中的引用([图片/音频/视频: ... | ref:xxx] 中完整的 xxx),\n' +
|
|
147
187
|
' 用于"把之前那条媒体重发/转发回去"。\n' +
|
|
188
|
+
'storage_uri 能指向本会话收到或产生的媒体;别的会话的媒体按 owner 给这个会话设的取用范围与开关;' +
|
|
189
|
+
'不属于任何会话的本机文件要这一轮里有 owner 的话(有别人的话一起进来时要她批),' +
|
|
190
|
+
'或这一轮是按 owner 的授权自动运行的(如她建的定时任务)而所在会话里没有别人。history_ref 只在本会话历史里找。\n' +
|
|
148
191
|
'建议流程(图片):search_images 拿候选 URL →(有 preview_image 时可先看清内容)→ send_attachment 选其一发出。\n' +
|
|
149
192
|
'只有返回 ok:true 才能说已发送;返回 error 时没有成功确认,下载失败可改选另一张图片,不要反复重发同一失效地址。\n' +
|
|
150
|
-
'
|
|
193
|
+
'若想重发自己之前在本会话发过的媒体,先用 memory_recall 按描述检索历史,从命中消息里找到 ref 再传 history_ref。\n' +
|
|
151
194
|
'注意:本工具不发送任何文字。如需配文,请把文字写在你本轮最终输出的 message 字段里——' +
|
|
152
195
|
'不要在 message 中重复媒体描述。',
|
|
153
196
|
parameters: {
|
|
@@ -162,7 +205,7 @@ function registerImageSender(caps) {
|
|
|
162
205
|
storage_uri: { type: 'string', description: '存储库内资源 URI(如 data:/images/xxx)。' },
|
|
163
206
|
history_ref: {
|
|
164
207
|
type: 'string',
|
|
165
|
-
description: '
|
|
208
|
+
description: '本会话历史消息中的引用路径([... | ref:xxx] 中完整的 xxx)。',
|
|
166
209
|
},
|
|
167
210
|
},
|
|
168
211
|
required: ['kind'],
|
|
@@ -182,7 +225,7 @@ function registerImageSender(caps) {
|
|
|
182
225
|
let via = 'url';
|
|
183
226
|
try {
|
|
184
227
|
if (url) {
|
|
185
|
-
if (!
|
|
228
|
+
if (!isWebUrl(url)) {
|
|
186
229
|
return JSON.stringify({ error: 'url 必须是 http/https 开头' });
|
|
187
230
|
}
|
|
188
231
|
data = url;
|
|
@@ -190,61 +233,55 @@ function registerImageSender(caps) {
|
|
|
190
233
|
via = 'url';
|
|
191
234
|
}
|
|
192
235
|
else if (storageUri) {
|
|
193
|
-
//
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
if (!uri) {
|
|
236
|
+
// 先判后读:判据、读取与附件引用用同一个规整后的地址
|
|
237
|
+
const uri = mediaRef(storageUri);
|
|
238
|
+
if (!uri || !isStorageUri(uri)) {
|
|
197
239
|
return JSON.stringify({ error: 'storage_uri 要写存储地址(如 data:/images/…),不能写本机路径' });
|
|
198
240
|
}
|
|
241
|
+
if (!(await mediaScopeOf(callCtx, scopeServices)(uri)))
|
|
242
|
+
return JSON.stringify({ error: OUT_OF_SCOPE });
|
|
199
243
|
const loaded = await loadStorageMedia(uri, kind);
|
|
200
244
|
if (!loaded.ok)
|
|
201
245
|
return JSON.stringify({ error: loaded.error });
|
|
202
246
|
data = loaded.data;
|
|
203
|
-
|
|
204
|
-
refTag = storageUri;
|
|
247
|
+
refTag = uri;
|
|
205
248
|
via = 'storage_uri';
|
|
206
249
|
}
|
|
207
250
|
else if (historyRef) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
251
|
+
refTag = historyRef.replace(/^ref:/, '').trim();
|
|
252
|
+
// 网址照旧当 url 用;其余只在调用所在会话历史里系统记下的引用中按全等找,找到的与 storage_uri 过同一份判据:
|
|
253
|
+
// 会话媒体放行,历史里记过的本机文件照样按本机文件判(按地址取到的是此刻的内容)
|
|
254
|
+
const ref = mediaRef(refTag);
|
|
255
|
+
if (ref && !isStorageUri(ref)) {
|
|
256
|
+
data = ref;
|
|
257
|
+
}
|
|
258
|
+
else if (!ref || !historyMediaRefs(await recentHistory(callCtx.sessionId)).includes(ref)) {
|
|
259
|
+
return JSON.stringify({ error: `未在本会话历史中找到引用: ${historyRef}` });
|
|
260
|
+
}
|
|
261
|
+
else if (!(await mediaScopeOf(callCtx, scopeServices)(ref))) {
|
|
262
|
+
return JSON.stringify({ error: OUT_OF_SCOPE });
|
|
213
263
|
}
|
|
214
264
|
else {
|
|
215
|
-
|
|
216
|
-
// file://、data URI 等来源不在存储库内,读不了文件头,无从核对格式
|
|
217
|
-
const uri = storeUriOf(found);
|
|
218
|
-
if (!uri || !isStorageUri(uri)) {
|
|
219
|
-
return JSON.stringify({ error: `引用 ${historyRef} 的来源不在存储库内,无法核对格式,不能发送` });
|
|
220
|
-
}
|
|
221
|
-
const loaded = await loadStorageMedia(uri, kind);
|
|
265
|
+
const loaded = await loadStorageMedia(ref, kind);
|
|
222
266
|
if (!loaded.ok)
|
|
223
267
|
return JSON.stringify({ error: loaded.error });
|
|
224
268
|
data = loaded.data;
|
|
225
269
|
}
|
|
226
|
-
refTag = historyRef.replace(/^ref:/, '').trim();
|
|
227
270
|
via = 'history_ref';
|
|
228
271
|
}
|
|
229
272
|
else {
|
|
230
273
|
return JSON.stringify({ error: '必须提供 url / storage_uri / history_ref 之一' });
|
|
231
274
|
}
|
|
232
|
-
//
|
|
233
|
-
//
|
|
234
|
-
const attachment = {
|
|
235
|
-
kind,
|
|
236
|
-
data,
|
|
237
|
-
// 归档承载:ref 随事件携带,成功投递后才入档。
|
|
238
|
-
// history_ref 重发标记 skipArchive,避免重复入档 / 向量库膨胀。
|
|
239
|
-
ref: refTag ?? data,
|
|
240
|
-
skipArchive: via === 'history_ref',
|
|
241
|
-
};
|
|
275
|
+
// 等待传输确认,不等识图:送达之后由 message-archive 记进会话历史,网址的图在后台补描述。
|
|
276
|
+
// ref 是稳定的地址,平台落盘后改写 data 也不影响记进历史的那一份
|
|
277
|
+
const attachment = { kind, data, ref: refTag ?? data };
|
|
242
278
|
const outgoing = {
|
|
243
279
|
sessionId: callCtx.sessionId,
|
|
244
280
|
platform: callCtx.platform,
|
|
245
281
|
content: '',
|
|
246
282
|
attachments: [attachment],
|
|
247
283
|
source: 'agent',
|
|
284
|
+
turnId: callCtx.turnId,
|
|
248
285
|
callId: callCtx.callId,
|
|
249
286
|
};
|
|
250
287
|
await events.use.emit('outbound:message', outgoing);
|
|
@@ -255,7 +292,7 @@ function registerImageSender(caps) {
|
|
|
255
292
|
return JSON.stringify({ error: '附件仍在发送,结果未确认,请勿重发' });
|
|
256
293
|
if (!result.ok) {
|
|
257
294
|
return JSON.stringify({
|
|
258
|
-
error: result.unconfirmed ? '附件发送结果未知(可能已经送达),请勿重发' : result.error,
|
|
295
|
+
error: result.unconfirmed ? '附件发送结果未知(可能已经送达),请勿重发' : toSource(result.error),
|
|
259
296
|
});
|
|
260
297
|
}
|
|
261
298
|
return JSON.stringify({ ok: true, sent: { kind, via, ref: refTag } });
|
|
@@ -266,150 +303,62 @@ function registerImageSender(caps) {
|
|
|
266
303
|
},
|
|
267
304
|
});
|
|
268
305
|
logger.use.info('[image-sender] 工具 send_attachment 已注册(preview_image 随 media 在场注册)');
|
|
269
|
-
// ──
|
|
270
|
-
//
|
|
271
|
-
//
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
continue;
|
|
282
|
-
if (att.kind !== 'image' && att.kind !== 'audio' && att.kind !== 'video')
|
|
283
|
-
continue;
|
|
284
|
-
// 用稳定 ref(生产者声明)而非 att.data:避免 onebot 等适配器落盘后改写 data。
|
|
285
|
-
const ref = att.ref ?? att.data;
|
|
286
|
-
const kind = att.kind;
|
|
287
|
-
const carried = att.description ?? '';
|
|
288
|
-
// 后台异步:监听器同步返回,避免阻塞出站事件链(emit 串行 await,阻塞会拖慢 onebot/webui 发送)。
|
|
289
|
-
// 描述用宽松超时在背景补齐,让档案 [图片: desc | ref] 能被 memory_recall 命中。
|
|
290
|
-
void (async () => {
|
|
291
|
-
let desc = carried;
|
|
292
|
-
if (!desc && (kind === 'image' || kind === 'video') && /^https?:\/\//i.test(ref)) {
|
|
293
|
-
desc = await safeDescribeMedia({ media, logger }, kind, ref);
|
|
294
|
-
}
|
|
295
|
-
await archiveOutboundAttachment({ archive, logger }, msg.sessionId, ref, desc, kind);
|
|
296
|
-
})();
|
|
297
|
-
}
|
|
306
|
+
// ── 带 markup 的正文里的媒体标记:存储地址的转成附件 ─────────────────────────────────
|
|
307
|
+
// 适配器只解析带 markup 的正文(她的回复);onebot 只把网址的标记经受保护下载与文件头核对后内联,其余地址的去掉并报投递失败,
|
|
308
|
+
// 存储里的媒体要靠这里转成附件才发得出。存储地址过与 send_attachment 同一份判据,没有可挂审批的工具调用,按回复所在那一轮
|
|
309
|
+
// 判:按回合 id 取回这一轮的输入拼出这一轮(originTurnOf),授权身份取 actingIdentity(只有一位参与者时是他,几个人时不带:
|
|
310
|
+
// 别人的私聊取不到,本机文件取不到);认不出这一轮的(不是回合里的回复)不带授权身份判。转之前与 send_attachment 一样核文件头。
|
|
311
|
+
// 这里只摘掉转成了附件的标记:不过判据、读不出、不是对应媒体的与别的写法(网址、file://、本机路径、data URI 等)都留在正文里,
|
|
312
|
+
// 去不去掉由适配器定;摘掉标记后两边的文字拼出的新标记同样留给它,它在解析出的消息段上判。转出的附件与别的附件一样,送达
|
|
313
|
+
// 之后记进会话历史。网关缺席时出站不经这条链,存储地址的标记由适配器去掉、发不出
|
|
314
|
+
hooks.use.middleware('outbound:dispatch', async ({ message }, next) => {
|
|
315
|
+
if (message.markup)
|
|
316
|
+
await markupToAttachments(message);
|
|
317
|
+
await next();
|
|
298
318
|
});
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
/** 调 media.describeImage,超时或失败返回空串(不阻塞发送)。 */
|
|
305
|
-
async function safeDescribe(caps, imageData) {
|
|
306
|
-
const service = caps.media.present ? caps.media.use : undefined;
|
|
307
|
-
if (!service?.describeImage)
|
|
308
|
-
return '';
|
|
309
|
-
try {
|
|
310
|
-
const desc = await Promise.race([
|
|
311
|
-
service.describeImage(imageData),
|
|
312
|
-
new Promise((_resolve, reject) => setTimeout(() => reject(new Error('vision 超时')), ARCHIVE_DESCRIBE_TIMEOUT_MS)),
|
|
313
|
-
]);
|
|
314
|
-
return (desc ?? '').trim();
|
|
315
|
-
}
|
|
316
|
-
catch (err) {
|
|
317
|
-
caps.logger.use.debug(`[image-sender] vision 失败,跳过描述: ${err instanceof Error ? err.message : err}`);
|
|
318
|
-
return '';
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
/** 调 media.describeVideo,超时或失败返回空串(视频抽帧耗时长,用更宽松的超时)。 */
|
|
322
|
-
async function safeDescribeVideo(caps, videoUrl) {
|
|
323
|
-
const service = caps.media.present ? caps.media.use : undefined;
|
|
324
|
-
if (!service?.describeVideo)
|
|
325
|
-
return '';
|
|
326
|
-
try {
|
|
327
|
-
const desc = await Promise.race([
|
|
328
|
-
service.describeVideo(videoUrl),
|
|
329
|
-
new Promise((_resolve, reject) => setTimeout(() => reject(new Error('video 描述超时')), VIDEO_DESCRIBE_TIMEOUT_MS)),
|
|
330
|
-
]);
|
|
331
|
-
return (desc ?? '').trim();
|
|
332
|
-
}
|
|
333
|
-
catch (err) {
|
|
334
|
-
caps.logger.use.debug(`[image-sender] video 描述失败,跳过: ${err instanceof Error ? err.message : err}`);
|
|
335
|
-
return '';
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
/** 把 AI 自己发出的图/语音/视频入档为一条 assistant 消息,让 memory_recall 能找到。 */
|
|
339
|
-
async function archiveOutboundAttachment(caps, sessionId, ref, description, kind) {
|
|
340
|
-
const archive = caps.archive.present ? caps.archive.use : undefined;
|
|
341
|
-
if (!archive?.saveMessage)
|
|
342
|
-
return;
|
|
343
|
-
const label = kind === 'video' ? '视频' : kind === 'audio' ? '音频' : '图片';
|
|
344
|
-
const message = {
|
|
345
|
-
...outboundMediaMessage(kind, ref, description),
|
|
346
|
-
timestamp: Date.now(),
|
|
347
|
-
metadata: { [WellKnownMetadataKeys.Source]: 'image-sender', [WellKnownMetadataKeys.SentRef]: ref },
|
|
348
|
-
};
|
|
349
|
-
try {
|
|
350
|
-
await archive.saveMessage(sessionId, message, {
|
|
351
|
-
debugLabel: `[image-sender] 已入档发送的${label}`,
|
|
319
|
+
async function markupToAttachments(message) {
|
|
320
|
+
// 各标记的存储地址:不是存储地址的为 undefined
|
|
321
|
+
const tags = [...message.content.matchAll(MEDIA_MARKUP)].map(([, tag, url]) => {
|
|
322
|
+
const ref = mediaRef(url);
|
|
323
|
+
return { kind: MARKUP_KIND[tag], ref: ref && isStorageUri(ref) ? ref : undefined };
|
|
352
324
|
});
|
|
325
|
+
if (!tags.some(({ ref }) => ref))
|
|
326
|
+
return;
|
|
327
|
+
const turn = turnOf(message);
|
|
328
|
+
const inScope = mediaScopeOf({ ...turn, approveFor: async (check) => check(actingIdentity(turn)) }, scopeServices);
|
|
329
|
+
// 各标记转成的附件:没转成的为 undefined,标记留在正文里
|
|
330
|
+
const converted = [];
|
|
331
|
+
for (const { kind, ref } of tags) {
|
|
332
|
+
converted.push(ref && (await markupMediaAllowed(ref, kind, inScope)) ? { kind, data: ref } : undefined);
|
|
333
|
+
}
|
|
334
|
+
let i = 0;
|
|
335
|
+
message.content = message.content.replace(MEDIA_MARKUP, whole => (converted[i++] ? '' : whole));
|
|
336
|
+
message.attachments = [...(message.attachments ?? []), ...converted.filter(att => att !== undefined)];
|
|
353
337
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
catch {
|
|
364
|
-
return undefined;
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* 在最近 200 条消息里寻找匹配 historyRef 的媒体来源:http(s) URL、存储库内文件的 storage URI,
|
|
369
|
-
* 或历史附件里的原样数据串(能否发送由调用方判定)。
|
|
370
|
-
*/
|
|
371
|
-
async function resolveHistoryRef(memory, storage, sessionId, ref) {
|
|
372
|
-
if (!memory.present)
|
|
373
|
-
return null;
|
|
374
|
-
const service = memory.use;
|
|
375
|
-
const history = service.getFullHistory
|
|
376
|
-
? await service.getFullHistory(sessionId, 200)
|
|
377
|
-
: await service.getHistory(sessionId, 200);
|
|
378
|
-
const normalized = ref.replace(/^ref:/, '').trim();
|
|
379
|
-
// http(s) ref:直接当 URL 用
|
|
380
|
-
if (normalized.startsWith('http://') || normalized.startsWith('https://')) {
|
|
381
|
-
return normalized;
|
|
338
|
+
/**
|
|
339
|
+
* 出站消息所在的那一轮:按回合 id 取回在跑的那一轮的输入拼出,会话取出站的目标会话(取用范围按它判);认不出的只有会话、
|
|
340
|
+
* 没有授权身份
|
|
341
|
+
*/
|
|
342
|
+
function turnOf(message) {
|
|
343
|
+
const [first, ...rest] = (message.turnId && turnInputs.get(message.turnId)) || [];
|
|
344
|
+
return first
|
|
345
|
+
? { ...originTurnOf([first.message, ...rest.map(input => input.message)], isOwner), sessionId: message.sessionId }
|
|
346
|
+
: { sessionId: message.sessionId, participants: [] };
|
|
382
347
|
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
if (asUri) {
|
|
348
|
+
/**
|
|
349
|
+
* 回复里存储地址的标记能不能转成附件:先过判据,再按 kind 核文件头。判不出、读不出(如读历史出错、根不存在)的按不能,标记
|
|
350
|
+
* 留在正文里
|
|
351
|
+
*/
|
|
352
|
+
async function markupMediaAllowed(uri, kind, inScope) {
|
|
389
353
|
try {
|
|
390
|
-
await
|
|
391
|
-
|
|
354
|
+
if (!(await inScope(uri)))
|
|
355
|
+
return false;
|
|
356
|
+
return (await loadStorageMedia(uri, kind)).ok;
|
|
392
357
|
}
|
|
393
|
-
catch {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}
|
|
397
|
-
// 回退:搜历史里 images / attachments 数组里包含 normalized 子串的项
|
|
398
|
-
for (const msg of history) {
|
|
399
|
-
const m = msg;
|
|
400
|
-
if (m.images?.length) {
|
|
401
|
-
for (const img of m.images) {
|
|
402
|
-
if (img.includes(normalized))
|
|
403
|
-
return img;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
if (m.attachments?.length) {
|
|
407
|
-
for (const att of m.attachments) {
|
|
408
|
-
if (att.data.includes(normalized))
|
|
409
|
-
return att.data;
|
|
410
|
-
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
logger.use.warn(`[image-sender] 回复里的媒体标记判不出归属或读不出,不转成附件: ${err instanceof Error ? err.message : err}`);
|
|
360
|
+
return false;
|
|
411
361
|
}
|
|
412
362
|
}
|
|
413
|
-
return null;
|
|
414
363
|
}
|
|
415
364
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":";;;AAGA,wBAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAe,YAAY,EAAU,CAAC;IACpC,WAAW,EAAE,eAAe;CAC7B,CAAC,CAAC"}
|
package/dist/texts.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM;;CAEF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;EAAwG,CAAC"}
|
package/dist/texts.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// 本插件自己的原文字典:显示名
|
|
2
|
+
import { defineTexts } from '@aalis/schema-i18n';
|
|
3
|
+
import en from './locales/en.js';
|
|
4
|
+
const SOURCE = {
|
|
5
|
+
displayName: '图片发送',
|
|
6
|
+
};
|
|
7
|
+
export const t = defineTexts({ ns: '@aalis/plugin-image-sender', language: 'zh-CN', source: SOURCE, locales: { en } });
|
|
8
|
+
//# sourceMappingURL=texts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,MAAM;CACX,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,4BAA4B,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-image-sender",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,28 +24,35 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/schema-
|
|
28
|
-
"@aalis/
|
|
29
|
-
"@aalis/api-
|
|
30
|
-
"@aalis/api-
|
|
31
|
-
"@aalis/api-
|
|
32
|
-
"@aalis/api-
|
|
33
|
-
"@aalis/
|
|
27
|
+
"@aalis/schema-i18n": ">=0.1.0 <1.0.0",
|
|
28
|
+
"@aalis/schema-message": ">=0.11.0 <1.0.0",
|
|
29
|
+
"@aalis/api-authority": ">=0.12.0 <1.0.0",
|
|
30
|
+
"@aalis/api-gateway": ">=0.10.0 <1.0.0",
|
|
31
|
+
"@aalis/api-hooks": ">=0.3.0 <1.0.0",
|
|
32
|
+
"@aalis/api-media": ">=0.13.0 <1.0.0",
|
|
33
|
+
"@aalis/api-memory": ">=0.9.0 <1.0.0",
|
|
34
|
+
"@aalis/api-session-manager": ">=0.12.0 <1.0.0",
|
|
35
|
+
"@aalis/api-storage": ">=0.9.0 <1.0.0",
|
|
36
|
+
"@aalis/api-tools": ">=0.12.0 <1.0.0",
|
|
37
|
+
"@aalis/util-file-signature": ">=0.1.0 <1.0.0"
|
|
34
38
|
},
|
|
35
39
|
"devDependencies": {
|
|
36
40
|
"@types/node": "^22.0.0",
|
|
37
41
|
"typescript": "^5.7.0",
|
|
38
|
-
"@aalis/core": "0.
|
|
42
|
+
"@aalis/core": "0.21.0",
|
|
43
|
+
"@aalis/api-agent": "0.11.0"
|
|
39
44
|
},
|
|
40
45
|
"peerDependencies": {
|
|
41
|
-
"@aalis/core": ">=0.
|
|
46
|
+
"@aalis/core": ">=0.21.0 <1.0.0"
|
|
42
47
|
},
|
|
43
48
|
"aalis": {
|
|
44
49
|
"service": {
|
|
45
50
|
"optional": [
|
|
51
|
+
"authority",
|
|
52
|
+
"hooks",
|
|
46
53
|
"memory",
|
|
47
54
|
"media",
|
|
48
|
-
"
|
|
55
|
+
"session-manager",
|
|
49
56
|
"storage",
|
|
50
57
|
"tools"
|
|
51
58
|
],
|