@lemoncat7/dsh-partner 1.9.2 → 1.10.3

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 (140) hide show
  1. package/README.md +21 -1
  2. package/docs/architecture.md +23 -0
  3. package/lib/agent-runtime.d.ts +3 -2
  4. package/lib/agent-runtime.d.ts.map +1 -1
  5. package/lib/agent-runtime.js +24 -66
  6. package/lib/agent-runtime.js.map +1 -1
  7. package/lib/api/features/workspace-api.d.ts +2 -0
  8. package/lib/api/features/workspace-api.d.ts.map +1 -1
  9. package/lib/api/features/workspace-api.js +49 -2
  10. package/lib/api/features/workspace-api.js.map +1 -1
  11. package/lib/api.d.ts +2 -0
  12. package/lib/api.d.ts.map +1 -1
  13. package/lib/api.js.map +1 -1
  14. package/lib/channels/delivery-policy.d.ts +7 -0
  15. package/lib/channels/delivery-policy.d.ts.map +1 -1
  16. package/lib/channels/delivery-policy.js +44 -9
  17. package/lib/channels/delivery-policy.js.map +1 -1
  18. package/lib/channels/manager.d.ts +2 -0
  19. package/lib/channels/manager.d.ts.map +1 -1
  20. package/lib/channels/manager.js +36 -9
  21. package/lib/channels/manager.js.map +1 -1
  22. package/lib/channels/outbound-media.d.ts +6 -0
  23. package/lib/channels/outbound-media.d.ts.map +1 -0
  24. package/lib/channels/outbound-media.js +118 -0
  25. package/lib/channels/outbound-media.js.map +1 -0
  26. package/lib/client-api.d.ts +3 -0
  27. package/lib/client-api.d.ts.map +1 -1
  28. package/lib/client-api.js.map +1 -1
  29. package/lib/client.d.ts.map +1 -1
  30. package/lib/client.js +1424 -1067
  31. package/lib/client.js.map +4 -4
  32. package/lib/collaboration/composition.d.ts +3 -1
  33. package/lib/collaboration/composition.d.ts.map +1 -1
  34. package/lib/collaboration/composition.js +38 -14
  35. package/lib/collaboration/composition.js.map +1 -1
  36. package/lib/collaboration/service.d.ts +3 -0
  37. package/lib/collaboration/service.d.ts.map +1 -1
  38. package/lib/collaboration/service.js +46 -10
  39. package/lib/collaboration/service.js.map +1 -1
  40. package/lib/domain.d.ts +2 -0
  41. package/lib/domain.d.ts.map +1 -1
  42. package/lib/domain.js.map +1 -1
  43. package/lib/execution/agent-support.d.ts.map +1 -1
  44. package/lib/execution/agent-support.js +27 -3
  45. package/lib/execution/agent-support.js.map +1 -1
  46. package/lib/execution/service.d.ts +1 -0
  47. package/lib/execution/service.d.ts.map +1 -1
  48. package/lib/execution/service.js +8 -0
  49. package/lib/execution/service.js.map +1 -1
  50. package/lib/index.d.ts.map +1 -1
  51. package/lib/index.js +19 -3
  52. package/lib/index.js.map +1 -1
  53. package/lib/pendant/renderer.d.ts +1 -0
  54. package/lib/pendant/renderer.d.ts.map +1 -1
  55. package/lib/pendant/renderer.js +4 -0
  56. package/lib/pendant/renderer.js.map +1 -1
  57. package/lib/pendant/widget.js +3 -1
  58. package/lib/pendant/widget.js.map +1 -1
  59. package/lib/pendant-renderer.js +6 -6
  60. package/lib/requirements/archive.d.ts +4 -0
  61. package/lib/requirements/archive.d.ts.map +1 -0
  62. package/lib/requirements/archive.js +14 -0
  63. package/lib/requirements/archive.js.map +1 -0
  64. package/lib/requirements/consolidation.d.ts +11 -0
  65. package/lib/requirements/consolidation.d.ts.map +1 -0
  66. package/lib/requirements/consolidation.js +50 -0
  67. package/lib/requirements/consolidation.js.map +1 -0
  68. package/lib/requirements/domain.d.ts +43 -0
  69. package/lib/requirements/domain.d.ts.map +1 -0
  70. package/lib/requirements/domain.js +2 -0
  71. package/lib/requirements/domain.js.map +1 -0
  72. package/lib/requirements/progress.d.ts +7 -0
  73. package/lib/requirements/progress.d.ts.map +1 -0
  74. package/lib/requirements/progress.js +17 -0
  75. package/lib/requirements/progress.js.map +1 -0
  76. package/lib/requirements/revisions.d.ts +19 -0
  77. package/lib/requirements/revisions.d.ts.map +1 -0
  78. package/lib/requirements/revisions.js +41 -0
  79. package/lib/requirements/revisions.js.map +1 -0
  80. package/lib/requirements/service.d.ts +20 -0
  81. package/lib/requirements/service.d.ts.map +1 -0
  82. package/lib/requirements/service.js +156 -0
  83. package/lib/requirements/service.js.map +1 -0
  84. package/lib/requirements/tool.d.ts +5 -0
  85. package/lib/requirements/tool.d.ts.map +1 -0
  86. package/lib/requirements/tool.js +58 -0
  87. package/lib/requirements/tool.js.map +1 -0
  88. package/lib/requirements/worker.d.ts +30 -0
  89. package/lib/requirements/worker.d.ts.map +1 -0
  90. package/lib/requirements/worker.js +165 -0
  91. package/lib/requirements/worker.js.map +1 -0
  92. package/lib/skills/builtin.js +2 -2
  93. package/lib/skills/builtin.js.map +1 -1
  94. package/lib/skills/task-planning.d.ts +3 -1
  95. package/lib/skills/task-planning.d.ts.map +1 -1
  96. package/lib/skills/task-planning.js +29 -13
  97. package/lib/skills/task-planning.js.map +1 -1
  98. package/lib/store.js +2 -0
  99. package/lib/store.js.map +1 -1
  100. package/lib/tasks/context.d.ts +8 -0
  101. package/lib/tasks/context.d.ts.map +1 -0
  102. package/lib/tasks/context.js +48 -0
  103. package/lib/tasks/context.js.map +1 -0
  104. package/lib/tasks/domain.d.ts +10 -0
  105. package/lib/tasks/domain.d.ts.map +1 -1
  106. package/lib/tasks/removal.d.ts +5 -0
  107. package/lib/tasks/removal.d.ts.map +1 -0
  108. package/lib/tasks/removal.js +43 -0
  109. package/lib/tasks/removal.js.map +1 -0
  110. package/lib/tasks/requirement-link.d.ts +4 -0
  111. package/lib/tasks/requirement-link.d.ts.map +1 -0
  112. package/lib/tasks/requirement-link.js +11 -0
  113. package/lib/tasks/requirement-link.js.map +1 -0
  114. package/lib/tasks/service.d.ts +13 -5
  115. package/lib/tasks/service.d.ts.map +1 -1
  116. package/lib/tasks/service.js +92 -27
  117. package/lib/tasks/service.js.map +1 -1
  118. package/lib/ui/board-refresh.d.ts +3 -0
  119. package/lib/ui/board-refresh.d.ts.map +1 -0
  120. package/lib/ui/board-refresh.js +42 -0
  121. package/lib/ui/board-refresh.js.map +1 -0
  122. package/lib/ui/requirement-board.d.ts +5 -0
  123. package/lib/ui/requirement-board.d.ts.map +1 -0
  124. package/lib/ui/requirement-board.js +47 -0
  125. package/lib/ui/requirement-board.js.map +1 -0
  126. package/lib/ui/requirement-dialog.d.ts +15 -0
  127. package/lib/ui/requirement-dialog.d.ts.map +1 -0
  128. package/lib/ui/requirement-dialog.js +53 -0
  129. package/lib/ui/requirement-dialog.js.map +1 -0
  130. package/lib/ui/requirement-tasks-panel.d.ts +8 -0
  131. package/lib/ui/requirement-tasks-panel.d.ts.map +1 -0
  132. package/lib/ui/requirement-tasks-panel.js +269 -0
  133. package/lib/ui/requirement-tasks-panel.js.map +1 -0
  134. package/lib/ui/task-board-panel.d.ts +2 -4
  135. package/lib/ui/task-board-panel.d.ts.map +1 -1
  136. package/lib/ui/task-board-panel.js +2 -288
  137. package/lib/ui/task-board-panel.js.map +1 -1
  138. package/lib/ui/workspace-components.js +1 -1
  139. package/lib/ui/workspace-components.js.map +1 -1
  140. package/package.json +1 -1
package/README.md CHANGED
@@ -6,7 +6,27 @@
6
6
 
7
7
  ## 兼容性
8
8
 
9
- 正式版 `1.9.2` 适配 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.3` 适配 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.3 修复:看板需求版本冲突
12
+
13
+ - 拆开需求范围/控制版本与完整进度版本,新增子任务、执行进度和评论不再使普通需求操作立即失效。
14
+ - 真正修改范围、分配或删除任务仍需核对新版本;最终归档和任务验收保持严格校验,过时汇总不会投递渠道。
15
+ - 冲突返回当前需求内容、状态、版本和处理建议;创建子任务同时返回所属需求版本,减少反复查询。
16
+ - 保持现有界面和数据,兼容旧记录及服务重启。构建及 241 项回归测试通过。
17
+
18
+ 详见 [1.10.3 发布说明](docs/releases/1.10.3.md)。
19
+
20
+ ### 1.10.0 更新:需求看板与统一交付
21
+
22
+ - 看板以需求组织子任务,区分进行中和已归档;完成分工后提交规划,全部子任务验收通过后由负责人汇总、归档并向需求来源渠道统一通知,不逐任务播报。
23
+ - 需求详情集中展示目标、进度、最终结论和交付记录;支持人工收尾、调整负责人及重试。任务阶段按需展开,空阶段不占位,复用现有字体、材质与弹窗,适配手机及平板横屏。
24
+ - 删除任务幂等处理,取消关联执行并忽略迟到结果;依赖者暂停,重新确认需求范围。归档结果保留交付快照,旧任务不自动猜测归属或清空。
25
+ - 汇总及投递失败持久化退避重试,重启继续;通知失败不会重新生成已保存的总结。人工从看板创建的需求不误发到其他渠道。
26
+ - 内置任务规划 Skill 升级至 `1.4.0`,明确需求归属及整体收尾;强调专业分工,区分伙伴技能与原生技能加载,不增加前置 Skill 或执行路由门禁。
27
+ - 包含渠道只提取最终答复、生成文件真实路径解析及挂卡数字位置优化。220 项测试和 60 个任务的六组响应式/主题交互验证通过。
28
+
29
+ 操作说明及兼容边界见 [1.10.0 发布说明](docs/releases/1.10.0.md)。
10
30
 
11
31
  ### 1.9.2 修复:中断后的待验收任务恢复
12
32
 
@@ -83,6 +83,15 @@ form and save feedback, using the shared companion draft and existing UI tokens.
83
83
  - Task activity, delegation and execution histories are bounded before commit.
84
84
  - Every state mutation is serialized by `PartnerStore`; task edits additionally
85
85
  use a revision to reject stale concurrent updates.
86
+ - Requirements retain `revision` for full snapshot/summary/delivery invalidation.
87
+ `controlRevision` records the last scope or lifecycle edit in that same sequence.
88
+ Ordinary requirement commands accept observed revisions between that boundary
89
+ and the current revision; child creation, progress and comments do not force a
90
+ new read. Child specification edits, removals, owner/scope edits and lifecycle
91
+ commands move the boundary. `finish` and task review remain exact-version checks.
92
+ Legacy records start conservatively at their current revision on their first
93
+ change. Conflicts return current requirement content and explicit reconciliation
94
+ guidance, never silently retry stale edits or regenerate a requirement.
86
95
  - Market downloads are bounded, checksum-verified when supplied, written into a
87
96
  temporary directory and atomically renamed.
88
97
  - Market discovery and package installation share one bounded transport. The
@@ -223,6 +232,20 @@ form and save feedback, using the shared companion draft and existing UI tokens.
223
232
  and permission changes. `scripts/verify-task-board.mjs` tests the actual panel
224
233
  with isolated fixtures across phone, landscape and desktop in both themes.
225
234
 
235
+ ## 需求看板与整体收尾
236
+
237
+ - `requirements/domain.ts` 与 `service.ts` 定义需求归属及规划、提交、汇总、归档生命周期。伙伴工具创建必须显式传入 requirementId,缺失时不产生任何记录;`tasks/requirement-link.ts` 给出依赖所属需求的核对线索,但不猜测归属。仅旧内部调用/人工接口保留单任务需求兼容逻辑。规划提交后不能直接增加任务,续做先重开规划。
238
+ - 同一目标续做可以明确 reopen 已归档需求,`requirements/archive.ts` 保留旧总结、交付快照和投递时间(最多 20 次,达到上限明确拒绝,不静默丢弃)。reopen 的 title/description 用于扩展新阶段范围,不失效已验收任务;update 才用于改写旧验收要求。仅重开不触发旧成果再通知,新增任务后按批次继续汇报。
239
+ - `requirements/consolidation.ts` 是显式维护用的纯状态操作,不注册伙伴工具、不按标题在启动时迁移。只允许同负责人、同来源、子任务全部完成且来源归档已通知的两个需求合并;保留原任务 ID、依赖、成果与归档历史,不重新执行或重复投递,版本变化立即拒绝。
240
+ - `requirements/worker.ts` 单并发汇总已提交且全部子任务验收通过的需求。总结及交付快照先持久化,再向原始创建渠道投递;失败指数退避,重启继续,已保存的总结不会因通知失败重新生成。投递复用持久化 receipt,已确认发送不重复发送;网络发送与本地 receipt 写入不是跨系统事务,不承诺绝对 exactly-once。
241
+ - `requirements/progress.ts` 独立判定阶段通知:非空需求只剩 done/blocked 且没有 queued/running 委派才可汇报;backlog/ready/doing/review 任一存在都静默。稳定 15 秒且负责人空闲后汇总一次;阶段内容与指纹先持久化,失败重试复用内容,追加任务会中止过时汇总。阶段通知不需要归档,明确确认整个需求完成后可以 finish 规划态需求;未完成或受阻任务禁止被伪装为完成归档。
242
+ - `tasks/context.ts` 为执行、核验和创建者回调提供同一份最新需求、任务补充、打回理由及上次交付。修改实际需求会原子失效旧执行,工作版本阻止迟到结果覆盖;核验 accept/reject 使用实际读取的任务版本,防止旧意见打回新版。普通讨论保留当前执行,但会使旧验收决定失效。已验收事件不再携带历史返工指令。
243
+ - 子任务完成、验收、受阻只反馈给内部创建伙伴;渠道不逐任务播报。人工从看板创建的需求不会自动投递到负责人的其他聊天。汇总输出沿用长结果文档及真实附件投递能力。
244
+ - `tasks/removal.ts` 原子移除任务、活动、委派,取消关联执行;未完成的依赖者暂停,并重新打开需求范围确认。重复删除成功,执行器迟到结果不能重建记录。归档保留不可变交付快照,删除子任务不会抹去最终结论。
245
+ - `ui/requirement-board.tsx` 负责需求总览与归档入口;`requirement-dialog.tsx` 负责需求表单和详情;`requirement-tasks-panel.tsx` 负责需求内的任务阶段和任务详情,`task-board-panel.tsx` 仅保留稳定入口。统一复用工作区表单、字体、色彩与弹窗,次要信息通过折叠区展示,无新增模糊层或卡片动画。
246
+ - `ui/board-refresh.ts` 合并刷新并用版本号丢弃旧响应,页面隐藏暂停轮询;进入需求后停止后台总览轮询。需求列表分批展示,任务阶段只展示非空阶段,避免堆叠空列。
247
+ - `test/requirements.test.mjs` 覆盖范围确认、归档、权限、并发删除、执行取消、持久化重试;`test/channel-media.test.mjs` 验证子任务静默与需求最终通知。
248
+
226
249
  ## 主界面挂饰与消息
227
250
 
228
251
  - `pendant/frame-loop.ts` 独立负责可选 24/30/60 FPS 绘制调度(默认 30,旧配置自动兼容):定时器临近截止时间再进入 RAF,保留非整除刷新率的小数节奏,高频输入合并唤醒;运行时切换只重排唯一待执行回调,不重建 WebGL/物理场景,休眠中切换不启动循环。隐藏/卸载取消计时器和 RAF。物理仍以 120 Hz 固定小步推进,停顿后不追赶后台时间。握持状态不再强制常驻循环,绳子平稳后可休眠,保持弹簧位置和储能,移动/松手重新唤醒。
@@ -14,8 +14,9 @@ import type { MemoryReflectionService } from './memory-reflection.js';
14
14
  import { type ConcernObservation, type ConcernObservationCandidate, type PartnerConcern } from './concern-domain.js';
15
15
  import type { PartnerConcernStore } from './concern-store.js';
16
16
  import type { BoardTask } from './tasks/domain.js';
17
- import type { PartnerInboundMessage, PartnerOutboundAttachment, PartnerReply } from './channel-message.js';
17
+ import type { PartnerInboundMessage, PartnerReply } from './channel-message.js';
18
18
  import { type ConcernSource } from './concern-sources.js';
19
+ export { extractOutboundAttachments } from './channels/outbound-media.js';
19
20
  export { renderToolProtocol, resolvePartnerAgentOptions as resolveAgentOptions } from './execution/agent-support.js';
20
21
  type RuntimeContext = Context & {
21
22
  agents: Context['agents'];
@@ -88,6 +89,7 @@ export declare class PartnerAgentRuntime {
88
89
  companion: Companion;
89
90
  prompt: string;
90
91
  parentSessionId?: string;
92
+ signal?: AbortSignal;
91
93
  }): Promise<{
92
94
  run: {
93
95
  id: string;
@@ -129,7 +131,6 @@ export declare class PartnerAgentRuntime {
129
131
  private attachSession;
130
132
  }
131
133
  export declare function selectTaskNotificationRoute(routes: readonly ChannelSession[], creatorSessionId: string | undefined, archived: (route: ChannelSession) => boolean): ChannelSession | undefined;
132
- export declare function extractOutboundAttachments(text: string, cwd: string): Promise<PartnerOutboundAttachment[]>;
133
134
  export declare function completedTurnEvents(events: readonly SessionEvent[], end: Extract<SessionEvent, {
134
135
  type: 'turn/end';
135
136
  }>): readonly SessionEvent[];
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAIlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,KAAK,EAAa,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAA2C,MAAM,oBAAoB,CAAA;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAErE,OAAO,EAA8B,KAAK,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAChJ,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAE1G,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAKjF,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAEpH,KAAK,cAAc,GAAG,OAAO,GAAG;IAC9B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzB,iBAAiB,EAAE,uBAAuB,CAAA;IAC1C,YAAY,EAAE,YAAY,CAAA;IAC1B,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,KAAK,EAAE,WAAW,CAAA;CACnB,CAAA;AASD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,EAAE,SAAS,EAAE,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;CACzG;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,KAAK,MAAM,IAAI,CAAA;AA4BzF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,UAAU,EAAE,2BAA2B,EAAE,CAAA;IACzC,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,kBAAkB,EAAE,CAAA;CAC5B;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE9D,qBAAa,mBAAmB;IAoB5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAzB5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiD;IACjF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6E;IAClH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAmC;IAC3E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAY;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,gBAAgB,CAAqC;gBAG1C,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,UAAU,CAAC,EAAE,uBAAuB,YAAA,EACpC,QAAQ,CAAC,EAAE,mBAAmB,YAAA,EAC9B,QAAQ,CAAC,EAAE,oBAAoB,YAAA;IAmBlD,mBAAmB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI;IAItD,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IASrH,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;YASxG,eAAe;IAyBvB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASxD,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA2BtE,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAQhE,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCvF,WAAW,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiChK,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAIpC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IActD,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS/G,4BAA4B,CAChC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,cAAc,EAAE,EAC1B,YAAY,EAAE,kBAAkB,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAgCV,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAqBlE,oBAAoB;IAa5B,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAUjE,mBAAmB;IAuC3B,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;YAevG,oBAAoB;YAMpB,uBAAuB;IAsB/B,uBAAuB,CAC3B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,gBAAgB,EACzB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IAcV,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,OAAO,CAAC,oBAAoB;IAUtB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,kFAAkF;IAC5E,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtF,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;YAK/B,gBAAgB;IAWxB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBd,0BAA0B;YAQ1B,KAAK;YAiCL,cAAc;YAwBd,aAAa;YAqBb,WAAW;YAQX,gBAAgB;YAgDhB,oBAAoB;IAuClC,OAAO,CAAC,mBAAmB;YAWb,aAAa;CAS5B;AAUD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,GAC3C,cAAc,GAAG,SAAS,CAM5B;AAMD,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAiChH;AAYD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GAAG,SAAS,YAAY,EAAE,CAY9I;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAoC;AAW1G,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,GAAE,uBAAuB,EAAO,GAAG,MAAM,CAczJ;AAyBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,SAAS,SAAS,EAAE,GAAG,OAAO,CAE7H;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAa,GAAG,cAAc,CAOzF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpE;AAuCD,UAAU,mBAAmB;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACrB;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAMhH;AA2ED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,2BAA2B,EAAE,CA8B5G;AAWD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACtB;AAoBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAe3H;AA+ED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,gBAAgB,EACzB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAwBR"}
1
+ {"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { mkdir, realpath, stat, writeFile } from 'node:fs/promises';
3
- import { basename, extname, isAbsolute, join, relative, resolve, sep } from 'node:path';
3
+ import { isAbsolute, join, relative, resolve, sep } from 'node:path';
4
4
  import { BlockAssembler, createToolResultMessage, createUserMessage } from '@deepseek-ai/dsh-llm';
5
5
  import { createScope, scopeOf, scopeParentOf } from '@deepseek-ai/dsh-scope';
6
6
  import { SessionConfigurationIndex } from './companions/session-configuration.js';
@@ -8,12 +8,15 @@ import { removeOwnedWorkspace } from './companions/workspace-cleanup.js';
8
8
  import { assertOwnedDirectory, removeOwnedDirectory } from './companions/directory-cleanup.js';
9
9
  import { concernObservationPrompt } from './autonomy.js';
10
10
  import { boundedConcernCheckMinutes } from './concern-domain.js';
11
+ import { taskWorkContext } from './tasks/context.js';
11
12
  import { PARTNER_MEDIA_MAX_BYTES, safeMediaName } from './channel-message.js';
12
13
  import { listConcernFileSources } from './concern-sources.js';
13
14
  import { CONCERN_CREATED_NOTICE, renderConcernCreatedNotice } from './concern-notification.js';
14
15
  import { HEARTBEAT_LOCAL_COMMAND, heartbeatLocalCommandTool } from './heartbeat-command.js';
15
16
  import { assistantTextAfter, renderPartnerPersona, renderToolProtocol, resolvePartnerAgentOptions as resolveAgentOptions } from './execution/agent-support.js';
16
- import { channelReplyTextAfter } from './channels/delivery-policy.js';
17
+ import { channelReplyPartsAfter } from './channels/delivery-policy.js';
18
+ import { prepareChannelReply } from './channels/outbound-media.js';
19
+ export { extractOutboundAttachments } from './channels/outbound-media.js';
17
20
  export { renderToolProtocol, resolvePartnerAgentOptions as resolveAgentOptions } from './execution/agent-support.js';
18
21
  const HEARTBEAT_TIMEOUT_MS = 115_000;
19
22
  const HEARTBEAT_DISCOVERY_BUDGET_MS = 72_000;
@@ -210,18 +213,22 @@ export class PartnerAgentRuntime {
210
213
  const route = selectTaskNotificationRoute(routes, task.creatorSessionId, item => this.isArchived(item))
211
214
  ?? await this.createLocalSession(companion.id);
212
215
  const agent = await this.ensureAgent(companion, route);
216
+ const latestTask = this.store.snapshot().tasks.find(item => item.id === task.id);
217
+ if (!latestTask || latestTask.revision !== task.revision)
218
+ return;
213
219
  const isReviewer = task.status === 'review' && task.reviewerCompanionId === companion.id;
214
220
  const instruction = isReviewer
215
- ? '这是伙伴内部验收,不是用户的新消息。执行伙伴已提交结果,现在默认由你验收。请根据任务要求真实核验已有产出;通过后必须调用 partner_task_board accept,不通过则调用 reject 并写明原因。不要重新执行该任务,不要向用户播报核验过程或 accept 操作;最终结果由系统直接投递。'
221
+ ? '这是伙伴内部验收,不是用户的新消息。执行伙伴已提交结果,现在默认由你验收。请根据任务要求真实核验已有产出;通过后必须调用 partner_task_board accept,不通过则调用 reject 并写明原因。不要重新执行该任务,不要向用户播报核验过程或 accept 操作;子任务不发送渠道通知,需求整体验收和汇总后由系统统一投递。'
216
222
  : task.status === 'review'
217
- ? '这是伙伴内部进度事件。执行结果已提交并等待指定伙伴验收;不要重新执行,也不要向用户播报中间进度。只在看板中推进必要的协作,最终结果由系统直接投递。'
223
+ ? '这是伙伴内部进度事件。执行结果已提交并等待指定伙伴验收;不要重新执行,也不要向用户播报中间进度。只在看板中推进必要的协作,子任务不发送渠道通知,需求整体验收和汇总后由系统统一投递。'
218
224
  : task.status === 'done'
219
- ? '这是你创建并分配的看板任务终态事件。不要重新执行已完成的工作。请检查依赖它的后续任务是否解锁,需要时继续在看板上分配。对用户的终态结果由系统直接投递,不要只改写成“已完成”或进度摘要。'
225
+ ? '这是你创建并分配的看板任务终态事件。不要重新执行已完成的工作。请检查依赖它的后续任务是否解锁,需要时继续在看板上分配。不要逐项向渠道通知;全部子任务验收完成后,系统会单独请求需求负责人汇总整个需求。'
220
226
  : '这是你创建并分配的看板任务受阻事件。请保留已有产出、检查是否能调整分工或解锁依赖;需要用户介入时,明确说明阻塞原因与所需动作。';
221
227
  agent.followup(createUserMessage({
222
228
  content: [{ type: 'text', text: [
223
229
  instruction,
224
230
  `任务:${task.title}`,
231
+ taskWorkContext(this.store.snapshot(), task),
225
232
  `状态:${previousStatus} → ${task.status}`,
226
233
  task.resultSummary ? `结果:\n${task.resultSummary.slice(0, 3000)}` : '',
227
234
  task.status === 'review' && task.reviewHandoff ? `验收交接:\n${task.reviewHandoff.slice(0, 2000)}` : '',
@@ -232,18 +239,21 @@ export class PartnerAgentRuntime {
232
239
  }));
233
240
  }
234
241
  async executeTask(input) {
242
+ input.signal?.throwIfAborted();
235
243
  const route = await this.createLocalSession(input.companion.id);
236
244
  const key = route.sessionId;
237
245
  const previous = this.taskQueues.get(key) ?? Promise.resolve();
238
246
  let output = '';
239
247
  const current = previous.catch(() => { }).then(async () => {
248
+ input.signal?.throwIfAborted();
240
249
  const agent = await this.ensureAgent(input.companion, route);
241
250
  if (agent.status !== 'idle')
242
251
  await agent.whenIdle();
252
+ input.signal?.throwIfAborted();
243
253
  const startSeq = agent.session.seq;
244
254
  agent.followup(createUserMessage({
245
255
  content: [{ type: 'text', text: input.prompt }],
246
- source: { kind: 'plugin', plugin: '@lemoncat7/dsh-partner', form: 'notice', summary: input.sourceId.startsWith('review:') ? '伙伴核验看板任务' : '伙伴执行看板任务' },
256
+ source: { kind: 'plugin', plugin: '@lemoncat7/dsh-partner', form: 'notice', summary: input.sourceId.startsWith('requirement:') ? '伙伴汇总需求' : input.sourceId.startsWith('review:') ? '伙伴核验看板任务' : '伙伴执行看板任务' },
247
257
  }));
248
258
  let timedOut = false;
249
259
  const timer = setTimeout(() => {
@@ -251,11 +261,17 @@ export class PartnerAgentRuntime {
251
261
  agent.cancel({ kind: 'hook', reason: 'partner task execution timed out' });
252
262
  }, PARTNER_TASK_TIMEOUT_MS);
253
263
  timer.unref?.();
264
+ const cancel = () => { agent.cancel({ kind: 'hook', reason: 'partner task removed' }); };
265
+ input.signal?.addEventListener('abort', cancel, { once: true });
266
+ if (input.signal?.aborted)
267
+ cancel();
254
268
  try {
255
269
  await agent.whenIdle();
270
+ input.signal?.throwIfAborted();
256
271
  }
257
272
  finally {
258
273
  clearTimeout(timer);
274
+ input.signal?.removeEventListener('abort', cancel);
259
275
  }
260
276
  if (timedOut)
261
277
  throw new Error('伙伴看板任务执行超时');
@@ -650,17 +666,15 @@ export class PartnerAgentRuntime {
650
666
  source: { kind: 'user' },
651
667
  }));
652
668
  await agent.whenIdle();
653
- const response = channelReplyTextAfter(agent.session.snapshotEvents(), startSeq);
669
+ const response = channelReplyPartsAfter(agent.session.snapshotEvents(), startSeq);
654
670
  await this.store.update(state => {
655
671
  const target = state.sessions.find(item => item.id === session.id);
656
672
  if (target)
657
673
  target.lastMessageAt = Date.now();
658
674
  });
659
- if (!response)
660
- throw new Error('伙伴没有生成可发送的文本回复');
661
675
  if (deferred && deferred.length > 0)
662
676
  await this.concerns?.markMentioned(companion.id, deferred.map(item => item.id)).catch(() => { });
663
- return { text: response, attachments: await extractOutboundAttachments(response, session.cwd ?? this.defaultCwd) };
677
+ return prepareChannelReply(response, session.cwd ?? this.defaultCwd);
664
678
  }
665
679
  async persistInbound(session, message) {
666
680
  const cwd = session.cwd ?? this.defaultCwd;
@@ -865,62 +879,6 @@ export function selectTaskNotificationRoute(routes, creatorSessionId, archived)
865
879
  function delay(milliseconds) {
866
880
  return new Promise(resolve => setTimeout(resolve, milliseconds));
867
881
  }
868
- export async function extractOutboundAttachments(text, cwd) {
869
- const candidates = new Set();
870
- for (const match of text.matchAll(/\[[^\]]*\]\((?:<)?(file:\/\/)?([^)>]+)(?:>)?\)/g)) {
871
- const value = decodeURIComponent(match[2] ?? '').trim();
872
- if (value)
873
- candidates.add(value);
874
- }
875
- for (const match of text.matchAll(/`([^`\n]+)`/g)) {
876
- const value = match[1]?.trim();
877
- if (value && mediaTypeFor(value))
878
- candidates.add(value);
879
- }
880
- for (const line of text.split('\n').map(item => item.trim())) {
881
- const value = line.replace(/^`|`$/g, '');
882
- if (value.startsWith('/') && !value.includes(' '))
883
- candidates.add(value);
884
- }
885
- const root = await realpath(cwd);
886
- const result = [];
887
- const included = new Set();
888
- for (const candidate of candidates) {
889
- if (result.length >= 8)
890
- break;
891
- const target = resolve(root, candidate);
892
- let actual;
893
- try {
894
- actual = await realpath(target);
895
- }
896
- catch {
897
- continue;
898
- }
899
- if (included.has(actual))
900
- continue;
901
- const rel = relative(root, actual);
902
- if (rel.startsWith('..') || rel === '..' || resolve(root, rel) !== actual)
903
- continue;
904
- const info = await stat(actual);
905
- if (!info.isFile() || info.size > PARTNER_MEDIA_MAX_BYTES)
906
- continue;
907
- const mediaType = mediaTypeFor(actual);
908
- if (!mediaType)
909
- continue;
910
- included.add(actual);
911
- result.push({ path: actual, name: basename(actual), mediaType, kind: mediaType.startsWith('image/') ? 'image' : 'file' });
912
- }
913
- return result;
914
- }
915
- function mediaTypeFor(path) {
916
- return {
917
- '.png': 'image/png', '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg', '.gif': 'image/gif', '.webp': 'image/webp',
918
- '.pdf': 'application/pdf', '.doc': 'application/msword', '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
919
- '.xls': 'application/vnd.ms-excel', '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
920
- '.ppt': 'application/vnd.ms-powerpoint', '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
921
- '.txt': 'text/plain', '.md': 'text/markdown', '.csv': 'text/csv', '.json': 'application/json', '.zip': 'application/zip',
922
- }[extname(path).toLowerCase()];
923
- }
924
882
  export function completedTurnEvents(events, end) {
925
883
  let startSeq;
926
884
  for (let index = events.length - 1; index >= 0; index -= 1) {