@lemoncat7/dsh-partner 1.10.4 → 1.10.6

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.
Files changed (71) hide show
  1. package/README.md +9 -1
  2. package/docs/THIRD_PARTY_LICENSES.md +36 -1
  3. package/docs/architecture.md +12 -1
  4. package/lib/api/features/attachments-api.d.ts +6 -0
  5. package/lib/api/features/attachments-api.d.ts.map +1 -0
  6. package/lib/api/features/attachments-api.js +20 -0
  7. package/lib/api/features/attachments-api.js.map +1 -0
  8. package/lib/api.d.ts +2 -0
  9. package/lib/api.d.ts.map +1 -1
  10. package/lib/api.js +3 -0
  11. package/lib/api.js.map +1 -1
  12. package/lib/attachments/service.d.ts +35 -0
  13. package/lib/attachments/service.d.ts.map +1 -0
  14. package/lib/attachments/service.js +122 -0
  15. package/lib/attachments/service.js.map +1 -0
  16. package/lib/attachments/tool.d.ts +8 -0
  17. package/lib/attachments/tool.d.ts.map +1 -0
  18. package/lib/attachments/tool.js +59 -0
  19. package/lib/attachments/tool.js.map +1 -0
  20. package/lib/channels/manager.d.ts +2 -0
  21. package/lib/channels/manager.d.ts.map +1 -1
  22. package/lib/channels/manager.js +12 -0
  23. package/lib/channels/manager.js.map +1 -1
  24. package/lib/channels/outbound-media.d.ts +1 -1
  25. package/lib/channels/outbound-media.d.ts.map +1 -1
  26. package/lib/channels/outbound-media.js +6 -10
  27. package/lib/channels/outbound-media.js.map +1 -1
  28. package/lib/client.js +27 -19
  29. package/lib/client.js.map +2 -2
  30. package/lib/collaboration/composition.d.ts +3 -1
  31. package/lib/collaboration/composition.d.ts.map +1 -1
  32. package/lib/collaboration/composition.js +30 -4
  33. package/lib/collaboration/composition.js.map +1 -1
  34. package/lib/execution/agent-support.d.ts.map +1 -1
  35. package/lib/execution/agent-support.js +2 -1
  36. package/lib/execution/agent-support.js.map +1 -1
  37. package/lib/index.d.ts.map +1 -1
  38. package/lib/index.js +6 -1
  39. package/lib/index.js.map +1 -1
  40. package/lib/pendant/card-image.d.ts +12 -2
  41. package/lib/pendant/card-image.d.ts.map +1 -1
  42. package/lib/pendant/card-image.js +25 -9
  43. package/lib/pendant/card-image.js.map +1 -1
  44. package/lib/pendant/image-coating.d.ts +8 -0
  45. package/lib/pendant/image-coating.d.ts.map +1 -0
  46. package/lib/pendant/image-coating.js +39 -0
  47. package/lib/pendant/image-coating.js.map +1 -0
  48. package/lib/pendant/motion-glare.d.ts +33 -0
  49. package/lib/pendant/motion-glare.d.ts.map +1 -0
  50. package/lib/pendant/motion-glare.js +56 -0
  51. package/lib/pendant/motion-glare.js.map +1 -0
  52. package/lib/pendant/renderer.d.ts.map +1 -1
  53. package/lib/pendant/renderer.js +26 -10
  54. package/lib/pendant/renderer.js.map +1 -1
  55. package/lib/pendant/settings-panel.d.ts.map +1 -1
  56. package/lib/pendant/settings-panel.js +2 -1
  57. package/lib/pendant/settings-panel.js.map +1 -1
  58. package/lib/pendant/settings.d.ts +2 -0
  59. package/lib/pendant/settings.d.ts.map +1 -1
  60. package/lib/pendant/settings.js +3 -2
  61. package/lib/pendant/settings.js.map +1 -1
  62. package/lib/pendant/surface.d.ts +7 -7
  63. package/lib/pendant/surface.d.ts.map +1 -1
  64. package/lib/pendant/surface.js +19 -9
  65. package/lib/pendant/surface.js.map +1 -1
  66. package/lib/pendant-renderer.js +202 -171
  67. package/lib/skills/task-planning.d.ts +2 -2
  68. package/lib/skills/task-planning.d.ts.map +1 -1
  69. package/lib/skills/task-planning.js +4 -1
  70. package/lib/skills/task-planning.js.map +1 -1
  71. package/package.json +1 -1
package/README.md CHANGED
@@ -6,7 +6,15 @@
6
6
 
7
7
  ## 兼容性
8
8
 
9
- 正式版 `1.10.3` 适配 DeepSeek Harness `0.1.2-rc.1`,需要 Node.js `22.19+` 或 `24+`。DSH 官方 Agent、Session、Settings、Tools 与客户端 UI 依赖均锁定到 `0.1.2-rc.1` 接口族。
9
+ 正式版 `1.10.6` 适配 DeepSeek Harness `0.1.2-rc.1`,需要 Node.js `22.19+` 或 `24+`。DSH 官方 Agent、Session、Settings、Tools 与客户端 UI 依赖均锁定到 `0.1.2-rc.1` 接口族。
10
+
11
+ ### 1.10.6:明确附件交付与角度高光
12
+
13
+ - 新增 `partner_send_attachment`,伙伴明确指定图片或文档路径,会话提供原生图片内容/下载链接,绑定渠道时发送真实文件;失败按交付 ID 重试,已确认成功的不重复发送。
14
+ - 普通 Markdown 引用不再隐式发送附件;内部看板与验收不逐项通知渠道。仅支持当前会话目录内真实文件,远端文件需先下载,单件上限 64 MB。
15
+ - 挂卡高光跟随真实倾角,不再循环扫光;保留图片原色、图片自适应及静止休眠。
16
+
17
+ 详见 [1.10.6 发布说明](docs/releases/1.10.6.md)。
10
18
 
11
19
  ### 1.10.3 修复:看板需求版本冲突
12
20
 
@@ -1,6 +1,41 @@
1
1
  # Bundled third-party licenses
2
2
 
3
- The pendant renderer bundles Three.js 0.185.1 (MIT) and Rapier 0.20.0 (Apache-2.0). Their licenses are reproduced below.
3
+ The pendant renderer bundles Three.js 0.185.1 (MIT) and Rapier 0.20.0 (Apache-2.0), and adapts the React Bits GlareHover gradient as an integrated pendant effect. Their licenses are reproduced below.
4
+
5
+ ## React Bits — GlareHover reference
6
+
7
+ Source: https://github.com/DavidHDev/react-bits/tree/main/src/content/Animations/GlareHover
8
+
9
+ The card-local gradient in `pendant/motion-glare.ts` adapts the -45-degree,
10
+ 250% background, 60/70/85% stops, 50% opacity and 650ms CSS ease from GlareHover.
11
+ It is integrated into the DSH partner application, not offered as a standalone
12
+ component or component collection. Hover is replaced with motion-driven activation.
13
+
14
+ MIT + Commons Clause License Condition v1.0
15
+
16
+ Copyright (c) 2026 David Haz
17
+
18
+ Permission is hereby granted, free of charge, to any person obtaining a copy
19
+ of this software and associated documentation files (the "Software"), to deal
20
+ in the Software without restriction, including without limitation the rights
21
+ to use, copy, modify, merge, publish, and distribute the Software **as part of an application, website, or product**, subject to the following conditions:
22
+
23
+ The above copyright notice and this permission notice shall be included in all
24
+ copies or substantial portions of the Software.
25
+
26
+ ### Commons Clause Restriction
27
+
28
+ You may use this Software, including for any commercial purpose, **so long as you do not sell, sublicense, or redistribute the components themselves-whether alone, in a bundle, or as a ported version.**
29
+
30
+ ### No Warranty
31
+
32
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
35
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
36
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
37
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
38
+ SOFTWARE.
4
39
 
5
40
  ## three
6
41
 
@@ -246,6 +246,15 @@ form and save feedback, using the shared companion draft and existing UI tokens.
246
246
  - `ui/board-refresh.ts` 合并刷新并用版本号丢弃旧响应,页面隐藏暂停轮询;进入需求后停止后台总览轮询。需求列表分批展示,任务阶段只展示非空阶段,避免堆叠空列。
247
247
  - `test/requirements.test.mjs` 覆盖范围确认、归档、权限、并发删除、执行取消、持久化重试;`test/channel-media.test.mjs` 验证子任务静默与需求最终通知。
248
248
 
249
+ ## 明确附件交付
250
+
251
+ - 每个伙伴作用域注册 `partner_send_attachment`,由伙伴明确指定 `path`,而非自动扫描生成工具或 Markdown 引用。会话普通回复不再通过链接隐式发送附件;需求汇总的既有文档投递流程保持独立。
252
+ - `attachments/service.ts` 校验当前会话目录内的真实文件(包括 realpath/符号链接边界、支持格式、64 MB 上限),保存只读语义的内容快照和 SQLite 交付回执。文件变化时拒绝提交;来源文件移动或删除后仍可按 `deliveryId` 重试。存储位于状态文件同级 `attachment-deliveries/`,权限 0700/0600,累计记录容量上限 512 MB,满后拒绝新交付,不自动删掉仍被会话引用的文件。
253
+ - `attachments/tool.ts` 通过 DSH `deferContext` 返回带来源的附件消息,图片使用原生 `attachments.saveImage` 持久化引用,文档使用已认证伙伴 API 下的下载链接。嵌套 `run_code` 沿用 DSH 的 deferred context 协议,不依赖模型复述 Markdown。`api/features/attachments-api.ts` 只接受交付 ID,核验完整性后强制 attachment 下载、nosniff/private/no-store,不接受任意文件路径、不提供匿名分享。
254
+ - 直接会话仅向自身绑定且已批准的渠道交付;内部看板执行、验收与汇总不逐项外发。服务复用已有微信上传协议,回执区分 sent/failed/none;相同会话同一用户输入下相同文件内容幂等,已确认成功的交付重试不重复发。网络成功但确认丢失或进程恰在外部发送与本地落盘间退出时仍可能重复,不能承诺跨微信 exactly-once。不自动重生成或无限重试。
255
+ - 不自动下载任意 URL、不读取其他伙伴的私有目录、不扫描中间产物。远端文件需由已有授权工具先下载到当前会话目录;无效路径明确报错。伙伴删除后下载入口拒绝其交付,文件保留规则与管理清理应另行明确。
256
+ - 回归:`test/attachment-delivery.test.mjs` 覆盖快照、重启回执、发送失败重试、成功去重、原生图片内容、内部渠道静默、跨伙伴拒绝、路径/符号链接边界、下载响应;`test/channel-media.test.mjs` 确认普通 Markdown 不再隐式交付。
257
+
249
258
  ## 主界面挂饰与消息
250
259
 
251
260
  - `pendant/frame-loop.ts` 独立负责可选 24/30/60 FPS 绘制调度(默认 30,旧配置自动兼容):定时器临近截止时间再进入 RAF,保留非整除刷新率的小数节奏,高频输入合并唤醒;运行时切换只重排唯一待执行回调,不重建 WebGL/物理场景,休眠中切换不启动循环。隐藏/卸载取消计时器和 RAF。物理仍以 120 Hz 固定小步推进,停顿后不追赶后台时间。握持状态不再强制常驻循环,绳子平稳后可休眠,保持弹簧位置和储能,移动/松手重新唤醒。
@@ -253,10 +262,11 @@ form and save feedback, using the shared companion draft and existing UI tokens.
253
262
  - 绳子材质由 `strap-style.ts`(色阶与宽度)、`strap-geometry.ts`(沿曲线的织纹/交错绳股/双侧缝线)和 `strap.ts`(固定 SVG 节点池)分层负责。设置预览和材质小样用 `strap-preview.tsx` 复用同一几何;纹理沿弧长和切线排布,最多 256 个采样、8 层路径,不使用模糊滤镜、逐根绳股 DOM 或额外 GPU 贴图。颜色、线宽等属性只在外观或尺寸变化时更新,静止时沿用渲染器休眠。
254
263
 
255
264
  - “卡片设置”位于定时任务之后,是独立工作区页面。`pendant/settings.ts` 负责设置校验,`use-settings.ts` 通过外部存储订阅统一管理当前浏览器的开关、材质、颜色和正面图片;跨标签同步,存储失败不覆盖已生效配置,未保存草稿不被其他标签覆盖。关闭会卸载挂饰、轮询和 GPU/物理资源,不影响服务端消息保留。
256
- - `pendant/settings-panel.tsx` 复用工作区表单、提示与按钮;预览使用静态 SVG,不额外创建 WebGL。`strap-style.ts` 为预览与实际绳子提供同一套视觉参数,不改变物理参数。`card-image.ts` 本地验证和解码 PNG/JPEG/WebP(5 MB、2500 万像素上限),裁切为 512×704 JPEG(最多 700000 字符)再保存到 localStorage;不接收外链/SVG,不上传图片。替换纹理复用原画布,异步解码使用修订号避免旧图片覆盖新设置或卸载后更新。
265
+ - `pendant/settings-panel.tsx` 复用工作区表单、提示与按钮;预览使用静态 SVG,不额外创建 WebGL。`strap-style.ts` 为预览与实际绳子提供同一套视觉参数,不改变物理参数。`card-image.ts` 本地验证和解码 PNG/JPEG/WebP(5 MB、2500 万像素上限),保留完整比例、最长边不超过 1024 的 JPEG(最多 700000 字符)到 localStorage;不接收外链/SVG,不上传图片。`imageFit` 默认 `contain` 完整显示,可切换 `cover` 居中铺满;CSS 预览与 Canvas 均等比缩放,空余部分统一使用卡面底色,切换不重编码或裁掉源图。旧版已裁切的图片无法恢复缺失像素,需重新上传。绘制仍复用 512×704 纹理和原画布,异步解码使用修订号避免旧图片覆盖新设置或卸载后更新。
257
266
 
258
267
  - `pendant/widget.tsx` 通过 DSH `shell.overlay` 加法插槽提供单一挂饰,独立于会话和伙伴面板;不修改宿主布局或 DSH 源码。
259
268
  - `pendant/renderer.ts` 是单独构建的同源 ESM 资源。使用 Three.js + Rapier 实现 React Bits Lanyard 风格交互,不是原组件的逐字移植;卡牌与纹理由插件生成,无外部模型/图片请求。渲染库打进独立资源,不成为用户安装时额外解析的运行时依赖。
269
+ - `pendant/surface.ts` 与 `image-coating.ts` 分开合成源图与光效,源图不参与照明/曝光映射,背面物理反射保持不变。正面的 `motion-glare.ts` 保留 React Bits GlareHover 斜向渐变形状,但取消时间进度、速度触发、淡出和循环:将固定世界光源/视线半角向量投影到卡片局部坐标,用实际四元数确定光带位置与强度(上限 38%)。同一角度输出完全一致,反向旋转沿原路返回,停住时保持反光;正反面过渡按朝向平滑衰减,减少动态效果时关闭。不改源图、法线、几何和背面通知,也不增加绘制、画布、计时器或 RAF;可见高光不阻止静止休眠。来源许可见 THIRD_PARTY_LICENSES.md。
260
270
  - 六像素拖动阈值隔离点击与拖动;取消、失焦和卸载释放指针捕获。静止后停止 RAF,后台暂停,卸载时销毁 GPU 与物理资源。WebGL 不可用时保留普通消息入口。
261
271
  - `pendant/physics.ts` 独立负责物理连接:三个弹性关节储存拉伸能量,球形关节允许卡牌翻面,固定 120Hz 物理步进与绘制帧率解耦。握持时停顿也能回弹,不靠松手时注入假的回弹冲量。拖动转向与实际时间采样的释放速度提供翻转惯性。
262
272
  - 拖动不施加人为坐标/长度限制。卡牌使用固定比例的正交视图,在独立的小 WebGL 画布中绘制,用 CSS transform 移动;拖动距离和物理深度不再改变绘制尺寸或放大卡牌。`pendant/strap.ts` 独立绘制矢量绳带,不分配全屏 GPU 缓冲。布局只在容器/窗口尺寸变化时读取,指针事件使用缓存的线性坐标映射。静止后休眠,不以固定时长截断回摆。
@@ -269,3 +279,4 @@ form and save feedback, using the shared companion draft and existing UI tokens.
269
279
  - `notifications/store.ts` 在主状态文件同目录保存 `partner-inbox.sqlite`,权限 0600,最多 200 条摘要(每条最多 2000 字符)及已读状态。它不是新的会话历史;完整内容仍在原任务/会话中。
270
280
  - `api/features/pendant-api.ts` 沿用原有 API 同源和写操作校验,只提供固定渲染资源、消息查询和批量已读。前端可见时每 4 秒条件查询(ETag);无变化不传正文,失败退避至 30 秒,隐藏或卸载时取消请求。
271
281
  - 验证:`test/pendant-inbox.test.mjs`、`test/pendant-physics.test.mjs`;构建后设置 `PARTNER_PLAYWRIGHT_MODULE` 并运行 `node scripts/verify-pendant.mjs`,使用隔离假数据检查 WebGL、真实拖拽、拉住停顿后的回弹与反向振荡、休眠、键盘、通知导航、移动端和清理。可设置 `PARTNER_PENDANT_VIDEO_DIR` 保存连续交互录像。
282
+ - 卡面验证:`test/pendant-motion-glare.test.mjs` 覆盖角度往返、固定姿态十秒不漂移、四元数等价、强度边界、减少动态效果和背面关闭;`test/pendant-surface.test.mjs` 覆盖共享 uniform 与背面不变。`scripts/verify-pendant-gloss.mjs` 检查 162 组原色误差、渐变参考对照、不同倾角的光带位移与对比度保护及无额外绘制。浏览器测试覆盖 hover 不改变反光、拖拽改变角度时更新、握持静止高光不循环并正常休眠。
@@ -0,0 +1,6 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import type { AttachmentDeliveryService } from '../../attachments/service.js';
3
+ import type { PartnerStore } from '../../store.js';
4
+ /** Protected by the same authenticated host prefix as the partner workspace. */
5
+ export declare function dispatchAttachmentsApi(req: IncomingMessage, res: ServerResponse, segments: string[], service: AttachmentDeliveryService, store: PartnerStore): Promise<boolean>;
6
+ //# sourceMappingURL=attachments-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments-api.d.ts","sourceRoot":"","sources":["../../../src/api/features/attachments-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,gFAAgF;AAChF,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,eAAe,EAAC,GAAG,EAAE,cAAc,EAAC,QAAQ,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,yBAAyB,EAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAYjL"}
@@ -0,0 +1,20 @@
1
+ import { httpError } from '../http.js';
2
+ /** Protected by the same authenticated host prefix as the partner workspace. */
3
+ export async function dispatchAttachmentsApi(req, res, segments, service, store) {
4
+ if (segments[0] !== 'attachments')
5
+ return false;
6
+ if (req.method !== 'GET' || segments.length !== 2)
7
+ throw httpError(404, 'unknown attachment endpoint');
8
+ const item = service.get(segments[1]);
9
+ if (!item || !store.snapshot().companions.some(c => c.id === item.companionId) || store.isCompanionRemoving(item.companionId))
10
+ throw httpError(404, '附件不存在');
11
+ const data = await service.bytes(item);
12
+ res.setHeader('content-type', item.mediaType);
13
+ res.setHeader('content-disposition', `attachment; filename="download"; filename*=UTF-8''${encodeURIComponent(item.name).replace(/'/g, '%27')}`);
14
+ res.setHeader('cache-control', 'private, no-store');
15
+ res.setHeader('x-content-type-options', 'nosniff');
16
+ res.setHeader('content-length', data.length);
17
+ res.end(data);
18
+ return true;
19
+ }
20
+ //# sourceMappingURL=attachments-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments-api.js","sourceRoot":"","sources":["../../../src/api/features/attachments-api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAoB,EAAC,GAAmB,EAAC,QAAkB,EAAC,OAAkC,EAAC,KAAmB;IAC7J,IAAG,QAAQ,CAAC,CAAC,CAAC,KAAG,aAAa;QAAC,OAAO,KAAK,CAAA;IAC3C,IAAG,GAAG,CAAC,MAAM,KAAG,KAAK,IAAE,QAAQ,CAAC,MAAM,KAAG,CAAC;QAAC,MAAM,SAAS,CAAC,GAAG,EAAC,6BAA6B,CAAC,CAAA;IAC7F,MAAM,IAAI,GAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAA;IACpC,IAAG,CAAC,IAAI,IAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,IAAI,CAAC,WAAW,CAAC,IAAE,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAC,MAAM,SAAS,CAAC,GAAG,EAAC,OAAO,CAAC,CAAA;IACjJ,MAAM,IAAI,GAAC,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC5C,GAAG,CAAC,SAAS,CAAC,qBAAqB,EAAC,qDAAqD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC7I,GAAG,CAAC,SAAS,CAAC,eAAe,EAAC,mBAAmB,CAAC,CAAA;IAClD,GAAG,CAAC,SAAS,CAAC,wBAAwB,EAAC,SAAS,CAAC,CAAA;IACjD,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAAA,OAAO,IAAI,CAAA;AAC3B,CAAC"}
package/lib/api.d.ts CHANGED
@@ -16,6 +16,7 @@ import type { RequirementService } from './requirements/service.js';
16
16
  import type { PartnerCollaborationService } from './collaboration/service.js';
17
17
  import type { PartnerSchedulerService } from './scheduler/service.js';
18
18
  import type { CompanionService } from './companions/service.js';
19
+ import type { AttachmentDeliveryService } from './attachments/service.js';
19
20
  import type { PartnerInboxStore } from './notifications/store.js';
20
21
  export interface WebServerLike {
21
22
  register(route: {
@@ -44,6 +45,7 @@ interface ApiRuntime {
44
45
  scheduler: PartnerSchedulerService;
45
46
  companions: CompanionService;
46
47
  inbox: PartnerInboxStore;
48
+ deliveries?: AttachmentDeliveryService;
47
49
  }
48
50
  export declare function registerPartnerApi(webServer: WebServerLike, prefix: string, runtime: ApiRuntime): () => void;
49
51
  export {};
package/lib/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAe,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAG/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,MAAM,IAAI,CAAA;CACxI;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,OAAO,GAAG;QAAE,YAAY,EAAE,YAAY,CAAA;KAAE,CAAA;IAC7C,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,sBAAsB,CAAA;IACnC,QAAQ,EAAE,cAAc,CAAA;IACxB,MAAM,EAAE,mBAAmB,CAAA;IAC3B,KAAK,EAAE,kBAAkB,CAAA;IACzB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,WAAW,EAAE,oBAAoB,CAAA;IACjC,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,gBAAgB,CAAA;IACvB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,aAAa,EAAE,2BAA2B,CAAA;IAC1C,SAAS,EAAE,uBAAuB,CAAA;IAClC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,KAAK,EAAE,iBAAiB,CAAA;CACzB;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,IAAI,CAU5G"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAe,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAG/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,MAAM,IAAI,CAAA;CACxI;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,OAAO,GAAG;QAAE,YAAY,EAAE,YAAY,CAAA;KAAE,CAAA;IAC7C,KAAK,EAAE,YAAY,CAAA;IACnB,WAAW,EAAE,sBAAsB,CAAA;IACnC,QAAQ,EAAE,cAAc,CAAA;IACxB,MAAM,EAAE,mBAAmB,CAAA;IAC3B,KAAK,EAAE,kBAAkB,CAAA;IACzB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,WAAW,EAAE,oBAAoB,CAAA;IACjC,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,gBAAgB,CAAA;IACvB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,aAAa,EAAE,2BAA2B,CAAA;IAC1C,SAAS,EAAE,uBAAuB,CAAA;IAClC,UAAU,EAAE,gBAAgB,CAAA;IAC5B,KAAK,EAAE,iBAAiB,CAAA;IACxB,UAAU,CAAC,EAAE,yBAAyB,CAAA;CACvC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,IAAI,CAU5G"}
package/lib/api.js CHANGED
@@ -4,6 +4,7 @@ import { requiredCompanion } from './channels/manager.js';
4
4
  import { memoryScope } from './agent-runtime.js';
5
5
  import { dispatchPartnerWorkspaceApi } from './api/features/workspace-api.js';
6
6
  import { dispatchPendantApi } from './api/features/pendant-api.js';
7
+ import { dispatchAttachmentsApi } from './api/features/attachments-api.js';
7
8
  import { assertSameOrigin, httpError, mutation, readObject, sendError, sendJson } from './api/http.js';
8
9
  export function registerPartnerApi(webServer, prefix, runtime) {
9
10
  return webServer.register({
@@ -28,6 +29,8 @@ async function dispatch(req, res, prefix, runtime) {
28
29
  throw httpError(409, '伙伴正在删除,请稍后刷新');
29
30
  if (await dispatchPendantApi(req, res, segments, runtime.inbox))
30
31
  return;
32
+ if (runtime.deliveries && await dispatchAttachmentsApi(req, res, segments, runtime.deliveries, runtime.store))
33
+ return;
31
34
  if (method === 'GET' && segments[0] === 'health')
32
35
  return sendJson(res, 200, { ok: true, service: 'dsh-partner', schemaVersion: 14 });
33
36
  if (method === 'GET' && segments[0] === 'models' && segments.length === 1) {
package/lib/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type PartnerOutboundAttachment } from '../channel-message.js';
2
+ export interface AttachmentDelivery {
3
+ id: string;
4
+ companionId: string;
5
+ sessionId: string;
6
+ name: string;
7
+ mediaType: string;
8
+ kind: 'image' | 'file';
9
+ size: number;
10
+ hash: string;
11
+ channel: 'pending' | 'sent' | 'failed' | 'none';
12
+ }
13
+ /** Explicit immutable deliveries, separate from mutable workspace files and board state. */
14
+ export declare class AttachmentDeliveryService {
15
+ private readonly root;
16
+ private readonly db;
17
+ private queues;
18
+ private constructor();
19
+ static open(root: string): Promise<AttachmentDeliveryService>;
20
+ serial<T>(sessionId: string, work: () => Promise<T>): Promise<T>;
21
+ get(id: string): AttachmentDelivery | undefined;
22
+ private save;
23
+ prepare(input: {
24
+ companionId: string;
25
+ sessionId: string;
26
+ turn: number;
27
+ cwd: string;
28
+ path: string;
29
+ channel: boolean;
30
+ }, signal: AbortSignal): Promise<AttachmentDelivery>;
31
+ bytes(item: AttachmentDelivery): Promise<Buffer>;
32
+ deliver(item: AttachmentDelivery, send: (file: PartnerOutboundAttachment) => Promise<void>): Promise<AttachmentDelivery>;
33
+ close(): void;
34
+ }
35
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/attachments/service.ts"],"names":[],"mappings":"AAMA,OAAO,EAA2B,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAE/F,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;IACnF,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;CACpG;AAGD,4FAA4F;AAC5F,qBAAa,yBAAyB;IAEhB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAU,OAAO,CAAC,QAAQ,CAAC,EAAE;IADtE,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO;WACM,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAS7D,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKtE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAK/C,OAAO,CAAC,IAAI;IAGN,OAAO,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoCvK,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhD,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAY9H,KAAK,IAAI,IAAI;CACd"}
@@ -0,0 +1,122 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { constants } from 'node:fs';
3
+ import { chmod, mkdir, open, realpath, readFile, writeFile } from 'node:fs/promises';
4
+ import { join } from 'node:path';
5
+ import { DatabaseSync } from 'node:sqlite';
6
+ import { extractOutboundAttachments } from '../channels/outbound-media.js';
7
+ import { PARTNER_MEDIA_MAX_BYTES } from '../channel-message.js';
8
+ const MAX_STORED_BYTES = 512 * 1024 * 1024;
9
+ /** Explicit immutable deliveries, separate from mutable workspace files and board state. */
10
+ export class AttachmentDeliveryService {
11
+ root;
12
+ db;
13
+ queues = new Map();
14
+ constructor(root, db) {
15
+ this.root = root;
16
+ this.db = db;
17
+ }
18
+ static async open(root) {
19
+ await mkdir(root, { recursive: true, mode: 0o700 });
20
+ const path = join(root, 'deliveries.sqlite'), db = new DatabaseSync(path);
21
+ try {
22
+ await chmod(path, 0o600);
23
+ db.exec('PRAGMA busy_timeout=3000; CREATE TABLE IF NOT EXISTS deliveries(id TEXT PRIMARY KEY, payload TEXT NOT NULL, size INTEGER NOT NULL);');
24
+ return new AttachmentDeliveryService(root, db);
25
+ }
26
+ catch (error) {
27
+ db.close();
28
+ throw error;
29
+ }
30
+ }
31
+ async serial(sessionId, work) {
32
+ const job = (this.queues.get(sessionId) ?? Promise.resolve()).catch(() => { }).then(work);
33
+ this.queues.set(sessionId, job);
34
+ try {
35
+ return await job;
36
+ }
37
+ finally {
38
+ if (this.queues.get(sessionId) === job)
39
+ this.queues.delete(sessionId);
40
+ }
41
+ }
42
+ get(id) {
43
+ if (!/^[a-f0-9]{64}$/.test(id))
44
+ return undefined;
45
+ const row = this.db.prepare('SELECT payload FROM deliveries WHERE id = ?').get(id);
46
+ return row ? JSON.parse(String(row.payload)) : undefined;
47
+ }
48
+ save(item) {
49
+ this.db.prepare('INSERT OR REPLACE INTO deliveries(id,payload,size) VALUES (?,?,?)').run(item.id, JSON.stringify(item), item.size);
50
+ }
51
+ async prepare(input, signal) {
52
+ signal.throwIfAborted();
53
+ if (!input.path || input.path.length > 4096 || /[\n\r<>`]/.test(input.path))
54
+ throw new Error('请提供单个真实文件路径,不要传 Markdown 或 URL');
55
+ const files = await extractOutboundAttachments(`[交付](<${input.path}>)`, input.cwd);
56
+ const file = files[0];
57
+ if (!file)
58
+ throw new Error('附件不可用:文件必须存在于当前会话目录内、格式受支持且不超过 64 MB。远端 URL 或沙箱文件请先下载到当前目录。');
59
+ const handle = await open(file.path, constants.O_RDONLY | constants.O_NOFOLLOW);
60
+ let data;
61
+ try {
62
+ const info = await handle.stat();
63
+ if (!info.isFile() || info.size > PARTNER_MEDIA_MAX_BYTES)
64
+ throw new Error('附件不是普通文件或超过 64 MB');
65
+ const buffer = Buffer.alloc(info.size + 1);
66
+ let count = 0;
67
+ while (count < buffer.length) {
68
+ signal.throwIfAborted();
69
+ const { bytesRead } = await handle.read(buffer, count, buffer.length - count, count);
70
+ if (!bytesRead)
71
+ break;
72
+ count += bytesRead;
73
+ }
74
+ const after = await handle.stat();
75
+ if (count !== info.size || after.mtimeMs !== info.mtimeMs || after.size !== info.size || await realpath(file.path) !== file.path)
76
+ throw new Error('文件正在变化,请生成完成后重试');
77
+ data = buffer.subarray(0, count);
78
+ }
79
+ finally {
80
+ await handle.close();
81
+ }
82
+ signal.throwIfAborted();
83
+ const hash = createHash('sha256').update(data).digest('hex');
84
+ const id = createHash('sha256').update(JSON.stringify([input.companionId, input.sessionId, input.turn, file.name, hash])).digest('hex');
85
+ const existing = this.get(id);
86
+ if (existing)
87
+ return existing;
88
+ const used = Number(this.db.prepare('SELECT COALESCE(SUM(size),0) AS total FROM deliveries').get().total);
89
+ if (used + data.length > MAX_STORED_BYTES)
90
+ throw new Error('附件交付存储已达到 512 MB,请先由管理员清理历史交付;未发送文件');
91
+ await writeFile(join(this.root, id), data, { flag: 'wx', mode: 0o600 }).catch(error => { if (error.code !== 'EEXIST')
92
+ throw error; });
93
+ const item = { id, companionId: input.companionId, sessionId: input.sessionId, name: file.name, mediaType: file.mediaType, kind: file.kind, size: data.length, hash, channel: input.channel ? 'pending' : 'none' };
94
+ await this.bytes(item);
95
+ this.save(item);
96
+ return item;
97
+ }
98
+ async bytes(item) {
99
+ const data = await readFile(join(this.root, item.id));
100
+ if (data.length !== item.size || createHash('sha256').update(data).digest('hex') !== item.hash)
101
+ throw new Error('交付附件校验失败,请重新提交原文件');
102
+ return data;
103
+ }
104
+ async deliver(item, send) {
105
+ if (item.channel === 'none' || item.channel === 'sent')
106
+ return item;
107
+ await this.bytes(item);
108
+ try {
109
+ await send({ path: join(this.root, item.id), name: item.name, kind: item.kind, mediaType: item.mediaType });
110
+ item.channel = 'sent';
111
+ this.save(item);
112
+ }
113
+ catch (error) {
114
+ item.channel = 'failed';
115
+ this.save(item);
116
+ throw error;
117
+ }
118
+ return item;
119
+ }
120
+ close() { this.db.close(); }
121
+ }
122
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/attachments/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,uBAAuB,EAAkC,MAAM,uBAAuB,CAAA;AAM/F,MAAM,gBAAgB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;AAE1C,4FAA4F;AAC5F,MAAM,OAAO,yBAAyB;IAEC;IAA+B;IAD5D,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAA;IACpD,YAAqC,IAAY,EAAmB,EAAgB;QAA/C,SAAI,GAAJ,IAAI,CAAQ;QAAmB,OAAE,GAAF,EAAE,CAAc;IAAG,CAAC;IACxF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAY;QAC5B,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QACzE,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACxB,EAAE,CAAC,IAAI,CAAC,qIAAqI,CAAC,CAAA;YAC9I,OAAO,IAAI,yBAAyB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,KAAK,CAAA;QAAC,CAAC;IAC7C,CAAC;IACD,KAAK,CAAC,MAAM,CAAI,SAAiB,EAAE,IAAsB;QACvD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC;YAAC,OAAO,MAAM,GAAG,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;IAC5G,CAAC;IACD,GAAG,CAAC,EAAU;QACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,SAAS,CAAA;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAuB,CAAC,CAAC,CAAC,SAAS,CAAA;IAChF,CAAC;IACO,IAAI,CAAC,IAAwB;QACnC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACpI,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,KAA4G,EAAE,MAAmB;QAC7I,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC9H,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,SAAS,KAAK,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAClF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;QACzF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;QAC/E,IAAI,IAAY,CAAA;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,uBAAuB;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;YAC/F,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;YAC1C,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,CAAC,cAAc,EAAE,CAAA;gBACvB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,KAAK,CAAC,CAAA;gBACpF,IAAI,CAAC,SAAS;oBAAE,MAAK;gBACrB,KAAK,IAAI,SAAS,CAAA;YACpB,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YACjC,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpK,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAClC,CAAC;gBAAS,CAAC;YAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAAC,CAAC;QAClC,MAAM,CAAC,cAAc,EAAE,CAAA;QACvB,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC5D,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,WAAW,EAAC,KAAK,CAAC,SAAS,EAAC,KAAK,CAAC,IAAI,EAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACnI,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7B,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAG,CAAC,KAAK,CAAC,CAAA;QAC1G,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACjG,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAA,CAAC,CAAC,CAAC,CAAA;QACpI,MAAM,IAAI,GAAuB,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;QACtO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,IAAwB;QAClC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACrD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACpI,OAAO,IAAI,CAAA;IACb,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAwB,EAAE,IAAwD;QAC9F,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QACnE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;YACvG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACxC,MAAM,KAAK,CAAA;QACb,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,KAAK,KAAW,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;CAClC"}
@@ -0,0 +1,8 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { ToolDefinition } from '@deepseek-ai/dsh-tools';
3
+ import type { PartnerStore } from '../store.js';
4
+ import type { ChannelManager } from '../channels/manager.js';
5
+ import type { AttachmentDeliveryService } from './service.js';
6
+ export declare const ATTACHMENT_PROTOCOL = "\u4EA4\u4ED8\u56FE\u7247\u6216\u6587\u6863\u65F6\uFF0C\u5982\u679C\u5F53\u524D\u63D0\u4F9B partner_send_attachment\uFF0C\u5FC5\u987B\u8C03\u7528\u5B83\uFF0Cpath \u586B\u751F\u6210\u5DE5\u5177\u8FD4\u56DE\u7684\u771F\u5B9E\u672C\u5730\u6587\u4EF6\u8DEF\u5F84\u3002\u666E\u901A Markdown \u94FE\u63A5\u4EC5\u662F\u5F15\u7528\uFF0C\u4E0D\u4EE3\u8868\u53D1\u9001\u6210\u529F\u3002\u5DE5\u5177\u4F1A\u628A\u6307\u5B9A\u6587\u4EF6\u663E\u793A\u5728\u4F1A\u8BDD\u4E2D\uFF0C\u5E76\u5728\u5F53\u524D\u4F1A\u8BDD\u7ED1\u5B9A\u6E20\u9053\u65F6\u53D1\u9001\u771F\u5B9E\u9644\u4EF6\uFF1B\u5FC5\u987B\u4EE5\u5DE5\u5177\u8FD4\u56DE\u7684 channel \u72B6\u6001\u4E3A\u51C6\u3002\u5931\u8D25\u7528 deliveryId \u91CD\u8BD5\u539F\u9644\u4EF6\uFF0C\u65E0\u9700\u91CD\u65B0\u751F\u6210\u3002\u8FDC\u7AEF\u6587\u4EF6\u5148\u4E0B\u8F7D\u5230\u5F53\u524D\u4F1A\u8BDD\u76EE\u5F55\uFF0C\u4E0D\u8981\u7F16\u9020 sandbox \u5730\u5740\u3002\u4E0D\u8981\u63D0\u4EA4\u4E2D\u95F4\u4EA7\u7269\u3001\u5185\u90E8\u6838\u9A8C\u6750\u6599\u6216\u7528\u6237\u672A\u8981\u6C42\u4EA4\u4ED8\u7684\u6587\u4EF6\u3002\u5DE5\u5177\u5B8C\u6210\u540E\u6700\u7EC8\u56DE\u590D\u53EA\u7B80\u8FF0\u7ED3\u8BBA\uFF0C\u4E0D\u8981\u518D\u6B21\u7C98\u8D34\u9644\u4EF6\u4E0B\u8F7D\u5730\u5740\u3002\u82E5\u4E34\u65F6\u6267\u884C\u73AF\u5883\u672A\u63D0\u4F9B\u6B64\u5DE5\u5177\uFF0C\u53EA\u5411\u8D1F\u8D23\u4EBA\u4EA4\u56DE\u771F\u5B9E\u6587\u4EF6\u4F4D\u7F6E\u548C\u7ED3\u679C\uFF0C\u4E0D\u5F97\u58F0\u79F0\u9644\u4EF6\u5DF2\u53D1\u9001\u3002";
7
+ export declare function attachmentTool(companionId: string, store: PartnerStore, service: AttachmentDeliveryService, ctx: Context, channels: ChannelManager, prefix: string): ToolDefinition;
8
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/attachments/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAE7D,eAAO,MAAM,mBAAmB,k9CAAsT,CAAA;AAEtV,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CA2CnL"}
@@ -0,0 +1,59 @@
1
+ import { createUserMessage } from '@deepseek-ai/dsh-llm';
2
+ import { isInternalTaskNotice } from '../channels/delivery-policy.js';
3
+ export const ATTACHMENT_PROTOCOL = '交付图片或文档时,如果当前提供 partner_send_attachment,必须调用它,path 填生成工具返回的真实本地文件路径。普通 Markdown 链接仅是引用,不代表发送成功。工具会把指定文件显示在会话中,并在当前会话绑定渠道时发送真实附件;必须以工具返回的 channel 状态为准。失败用 deliveryId 重试原附件,无需重新生成。远端文件先下载到当前会话目录,不要编造 sandbox 地址。不要提交中间产物、内部核验材料或用户未要求交付的文件。工具完成后最终回复只简述结论,不要再次粘贴附件下载地址。若临时执行环境未提供此工具,只向负责人交回真实文件位置和结果,不得声称附件已发送。';
4
+ export function attachmentTool(companionId, store, service, ctx, channels, prefix) {
5
+ return {
6
+ name: 'partner_send_attachment', description: '明确交付一个图片或文档到当前伙伴会话及其绑定渠道。path 与 deliveryId 二选一;前者提交当前会话目录内真实文件(64 MB 内),后者重试已保存附件。不是文件检索工具,不自动下载 URL,不跨伙伴读取文件。内部看板执行/验收仅展示在会话,不向渠道逐项发送。',
7
+ parameters: { type: 'object', properties: { path: { type: 'string' }, deliveryId: { type: 'string', description: '失败回执中的 ID;已成功的同一交付不会重复发送' } }, additionalProperties: false },
8
+ output: { schema: { type: 'string' }, render: (_args, value) => [{ type: 'text', text: String(value) }] },
9
+ presentCall: () => ({ card: 'generic', title: '交付图片或文档' }),
10
+ async execute(raw, exec) {
11
+ const input = raw;
12
+ if (!input || typeof input !== 'object' || (typeof input.path === 'string') === (typeof input.deliveryId === 'string'))
13
+ throw new Error('path 与 deliveryId 必须且只能提供一个');
14
+ const agent = exec.agent;
15
+ if (!agent)
16
+ throw new Error('附件交付需要当前伙伴会话');
17
+ const sessionId = agent.session.id;
18
+ return service.serial(sessionId, async () => {
19
+ exec.signal.throwIfAborted();
20
+ const state = store.snapshot(), route = state.sessions.find(s => s.sessionId === sessionId && s.companionId === companionId);
21
+ if (!route || !state.companions.some(c => c.id === companionId) || store.isCompanionRemoving(companionId))
22
+ throw new Error('当前会话不属于有效伙伴,不能交付附件');
23
+ const events = agent.session.snapshotEvents();
24
+ const origin = [...events].reverse().find(e => e.type === 'user/message' && (e.data.source.kind === 'user' || isInternalTaskNotice(e)));
25
+ const internal = origin ? isInternalTaskNotice(origin) : true;
26
+ const channel = route.kind !== 'local' && !internal;
27
+ const cwd = route.cwd ?? agent.session.header.cwd;
28
+ if (!cwd)
29
+ throw new Error('当前会话缺少工作目录');
30
+ let item = typeof input.deliveryId === 'string' ? service.get(input.deliveryId) : await service.serial('prepare', () => service.prepare({ companionId, sessionId, turn: origin?.seq ?? agent.session.seq, cwd, path: input.path, channel }, exec.signal));
31
+ if (!item || item.companionId !== companionId || item.sessionId !== sessionId)
32
+ throw new Error('附件交付不存在或不属于当前伙伴会话');
33
+ if (!channel && item.channel !== 'none')
34
+ throw new Error('当前执行不能向原渠道重发附件,请回到直接对话重试');
35
+ if (channel && item.channel === 'none' && typeof input.deliveryId === 'string')
36
+ throw new Error('这份附件原本仅供会话查看。若要正式发送到渠道,请使用 path 明确提交原文件');
37
+ const url = `${prefix.replace(/\/$/, '')}/attachments/${item.id}`;
38
+ const escaped = item.name.replace(/[\[\]\\]/g, '_');
39
+ const content = [{ type: 'text', text: `[下载附件:${escaped}](${url})` }];
40
+ if (item.kind === 'image') {
41
+ const ref = await ctx.attachments.saveImage({ data: await service.bytes(item), mediaType: item.mediaType, name: item.name });
42
+ content.push({ type: 'image', attachment: ref });
43
+ }
44
+ let error;
45
+ try {
46
+ item = await service.deliver(item, file => channels.sendExplicitAttachment(sessionId, file, exec.signal));
47
+ }
48
+ catch (cause) {
49
+ error = cause instanceof Error ? cause.message : String(cause);
50
+ }
51
+ const status = item.channel === 'sent' ? '渠道附件已发送' : item.channel === 'none' ? '仅交付到当前会话' : `渠道发送未完成,请用 deliveryId 重试:${item.id}`;
52
+ content.push({ type: 'text', text: status });
53
+ exec.deferContext(createUserMessage({ source: { kind: 'plugin', plugin: '@lemoncat7/dsh-partner', form: 'notice', summary: '伙伴附件交付' }, content }));
54
+ return JSON.stringify({ deliveryId: item.id, name: item.name, conversation: 'attachment_recorded', channel: item.channel, ...(error ? { error, retry: { deliveryId: item.id } } : {}) });
55
+ });
56
+ },
57
+ };
58
+ }
59
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/attachments/tool.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import type { WeixinRawItem } from './weixin/types.js';
7
7
  import type { AskUserQuestionAnswer, AskUserQuestionItem } from '@deepseek-ai/dsh-user-questions';
8
8
  import type { SettingsProvider } from '@deepseek-ai/dsh-settings';
9
9
  import type { Session, SessionEvent } from '@deepseek-ai/dsh-session';
10
+ import type { PartnerOutboundAttachment } from '../channel-message.js';
10
11
  import type { BoardTask } from '../tasks/domain.js';
11
12
  import type { BoardRequirement } from '../requirements/domain.js';
12
13
  export { isAutonomousDeliveryTurn } from './delivery-policy.js';
@@ -35,6 +36,7 @@ export declare class ChannelManager {
35
36
  delete(channelId: string): Promise<void>;
36
37
  setEnabled(channelId: string, enabled: boolean): Promise<void>;
37
38
  sendProactive(channelId: string, userId: string, text: string): Promise<void>;
39
+ sendExplicitAttachment(sessionId: string, file: PartnerOutboundAttachment, signal: AbortSignal): Promise<void>;
38
40
  notifyTaskResult(task: BoardTask): Promise<void>;
39
41
  notifyRequirementResult(item: BoardRequirement): Promise<void>;
40
42
  observeAutonomousResult(session: Session, event: SessionEvent): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/channels/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/channels/manager.ts"],"names":[],"mappings":"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"}
@@ -106,6 +106,18 @@ export class ChannelManager {
106
106
  async sendProactive(channelId, userId, text) {
107
107
  await this.sendProactiveReply(channelId, userId, { text, attachments: [] });
108
108
  }
109
+ async sendExplicitAttachment(sessionId, file, signal) {
110
+ const route = this.store.snapshot().sessions.find(s => s.sessionId === sessionId);
111
+ if (!route || route.kind === 'local')
112
+ throw new Error('当前会话没有绑定渠道');
113
+ const channel = requiredChannel(this.store, route.channelId);
114
+ if (!channel.enabled)
115
+ throw new Error('渠道已停用');
116
+ if (this.store.snapshot().pairings.find(p => p.channelId === route.channelId && p.userId === route.userId)?.status !== 'approved')
117
+ throw new Error('渠道联系人尚未批准');
118
+ const credential = await this.credentials.read(route.channelId);
119
+ await new WeixinApi(credential.baseUrl, credential.botToken).sendAttachment(route.userId, file, this.contextTokens.get(`${route.channelId}:${route.userId}`), signal);
120
+ }
109
121
  async notifyTaskResult(task) {
110
122
  if (task.requirementId)
111
123
  return;