# `/get` 全路径文件读取设计

## 目标

将连接器的 `/get <路径>` 行为改为：只要运行连接器的 Node.js 进程能够读取目标普通文件，就允许将文件下发给远端 IM。

## 行为范围

- 取消当前工作目录、会话运行目录、附件目录、已知项目目录和历史文件精确授权的路径限制。
- 允许读取隐藏文件以及隐藏目录内的文件。
- 允许读取当前配置列为危险扩展名的文件。
- 允许读取空文件。
- 不再执行 `maxOutgoingAttachmentBytes` 文件大小限制。
- 保留目标存在、目标为普通文件以及 Node.js 进程实际可读的技术校验。
- 绝对路径和相对路径继续沿用现有解析规则；相对路径仍以当前会话相关目录解析。
- 文件仍通过现有 `outbound_message` 协议以 base64 下发。

## 实现方案

直接简化 `src/core/fileReferences.js` 中的 `validateGetFile()`：移除目录归属、隐藏路径、空文件、大小和危险扩展名判断，解析目标真实路径后检查普通文件及读取权限。

`src/command/fileGet.js` 保持统一调用 `validateGetFile()`，不增加仅针对 `/get` 的旁路逻辑，也不增加新的配置开关。这样所有依赖相同校验函数的本地文件引用行为保持一致。

历史文件授权与已知项目发现逻辑可以继续保留给历史和项目功能使用，但不再构成 `/get` 的读取边界。若改动造成仅服务旧读取边界的导入或参数失去用途，只删除本次改动直接产生的无用代码。

## 错误处理

- 路径不存在时返回现有“文件不存在”错误。
- 目标不是普通文件时返回现有“不是普通文件”错误。
- Node.js 进程无权访问或读取文件时返回明确的读取失败错误，不让同步文件读取异常中断连接器消息处理。
- WebSocket、远端服务或操作系统自身的传输和资源上限不属于 `/get` 权限限制，本次不修改。

## 测试

按照 TDD 流程先修改或新增测试，覆盖以下行为并确认旧实现失败：

- 工作区及已知项目之外的绝对路径可以读取。
- 隐藏文件可以读取。
- 危险扩展名文件可以读取。
- 空文件可以读取。
- 超过 `maxOutgoingAttachmentBytes` 的文件可以读取。
- 不存在的路径、目录和不可读文件仍返回错误。

完成实现后运行 `/get`、文件引用和历史文件授权相关测试，再运行完整 `npm test`。
