@yfwu2020/dsh-selection-explain 0.10.6 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -3
- package/lib/client.js +728 -19
- package/lib/client.js.map +3 -3
- package/lib/host/analyze.js +130 -15
- package/lib/host/analyze.js.map +1 -1
- package/lib/host/attach.js +254 -0
- package/lib/host/attach.js.map +1 -0
- package/lib/host/history-attachments.js +184 -0
- package/lib/host/history-attachments.js.map +1 -0
- package/lib/host/history-store.js +45 -14
- package/lib/host/history-store.js.map +1 -1
- package/lib/host/http.js +7 -0
- package/lib/host/http.js.map +1 -1
- package/lib/host/mic.js +51 -6
- package/lib/host/mic.js.map +1 -1
- package/lib/host/plugin.js +5 -0
- package/lib/host/plugin.js.map +1 -1
- package/lib/host/promote.js +65 -13
- package/lib/host/promote.js.map +1 -1
- package/lib/host/tools.js +28 -0
- package/lib/host/tools.js.map +1 -1
- package/lib/types/host/attach.d.ts +77 -0
- package/lib/types/host/history-attachments.d.ts +108 -0
- package/lib/types/host/http.d.ts +7 -0
- package/lib/types/host/tools.d.ts +21 -0
- package/lib/types/host/types.d.ts +7 -0
- package/package.json +1 -1
package/lib/host/analyze.js
CHANGED
|
@@ -3,12 +3,14 @@ import { sendJson, readBody, BODY_LIMIT, sse } from './http.js';
|
|
|
3
3
|
import { sessionIdOf } from './context.js';
|
|
4
4
|
import { createAssistantMessage, createUserMessage, ReasoningEffortId, BlockAssembler, createToolResultMessage } from '@deepseek-ai/dsh-llm';
|
|
5
5
|
import { name } from './constants.js';
|
|
6
|
-
import { resolveToolNames, webFetchUsable, FS_TOOL_NAMES, describeToolCall,
|
|
6
|
+
import { resolveToolNames, webFetchUsable, FS_TOOL_NAMES, describeToolCall, isReadAllowed, runTool, digestToolResult } from './tools.js';
|
|
7
7
|
import { CHAT_SYSTEM_PROMPT, DETAIL_PROMPT, CODE_PROMPT, TRANSLATION_PROMPT } from '../prompts.js';
|
|
8
8
|
import { loadDesignSkill } from './design-skill.js';
|
|
9
9
|
import { systemMessageOf } from './messages.js';
|
|
10
10
|
import { createThinkFilter, splitLeakedReasoning, looksLikeLeakedReasoning } from './filters.js';
|
|
11
|
+
import { resolve } from 'node:path';
|
|
11
12
|
import { looksLikeReasoningRequired, looksLikeUnsupportedTier, EFFORT_LABEL } from './effort.js';
|
|
13
|
+
import { historyContentBlocks, looksLikeAttachmentFailure, readHistoryAttachments } from './history-attachments.js';
|
|
12
14
|
/** Owns analyze state for one plugin instance. */
|
|
13
15
|
export function createAnalyze(ctx, config, models, sessions, historyStore) {
|
|
14
16
|
/** 分钟级限流。 */
|
|
@@ -104,21 +106,91 @@ export function createAnalyze(ctx, config, models, sessions, historyStore) {
|
|
|
104
106
|
// 追问模式:客户端带 question 时,就是「就这段选中文字继续聊」
|
|
105
107
|
const question = typeof body.question === 'string' ? body.question.trim() : '';
|
|
106
108
|
const isChat = question.length > 0;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
// 这一轮的附件(追问):/api/attach 存好之后的持久引用。形状在这里**收敛一次**,
|
|
110
|
+
// 历史那条路用的也是同一个收敛器(见 history-attachments.ts)。
|
|
111
|
+
const currentAttachments = readHistoryAttachments(body.attachments);
|
|
112
|
+
const rawHistory = Array.isArray(body.history) ? body.history : [];
|
|
113
|
+
// 预算规划的结果(图片几张回带、几张降级),只用于上报与诊断
|
|
114
|
+
let historyImages = { kept: 0, omitted: 0, files: 0 };
|
|
115
|
+
// 历史里有没有真带过附件:决定"附件读不回来"时值不值得降级重试一次
|
|
116
|
+
let historyHadAttachments = false;
|
|
117
|
+
// 引用失效后的降级开关(置真 = 历史附件全部换成文字)
|
|
118
|
+
let historyDropped = false;
|
|
119
|
+
// 闭包里的 TS 收窄到不了:把 route 的两字段先取成常量(route 在更早处已经非空校验过)
|
|
120
|
+
const historySource = { provider: route.provider, model: route.model };
|
|
121
|
+
/**
|
|
122
|
+
* 历史规划(纯计算):预算、降级、以及**这次请求真的进了消息的那些附件**。
|
|
123
|
+
* 每次都要能重算 —— 引用失效时会降级再跑一遍(见下面 errored 分支里的那一跳)。
|
|
124
|
+
*/
|
|
125
|
+
function planHistory() {
|
|
126
|
+
if (!isChat)
|
|
127
|
+
return { blocks: [], kept: [], keptImages: 0, omittedImages: 0, keptFiles: 0, omittedFiles: 0 };
|
|
128
|
+
const window = rawHistory.slice(-20);
|
|
129
|
+
const turns = historyDropped
|
|
130
|
+
? window.map((turn) => {
|
|
131
|
+
const item = (turn ?? {});
|
|
132
|
+
return { role: item.role, text: item.text };
|
|
133
|
+
})
|
|
134
|
+
: window;
|
|
135
|
+
const plan = historyContentBlocks(turns, currentAttachments);
|
|
136
|
+
historyImages = { kept: plan.keptImages, omitted: plan.omittedImages, files: plan.keptFiles + plan.omittedFiles };
|
|
137
|
+
return plan;
|
|
138
|
+
}
|
|
139
|
+
/** 重建历史消息。 */
|
|
140
|
+
function buildHistoryMessages() {
|
|
141
|
+
const out = [];
|
|
142
|
+
if (!isChat)
|
|
143
|
+
return out;
|
|
144
|
+
const window = rawHistory.slice(-20);
|
|
145
|
+
const plan = planHistory();
|
|
146
|
+
window.forEach((turn, index) => {
|
|
111
147
|
const item = turn;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
148
|
+
if (!historyDropped && Array.isArray(item.attachments) && item.attachments.length > 0)
|
|
149
|
+
historyHadAttachments = true;
|
|
150
|
+
const content = plan.blocks[index] ?? [];
|
|
151
|
+
if (content.length === 0)
|
|
152
|
+
return;
|
|
115
153
|
if (item.role === 'assistant') {
|
|
116
|
-
|
|
154
|
+
out.push(createAssistantMessage({ content, source: historySource }));
|
|
117
155
|
}
|
|
118
156
|
else {
|
|
119
|
-
|
|
157
|
+
out.push(createUserMessage({ source: { kind: 'user' }, content }));
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 文件工具的**访客名单**:这次请求里"模型真的看得见"的文件,在磁盘上的绝对路径。
|
|
164
|
+
*
|
|
165
|
+
* 组成 = 本轮的附件 + 历史里真的拼进消息的那部分(`plan.kept`)。
|
|
166
|
+
* 不另算一套口径:**模型看得见的,才读得到**。
|
|
167
|
+
*
|
|
168
|
+
* 路径由附件服务按内容哈希推出(不碰磁盘,纯路径计算,所以每次请求重算没有成本);
|
|
169
|
+
* 引用不合法就当场丢掉 —— 它本来也读不出来,让门禁拒掉即可。
|
|
170
|
+
*/
|
|
171
|
+
function collectAttachedPaths() {
|
|
172
|
+
const paths = new Set();
|
|
173
|
+
const store = ctx.get('attachments');
|
|
174
|
+
if (!store || typeof store.fileHostPath !== 'function')
|
|
175
|
+
return paths;
|
|
176
|
+
const refs = [];
|
|
177
|
+
for (const item of currentAttachments)
|
|
178
|
+
if (item.kind === 'file')
|
|
179
|
+
refs.push(item.ref);
|
|
180
|
+
for (const item of planHistory().kept)
|
|
181
|
+
if (item.kind === 'file')
|
|
182
|
+
refs.push(item.ref);
|
|
183
|
+
for (const ref of refs) {
|
|
184
|
+
try {
|
|
185
|
+
const hostPath = store.fileHostPath(ref);
|
|
186
|
+
if (hostPath)
|
|
187
|
+
paths.add(resolve(hostPath));
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
/* 引用不合法:当它不存在(读的时候自然会被门禁拒) */
|
|
120
191
|
}
|
|
121
192
|
}
|
|
193
|
+
return paths;
|
|
122
194
|
}
|
|
123
195
|
const cacheKey = resultKeyOf(route.provider, route.model, sessionIdOf(body) + '|' + effort + '|' + (typeof body.stage === 'string' ? body.stage : 'translation'), background?.transcript ?? '', text, context);
|
|
124
196
|
const useResultCache = !isChat && config.resultCacheTtlMs > 0 && body.refresh !== true;
|
|
@@ -267,8 +339,19 @@ export function createAnalyze(ctx, config, models, sessions, historyStore) {
|
|
|
267
339
|
'背景用 #ffffff~#f7f7f8 一档,正文 #171717,次级文字 #6b7280,分隔线 rgba(0,0,0,.10),' +
|
|
268
340
|
'卡片底色与页面底拉开一档。**不要深色底**,也不要只写 prefers-color-scheme(宿主的深浅由用户设置决定,与系统不一定一致)。\n');
|
|
269
341
|
}
|
|
342
|
+
// 访客名单要在**拼系统提示词之前**算好:提示词里要告诉模型"你附的那几个文件也在可读范围里"。
|
|
343
|
+
//
|
|
344
|
+
// ⚠️ 措辞很要紧。原来写的是「范围:项目目录。超出该范围的路径会被拒绝」,再追加一句
|
|
345
|
+
// "附带的文件也能读" —— 实测模型会**逮住前半句直接放弃**:它一次 read 都不试,
|
|
346
|
+
// 就回"这个文件我读不了,它在附件仓,而我的工具被限制在项目目录"。
|
|
347
|
+
// 所以改成**先把可读范围说全**(项目 + 本次附带的文件),再说"除此之外会被拒"。
|
|
348
|
+
let attachedPaths = collectAttachedPaths();
|
|
270
349
|
const fileRule = wantsFsTools
|
|
271
|
-
?
|
|
350
|
+
? attachedPaths.size > 0
|
|
351
|
+
? `\n\n【文件访问】你可以用 read/grep/glob 读文件。**可读范围 = 当前项目(${readRoot || '不限'})加上用户这次附带的文件**(它们的只读副本在附件仓里,路径就在消息里给出)。除此之外的路径会被拒绝。` +
|
|
352
|
+
`\n · 附带的文件**直接 read 那个路径**就行 —— 不要还没试就断定"项目外读不了",也不要反复换 grep/glob 重试;` +
|
|
353
|
+
`\n · 引用文件内容时只取必要的一两行,不要整段粘贴。`
|
|
354
|
+
: `\n\n【文件访问】你可以用 read/grep/glob 查看当前项目里的文件(范围:${readRoot || '不限'})。超出该范围的路径会被拒绝;引用文件内容时只取必要的一两行,不要整段粘贴。`
|
|
272
355
|
: '';
|
|
273
356
|
const fetchRule = fetchBlockedSample
|
|
274
357
|
? `\n\n【抓取网页不可用】本机域名解析到保留地址段(${fetchBlockedSample}),网页抓取会被安全策略拒绝:只做联网搜索,**不要尝试抓取具体网址**(省掉一次注定失败的往返)。`
|
|
@@ -323,6 +406,13 @@ export function createAnalyze(ctx, config, models, sessions, historyStore) {
|
|
|
323
406
|
effort: sentEffort,
|
|
324
407
|
tools: toolSchemas.map((schema) => schema.name),
|
|
325
408
|
toolScope: agentScope,
|
|
409
|
+
// 这一轮请求里附件的情况:本轮带了几件、历史里回带/省略了几张。
|
|
410
|
+
// **一件都没有时不带这个字段**(保持 start 事件与从前逐字节一致)。
|
|
411
|
+
// 注意条件要算上"历史里回带的"—— 只看本轮附件的话,
|
|
412
|
+
// "第二问靠历史里的图回答"这种最该被看见的情况反而不上报。
|
|
413
|
+
...(currentAttachments.length > 0 || historyImages.kept > 0 || historyImages.omitted > 0 || historyImages.files > 0
|
|
414
|
+
? { attachments: { ...historyImages, current: currentAttachments.length } }
|
|
415
|
+
: {}),
|
|
326
416
|
...(toolFallbackUsed ? { toolFallbackUsed: true } : {}),
|
|
327
417
|
...(wantsFsTools ? { readRoot: readRoot || '(不限)' } : {}),
|
|
328
418
|
...(fetchBlockedSample ? { fetchBlocked: fetchBlockedSample } : {}),
|
|
@@ -355,8 +445,12 @@ export function createAnalyze(ctx, config, models, sessions, historyStore) {
|
|
|
355
445
|
const questionText = toolDigest
|
|
356
446
|
? `【本会话已经查到的结果】(同一会话里查过的,不要重复查同样的内容;只在与本轮问题相关时才用)\n${toolDigest}\n\n【用户这一轮的问题】\n${question}`
|
|
357
447
|
: question;
|
|
358
|
-
|
|
359
|
-
|
|
448
|
+
// 附件排在正文**前面**:模型先拿到材料(图片 / 文件句柄),再读到这一轮的问题。
|
|
449
|
+
// 没有附件时 content 与从前逐字节一致(一个元素、纯文本),既有行为一点不变。
|
|
450
|
+
const currentBlocks = currentAttachments.map((item) => item.kind === 'image' ? { type: 'image', attachment: item.ref } : { type: 'file', attachment: item.ref });
|
|
451
|
+
const questionContent = currentBlocks.length > 0 ? [...currentBlocks, { type: 'text', text: questionText }] : [{ type: 'text', text: questionText }];
|
|
452
|
+
let openingMessages = isChat
|
|
453
|
+
? [...buildHistoryMessages(), createUserMessage({ source: { kind: 'user' }, content: questionContent })]
|
|
360
454
|
: [];
|
|
361
455
|
try {
|
|
362
456
|
let errored = false;
|
|
@@ -508,6 +602,27 @@ export function createAnalyze(ctx, config, models, sessions, historyStore) {
|
|
|
508
602
|
outTokens: usage?.outputTokens,
|
|
509
603
|
});
|
|
510
604
|
if (errored) {
|
|
605
|
+
// 附件读不回来(对象仓里的字节被清理/损坏):把**历史**里的附件全降级成文字再试一次。
|
|
606
|
+
// 这是持久化带来的新故障面 —— 引用的寿命超过了那一轮,字节却不一定还在。
|
|
607
|
+
//
|
|
608
|
+
// ⚠️ 必须排在**换档重试前面**:换档是冲着"上游不认这个推理档"去的,
|
|
609
|
+
// 对"附件读不到"毫无意义 —— 排后面的话会先白烧两次模型调用(实测事件序列就是
|
|
610
|
+
// upstream-retry → upstream-retry → attachments-dropped),还会把档位无谓地换掉。
|
|
611
|
+
if (roundText.length === 0 && historyHadAttachments && !historyDropped && looksLikeAttachmentFailure(errorMessage, errorCode)) {
|
|
612
|
+
historyDropped = true;
|
|
613
|
+
historyImages = { kept: 0, omitted: 0, files: 0 };
|
|
614
|
+
openingMessages = [...buildHistoryMessages(), createUserMessage({ source: { kind: 'user' }, content: questionContent })];
|
|
615
|
+
// 历史附件被丢掉了 → 名单跟着缩小(只放"还看得见的"那些)
|
|
616
|
+
attachedPaths = collectAttachedPaths();
|
|
617
|
+
errored = false;
|
|
618
|
+
sse(res, {
|
|
619
|
+
type: 'notice',
|
|
620
|
+
code: 'attachments-dropped',
|
|
621
|
+
text: '历史里的附件已经读不回来了(可能被清理过),这一轮先不带上它,其余照常',
|
|
622
|
+
});
|
|
623
|
+
round -= 1;
|
|
624
|
+
continue;
|
|
625
|
+
}
|
|
511
626
|
// 一个字都没吐出来 → 可以安全重试**同一轮**(保守:已经吐出正文的失败不重试,
|
|
512
627
|
// 免得把半截答案丢掉)。重试换一个没试过的档位,而不是把档位去掉。
|
|
513
628
|
if (roundText.length === 0 && effortRetries > 0) {
|
|
@@ -619,12 +734,12 @@ export function createAnalyze(ctx, config, models, sessions, historyStore) {
|
|
|
619
734
|
const wantPath = typeof rawPath === 'string' ? rawPath : '';
|
|
620
735
|
const execution = !toolSchemas.some((schema) => schema.name === call.name)
|
|
621
736
|
? { content: [{ type: 'text', text: `(调用已拒绝:${call.name} 不在本次允许的工具中)` }], isError: true }
|
|
622
|
-
: FS_TOOL_NAMES.includes(call.name) && !
|
|
737
|
+
: FS_TOOL_NAMES.includes(call.name) && !isReadAllowed(readRoot, wantPath, attachedPaths)
|
|
623
738
|
? {
|
|
624
739
|
content: [
|
|
625
740
|
{
|
|
626
741
|
type: 'text',
|
|
627
|
-
text: `(越界已拒绝:文件类工具只能访问当前项目目录${readRoot ? `(${readRoot})` : ''}
|
|
742
|
+
text: `(越界已拒绝:文件类工具只能访问当前项目目录${readRoot ? `(${readRoot})` : ''},以及用户本次附带的文件;请求的路径是 ${wantPath || '(未给)'})`,
|
|
628
743
|
},
|
|
629
744
|
],
|
|
630
745
|
isError: true,
|
package/lib/host/analyze.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/host/analyze.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/host/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { sendJson, readBody, ATTACH_BODY_LIMIT } from './http.js';
|
|
3
|
+
import { readAttachmentRef } from './history-attachments.js';
|
|
4
|
+
/** 单次请求最多带几件(和主会话的观感一致:一次拖一堆也别失控)。 */
|
|
5
|
+
export const ATTACH_MAX_ITEMS = 10;
|
|
6
|
+
/** 回放附件时允许直接内联展示的图片类型(其余一律当下载处理)。 */
|
|
7
|
+
const IMAGE_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif']);
|
|
8
|
+
/** 单个文件的原始字节上限。图片另有服务自己的限额(默认 20 MiB),这里只做粗筛。 */
|
|
9
|
+
export const ATTACH_MAX_ITEM_BYTES = 20 * 1024 * 1024;
|
|
10
|
+
/**
|
|
11
|
+
* 附件层的错误码 → 人话。
|
|
12
|
+
*
|
|
13
|
+
* 为什么要翻:这些码是给适配器用的(`UNSUPPORTED_IMAGE_TYPE` 之类),
|
|
14
|
+
* 直接甩到小窗里用户看不懂;而"哪张图为什么被拒"恰恰是他要照着改的。
|
|
15
|
+
*/
|
|
16
|
+
const ATTACH_ERROR_TEXT = {
|
|
17
|
+
TOO_MANY_IMAGES: '一次带的图片太多了',
|
|
18
|
+
IMAGES_TOO_LARGE: '这几张图加起来太大了',
|
|
19
|
+
UNSUPPORTED_IMAGE_TYPE: '不是受支持的图片格式(PNG / JPEG / WebP / GIF)',
|
|
20
|
+
IMAGE_TOO_LARGE: '图片太大了',
|
|
21
|
+
IMAGE_TOO_MANY_PIXELS: '图片像素太多',
|
|
22
|
+
IMAGE_DIMENSION_TOO_LARGE: '图片单边尺寸超限',
|
|
23
|
+
IMAGE_TYPE_MISMATCH: '文件内容与它声明的图片类型不符',
|
|
24
|
+
INVALID_IMAGE: '这个图片文件损坏或格式不对',
|
|
25
|
+
INVALID_IMAGE_BASE64: '图片数据在上传途中损坏了',
|
|
26
|
+
INVALID_FILE_BASE64: '文件数据在上传途中损坏了',
|
|
27
|
+
ATTACHMENT_FILES_UNSUPPORTED: '本机没有启用文件附件存储',
|
|
28
|
+
ATTACHMENT_WRITE_FAILED: '附件写入失败',
|
|
29
|
+
ATTACHMENT_CORRUPT: '附件写入后校验不通过',
|
|
30
|
+
};
|
|
31
|
+
/** 从任意异常里取出稳定错误码(AttachmentError 的 code)。 */
|
|
32
|
+
function codeOf(error) {
|
|
33
|
+
const code = error?.code;
|
|
34
|
+
return typeof code === 'string' ? code : '';
|
|
35
|
+
}
|
|
36
|
+
/** 把附件层的失败翻译成一句给用户看的话。 */
|
|
37
|
+
export function explainAttachError(error) {
|
|
38
|
+
const code = codeOf(error);
|
|
39
|
+
const known = code ? ATTACH_ERROR_TEXT[code] : '';
|
|
40
|
+
if (known)
|
|
41
|
+
return { code, message: known };
|
|
42
|
+
const raw = error instanceof Error ? error.message : String(error);
|
|
43
|
+
return { code: code || 'ATTACHMENT_FAILED', message: raw };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 严格解 base64。
|
|
47
|
+
*
|
|
48
|
+
* 必须是 **canonical** 形式:`Buffer.from(x, 'base64')` 对畸形输入是"尽量解",
|
|
49
|
+
* 解完再编码回去跟原文比对才能确认没有静默丢字节。附件服务自己也这么查,
|
|
50
|
+
* 这里先查一遍是为了在**动到磁盘之前**就把坏包挡掉。
|
|
51
|
+
*/
|
|
52
|
+
export function decodeBase64(data) {
|
|
53
|
+
if (data.length === 0)
|
|
54
|
+
return new Uint8Array(0);
|
|
55
|
+
const buffer = Buffer.from(data, 'base64');
|
|
56
|
+
return buffer.toString('base64') === data ? new Uint8Array(buffer) : null;
|
|
57
|
+
}
|
|
58
|
+
/** 把请求体里的一项收敛成内部形状;形状不对返回 null。 */
|
|
59
|
+
export function readAttachInput(raw) {
|
|
60
|
+
if (!raw || typeof raw !== 'object')
|
|
61
|
+
return null;
|
|
62
|
+
const item = raw;
|
|
63
|
+
const kind = item.kind === 'image' ? 'image' : item.kind === 'file' ? 'file' : '';
|
|
64
|
+
if (!kind)
|
|
65
|
+
return null;
|
|
66
|
+
if (typeof item.data !== 'string')
|
|
67
|
+
return null;
|
|
68
|
+
const name = typeof item.name === 'string' ? item.name.trim().slice(0, 180) : '';
|
|
69
|
+
const mediaType = typeof item.mediaType === 'string' ? item.mediaType.trim().slice(0, 120) : '';
|
|
70
|
+
return {
|
|
71
|
+
kind,
|
|
72
|
+
// 图片必须带 mediaType(服务要拿它跟字节比对);文件不需要,给个兜底免得下游拿到空串
|
|
73
|
+
name: name || (kind === 'image' ? '粘贴的图片' : '未命名文件'),
|
|
74
|
+
mediaType: mediaType || 'application/octet-stream',
|
|
75
|
+
data: item.data,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/** 一次附件上传的入口(路由 handler)。 */
|
|
79
|
+
export function createAttach(ctx) {
|
|
80
|
+
const storeOf = () => ctx.get('attachments');
|
|
81
|
+
/** 存一件;返回它在该服务里的持久引用。 */
|
|
82
|
+
async function saveOne(store, item) {
|
|
83
|
+
if (item.kind === 'image') {
|
|
84
|
+
if (typeof store.saveImages !== 'function')
|
|
85
|
+
throw Object.assign(new Error('本机没有启用图片附件'), { code: 'ATTACHMENT_FILES_UNSUPPORTED' });
|
|
86
|
+
const bytes = decodeBase64(item.data);
|
|
87
|
+
if (bytes === null)
|
|
88
|
+
throw Object.assign(new Error('图片数据不是合法的 base64'), { code: 'INVALID_IMAGE_BASE64' });
|
|
89
|
+
const refs = await store.saveImages([{ data: bytes, mediaType: item.mediaType, name: item.name }]);
|
|
90
|
+
const ref = refs?.[0];
|
|
91
|
+
if (!ref)
|
|
92
|
+
throw Object.assign(new Error('图片没有拿到引用'), { code: 'ATTACHMENT_WRITE_FAILED' });
|
|
93
|
+
return ref;
|
|
94
|
+
}
|
|
95
|
+
if (typeof store.admitEncodedFile !== 'function') {
|
|
96
|
+
throw Object.assign(new Error('本机没有启用文件附件存储'), { code: 'ATTACHMENT_FILES_UNSUPPORTED' });
|
|
97
|
+
}
|
|
98
|
+
// 文件走服务自己的入口:它内部再查一次 canonical base64(空文件是合法的 0 字节)
|
|
99
|
+
return await store.admitEncodedFile({ data: item.data, name: item.name });
|
|
100
|
+
}
|
|
101
|
+
const handleAttach = (req, res) => {
|
|
102
|
+
void (async () => {
|
|
103
|
+
if (req.method !== 'POST') {
|
|
104
|
+
sendJson(res, 405, { ok: false, error: '只支持 POST' });
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
let body = {};
|
|
108
|
+
try {
|
|
109
|
+
const raw = await readBody(req, ATTACH_BODY_LIMIT);
|
|
110
|
+
body = raw ? JSON.parse(raw) : {};
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
sendJson(res, 400, { ok: false, code: 'BAD_BODY', error: `请求体读取失败:${String(error?.message ?? error)}` });
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const rawItems = Array.isArray(body.items) ? body.items : [];
|
|
117
|
+
if (rawItems.length === 0) {
|
|
118
|
+
sendJson(res, 400, { ok: false, code: 'NO_ITEMS', error: '没有要上传的内容' });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (rawItems.length > ATTACH_MAX_ITEMS) {
|
|
122
|
+
sendJson(res, 400, { ok: false, code: 'TOO_MANY_ITEMS', error: `一次最多带 ${ATTACH_MAX_ITEMS} 件附件` });
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const store = storeOf();
|
|
126
|
+
if (!store) {
|
|
127
|
+
sendJson(res, 503, { ok: false, code: 'ATTACHMENT_UNAVAILABLE', error: '这台机器没有启用附件服务(ctx.attachments 不可用)' });
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const items = [];
|
|
131
|
+
for (const rawItem of rawItems) {
|
|
132
|
+
const item = readAttachInput(rawItem);
|
|
133
|
+
if (!item) {
|
|
134
|
+
sendJson(res, 400, { ok: false, code: 'BAD_ITEM', error: '附件参数不完整(需要 kind / name / data)' });
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// base64 长度 ≈ 原始字节 × 4/3;粗筛一下再解,免得先分配一大块内存
|
|
138
|
+
if ((item.data.length * 3) / 4 > ATTACH_MAX_ITEM_BYTES) {
|
|
139
|
+
sendJson(res, 413, { ok: false, code: 'ITEM_TOO_LARGE', error: `「${item.name}」超过单件上限(${Math.round(ATTACH_MAX_ITEM_BYTES / 1024 / 1024)} MB)` });
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
items.push({ kind: item.kind, ref: await saveOne(store, item) });
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
const explained = explainAttachError(error);
|
|
147
|
+
const status = store.isAttachmentError?.(error) === true || explained.code !== 'ATTACHMENT_FAILED' ? 400 : 500;
|
|
148
|
+
sendJson(res, status, { ok: false, code: explained.code, error: explained.message, name: item.name });
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
sendJson(res, 200, { ok: true, items });
|
|
153
|
+
})().catch((error) => {
|
|
154
|
+
sendJson(res, 500, { ok: false, code: 'ATTACHMENT_FAILED', error: String(error?.message ?? error) });
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
/**
|
|
158
|
+
* 把存好的附件**读回来**给界面用。
|
|
159
|
+
*
|
|
160
|
+
* `GET /selection-explanation/api/attachment?ref=<base64url(JSON)>&kind=image|file`
|
|
161
|
+
*
|
|
162
|
+
* 为什么需要:用户发出去的那条消息里,附件只留了一个**引用**(气泡里要画缩略图),
|
|
163
|
+
* 而客户端在发送那一刻就把本地 object URL 释放了 —— 历史回放时更是连 File 都没有了。
|
|
164
|
+
* 所以图片必须能从宿主再取一次。主会话的图片也是这么显示的(它走自己的鉴权路由)。
|
|
165
|
+
*
|
|
166
|
+
* 安全性:路径**不由客户端给**,而是把引用交给附件服务,由它按内容哈希推导
|
|
167
|
+
* (`ensureReference` 只认 `sha256:<64位hex>`;文件那条还会校验
|
|
168
|
+
* `ref.name === fileLeafName(ref.name)`,所以 `../` 之类的名字一律被拒)。
|
|
169
|
+
* 另外响应只允许白名单里的图片类型,且带 `nosniff` —— 免得有人把非图片标成 image/* 让浏览器去嗅探。
|
|
170
|
+
*/
|
|
171
|
+
const handleAttachment = (req, res) => {
|
|
172
|
+
void (async () => {
|
|
173
|
+
if (req.method !== 'GET' && req.method !== 'HEAD') {
|
|
174
|
+
sendJson(res, 405, { ok: false, error: '只支持 GET' });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
let params;
|
|
178
|
+
try {
|
|
179
|
+
params = new URL(req.url ?? '/', 'http://localhost').searchParams;
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
sendJson(res, 400, { ok: false, error: '请求地址解析失败' });
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const encoded = params.get('ref') ?? '';
|
|
186
|
+
let ref = null;
|
|
187
|
+
try {
|
|
188
|
+
const json = Buffer.from(encoded.replace(/-/g, '+').replace(/_/g, '/'), 'base64').toString('utf8');
|
|
189
|
+
ref = readAttachmentRef(JSON.parse(json));
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
ref = null;
|
|
193
|
+
}
|
|
194
|
+
if (!ref) {
|
|
195
|
+
sendJson(res, 400, { ok: false, error: '附件引用不完整' });
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const store = storeOf();
|
|
199
|
+
if (!store) {
|
|
200
|
+
sendJson(res, 503, { ok: false, error: '这台机器没有启用附件服务' });
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const kind = params.get('kind') === 'file' ? 'file' : params.get('kind') === 'image' ? 'image' : ref.mediaType ? 'image' : 'file';
|
|
204
|
+
const download = params.get('download') === '1';
|
|
205
|
+
try {
|
|
206
|
+
const hostPath = kind === 'image'
|
|
207
|
+
? typeof store.imageHostPath === 'function'
|
|
208
|
+
? store.imageHostPath(ref)
|
|
209
|
+
: undefined
|
|
210
|
+
: typeof store.fileHostPath === 'function'
|
|
211
|
+
? store.fileHostPath(ref)
|
|
212
|
+
: undefined;
|
|
213
|
+
if (!hostPath) {
|
|
214
|
+
sendJson(res, 501, { ok: false, error: '当前附件后端不提供文件系统路径,无法回放' });
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const bytes = await readFile(hostPath);
|
|
218
|
+
// 图片类型走白名单(客户端可以改 query,但不能改服务的归一化结果);
|
|
219
|
+
// 其他一律 octet-stream + attachment,绝不让浏览器当页面渲染
|
|
220
|
+
const imageType = kind === 'image' && IMAGE_TYPES.has(String(ref.mediaType)) ? String(ref.mediaType) : '';
|
|
221
|
+
const headers = {
|
|
222
|
+
'content-type': imageType || 'application/octet-stream',
|
|
223
|
+
'content-length': String(bytes.byteLength),
|
|
224
|
+
// 内容寻址 = 永不变,可以放心长缓存(同一张图反复显示不再回源)
|
|
225
|
+
'cache-control': 'private, max-age=31536000, immutable',
|
|
226
|
+
'x-content-type-options': 'nosniff',
|
|
227
|
+
};
|
|
228
|
+
if (!imageType || download) {
|
|
229
|
+
headers['content-disposition'] = `attachment; filename*=UTF-8''${encodeURIComponent(ref.name || 'attachment')}`;
|
|
230
|
+
}
|
|
231
|
+
res.writeHead(200, headers);
|
|
232
|
+
if (req.method === 'HEAD')
|
|
233
|
+
res.end();
|
|
234
|
+
else
|
|
235
|
+
res.end(bytes);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
// 不把内部路径回给调用方:ENOENT 的原文里带着 DSH_HOME 下的绝对路径,
|
|
239
|
+
// 而引用是客户端给的 —— 没必要让它知道我在这台机器上把附件放在哪儿。
|
|
240
|
+
const code = error?.code;
|
|
241
|
+
if (code === 'ENOENT') {
|
|
242
|
+
sendJson(res, 404, { ok: false, code: 'ATTACHMENT_MISSING', error: '这个附件已经不在附件仓里了(可能被清理过)' });
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const explained = explainAttachError(error);
|
|
246
|
+
sendJson(res, 404, { ok: false, code: explained.code, error: explained.message });
|
|
247
|
+
}
|
|
248
|
+
})().catch((error) => {
|
|
249
|
+
sendJson(res, 500, { ok: false, code: 'ATTACHMENT_FAILED', error: String(error?.message ?? error) });
|
|
250
|
+
});
|
|
251
|
+
};
|
|
252
|
+
return { handleAttach, handleAttachment };
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=attach.js.map
|