@yfwu2020/dsh-selection-explain 0.10.5 → 0.11.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.
@@ -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, isInsideRoot, runTool, digestToolResult } from './tools.js';
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
- const historyMessages = [];
108
- if (isChat) {
109
- const rawHistory = Array.isArray(body.history) ? body.history : [];
110
- for (const turn of rawHistory.slice(-20)) {
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
- const text = typeof item.text === 'string' ? item.text : '';
113
- if (!text)
114
- continue;
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
- historyMessages.push(createAssistantMessage({ content: [{ type: 'text', text }], source: { provider: route.provider, model: route.model } }));
154
+ out.push(createAssistantMessage({ content, source: historySource }));
117
155
  }
118
156
  else {
119
- historyMessages.push(createUserMessage({ source: { kind: 'user' }, content: [{ type: 'text', text }] }));
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
- ? `\n\n【文件访问】你可以用 read/grep/glob 查看当前项目里的文件(范围:${readRoot || '不限'})。超出该范围的路径会被拒绝;引用文件内容时只取必要的一两行,不要整段粘贴。`
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
- const openingMessages = isChat
359
- ? [...historyMessages, createUserMessage({ source: { kind: 'user' }, content: [{ type: 'text', text: questionText }] })]
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) && !isInsideRoot(readRoot, wantPath)
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})` : ''},请求的路径是 ${wantPath || '(未给)'})`,
742
+ text: `(越界已拒绝:文件类工具只能访问当前项目目录${readRoot ? `(${readRoot})` : ''},以及用户本次附带的文件;请求的路径是 ${wantPath || '(未给)'})`,
628
743
  },
629
744
  ],
630
745
  isError: true,
@@ -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