@lemoncat7/dsh-partner 1.8.2 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -2
- package/docs/architecture.md +104 -12
- package/lib/agent-runtime.d.ts +15 -2
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +164 -106
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/workspace-api.d.ts.map +1 -1
- package/lib/api/features/workspace-api.js +1 -10
- package/lib/api/features/workspace-api.js.map +1 -1
- package/lib/api.js +21 -44
- package/lib/api.js.map +1 -1
- package/lib/channels/delivery-policy.d.ts +7 -0
- package/lib/channels/delivery-policy.d.ts.map +1 -0
- package/lib/channels/delivery-policy.js +47 -0
- package/lib/channels/delivery-policy.js.map +1 -0
- package/lib/channels/manager.d.ts +1 -2
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +5 -9
- package/lib/channels/manager.js.map +1 -1
- package/lib/client-api.d.ts +1 -0
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +1255 -1100
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +37 -13
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/service.d.ts +4 -0
- package/lib/collaboration/service.d.ts.map +1 -1
- package/lib/collaboration/service.js +109 -35
- package/lib/collaboration/service.js.map +1 -1
- package/lib/collaboration/task-dispatch.d.ts +18 -0
- package/lib/collaboration/task-dispatch.d.ts.map +1 -0
- package/lib/collaboration/task-dispatch.js +44 -0
- package/lib/collaboration/task-dispatch.js.map +1 -0
- package/lib/collaboration/task-recovery.d.ts +8 -0
- package/lib/collaboration/task-recovery.d.ts.map +1 -0
- package/lib/collaboration/task-recovery.js +30 -0
- package/lib/collaboration/task-recovery.js.map +1 -0
- package/lib/companions/directory-cleanup.d.ts +4 -0
- package/lib/companions/directory-cleanup.d.ts.map +1 -0
- package/lib/companions/directory-cleanup.js +77 -0
- package/lib/companions/directory-cleanup.js.map +1 -0
- package/lib/companions/management-tool.d.ts +1 -1
- package/lib/companions/management-tool.d.ts.map +1 -1
- package/lib/companions/management-tool.js +1 -1
- package/lib/companions/management-tool.js.map +1 -1
- package/lib/companions/management.d.ts +4 -2
- package/lib/companions/management.d.ts.map +1 -1
- package/lib/companions/management.js +2 -2
- package/lib/companions/management.js.map +1 -1
- package/lib/companions/removal.d.ts +20 -0
- package/lib/companions/removal.d.ts.map +1 -0
- package/lib/companions/removal.js +84 -0
- package/lib/companions/removal.js.map +1 -0
- package/lib/companions/service.d.ts +3 -0
- package/lib/companions/service.d.ts.map +1 -1
- package/lib/companions/service.js +4 -0
- package/lib/companions/service.js.map +1 -1
- package/lib/companions/session-configuration.d.ts +19 -0
- package/lib/companions/session-configuration.d.ts.map +1 -0
- package/lib/companions/session-configuration.js +38 -0
- package/lib/companions/session-configuration.js.map +1 -0
- package/lib/companions/workspace-cleanup.d.ts +4 -0
- package/lib/companions/workspace-cleanup.d.ts.map +1 -0
- package/lib/companions/workspace-cleanup.js +37 -0
- package/lib/companions/workspace-cleanup.js.map +1 -0
- package/lib/daily-review.d.ts +1 -0
- package/lib/daily-review.d.ts.map +1 -1
- package/lib/daily-review.js +3 -0
- package/lib/daily-review.js.map +1 -1
- package/lib/execution/service.d.ts.map +1 -1
- package/lib/execution/service.js +2 -0
- package/lib/execution/service.js.map +1 -1
- package/lib/heartbeat.d.ts +1 -0
- package/lib/heartbeat.d.ts.map +1 -1
- package/lib/heartbeat.js +3 -0
- package/lib/heartbeat.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -12
- package/lib/index.js.map +1 -1
- package/lib/pendant/notice-motion.d.ts.map +1 -1
- package/lib/pendant/notice-motion.js +12 -6
- package/lib/pendant/notice-motion.js.map +1 -1
- package/lib/pendant/sheen.d.ts +1 -1
- package/lib/pendant/sheen.d.ts.map +1 -1
- package/lib/pendant/sheen.js +9 -8
- package/lib/pendant/sheen.js.map +1 -1
- package/lib/pendant/widget.js +1 -1
- package/lib/pendant/widget.js.map +1 -1
- package/lib/pendant-renderer.js +17 -17
- package/lib/skills/builtin.d.ts.map +1 -1
- package/lib/skills/builtin.js +3 -2
- package/lib/skills/builtin.js.map +1 -1
- package/lib/skills/service.js +1 -1
- package/lib/skills/service.js.map +1 -1
- package/lib/skills/task-planning.d.ts +3 -0
- package/lib/skills/task-planning.d.ts.map +1 -0
- package/lib/skills/task-planning.js +31 -0
- package/lib/skills/task-planning.js.map +1 -0
- package/lib/store.d.ts +6 -0
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +12 -0
- package/lib/store.js.map +1 -1
- package/lib/tasks/domain.d.ts +2 -0
- package/lib/tasks/domain.d.ts.map +1 -1
- package/lib/tasks/progress-notifier.d.ts +4 -0
- package/lib/tasks/progress-notifier.d.ts.map +1 -0
- package/lib/tasks/progress-notifier.js +20 -0
- package/lib/tasks/progress-notifier.js.map +1 -0
- package/lib/tasks/service.d.ts.map +1 -1
- package/lib/tasks/service.js +22 -2
- package/lib/tasks/service.js.map +1 -1
- package/lib/ui/capability-editor.d.ts +7 -0
- package/lib/ui/capability-editor.d.ts.map +1 -0
- package/lib/ui/capability-editor.js +85 -0
- package/lib/ui/capability-editor.js.map +1 -0
- package/lib/ui/companion-draft.d.ts +12 -0
- package/lib/ui/companion-draft.d.ts.map +1 -0
- package/lib/ui/companion-draft.js +2 -0
- package/lib/ui/companion-draft.js.map +1 -0
- package/lib/ui/identity-editor.d.ts +11 -0
- package/lib/ui/identity-editor.d.ts.map +1 -0
- package/lib/ui/identity-editor.js +78 -0
- package/lib/ui/identity-editor.js.map +1 -0
- package/lib/ui/task-board-panel.d.ts.map +1 -1
- package/lib/ui/task-board-panel.js +15 -10
- package/lib/ui/task-board-panel.js.map +1 -1
- package/lib/ui/task-board-stage.d.ts +12 -0
- package/lib/ui/task-board-stage.d.ts.map +1 -0
- package/lib/ui/task-board-stage.js +13 -0
- package/lib/ui/task-board-stage.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,39 @@
|
|
|
6
6
|
|
|
7
7
|
## 兼容性
|
|
8
8
|
|
|
9
|
-
正式版 `1.
|
|
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` 接口族。
|
|
10
|
+
|
|
11
|
+
### 1.9.2 修复:中断后的待验收任务恢复
|
|
12
|
+
|
|
13
|
+
- 执行伙伴提前标记待验收、但尚未提交结果时,服务重启或暂时网络故障后可继续恢复交付,不再误取消执行。
|
|
14
|
+
- 对已被旧调度器误取消的记录,校验停止记录、负责人、当前授权和是否有更新的执行后定向恢复;有结果、已验收、正常取消或已结束的任务不会因此重跑。
|
|
15
|
+
- 启动时先注册结果通知再启动恢复队列,避免快速完成的恢复任务漏发通知;恢复前仍检查依赖和并发限制。
|
|
16
|
+
- 渠道只保留创建后的分工确认与验收通过后的最终交付;核验、重试、accept 等内部回调静默,自动目标续轮也不能绕过过滤。真正受阻时仍可请求用户介入,用户主动询问进度仍正常回答。
|
|
17
|
+
- 已保存的最终结果先投递渠道,再创建内部进度回调,二者错误独立记录。搭配知识库 `2.6.0` 的持久化回写队列,会话结束只等待快照入队,不等待知识提取或写入完成;回写失败在原回答下单独重试,不重发渠道消息。
|
|
18
|
+
|
|
19
|
+
### 1.9.1 更新:伙伴删除与目录清理
|
|
20
|
+
|
|
21
|
+
- 删除确认绑定当前伙伴,切换伙伴时重置;删除中防止重复操作,成功返回总览,不再把下一位伙伴置于删除确认状态。
|
|
22
|
+
- 页面明确确认后,移除伙伴专属 `partners/<id>` 目录及文件、工作区注册和关联配置;共享目录、链接根目录与挂载点拒绝自动清理,不扫描历史遗留目录。
|
|
23
|
+
- 删除期间阻止新会话、后台任务与执行队列重新占用目录;运行中的伙伴、已绑定渠道与最后一个伙伴受到保护,清理失败保留身份供重试。
|
|
24
|
+
- DSH 当前公开接口不支持永久清理全局原始会话日志,因此这些日志仍保留;目录删除不是跨存储事务,文件删除失败时可能已有部分文件被移除。
|
|
25
|
+
- 180 项自动化测试及手机、横屏、桌面深浅色共 6 组隔离交互验证通过。
|
|
26
|
+
|
|
27
|
+
### 1.9.0 更新:主动任务拆解与执行
|
|
28
|
+
|
|
29
|
+
- 匹配已启用的拆解 Skill 和授权伙伴专长时,主动拆分真实交付物、安排负责人及依赖,不要求用户反复说“使用 Skill”或逐个 @;简单问答和明确只规划的请求不自动执行。
|
|
30
|
+
- 工具创建任务并指定负责人后默认提交执行;前置任务验收通过后,后续任务自动接续。支持 `autoRun=false` 仅规划;已有历史任务不会因为升级突然启动。
|
|
31
|
+
- 执行队列持久化、重复提交去重、启动前复核授权,最多三个任务执行并发;提交后先返回分工摘要,不阻塞等待所有结果。
|
|
32
|
+
- 看板改为阶段内横向卡片排列、按需展开与整页滚动,移动端使用紧凑筛选栏,保留现有配色。
|
|
33
|
+
- 169 项自动化测试通过;60 条任务的隔离浏览器检查覆盖手机、横屏与桌面、深浅色共 6 组场景,包括筛选、展开、详情和提交模式。
|
|
34
|
+
|
|
35
|
+
### 1.8.3 更新
|
|
36
|
+
|
|
37
|
+
- 伙伴身份、能力、Skill 和协作配置保存后,在下一轮执行前统一注册到会话;覆盖已有浏览器会话和历史会话恢复,不在正在执行的轮次中重组工具,也不唤醒闲置会话。高权限管理工具继续在调用时检查当前授权。
|
|
38
|
+
- 「应用能力组合」增加保存中、成功和失败反馈,成功显示「已保存,下一轮生效」;防止重复提交,失败保留草稿,区分保存失败与保存后刷新失败。
|
|
39
|
+
- 新消息轻摆转向文字面,仅在文字面扫光两次;结束及阅读后不自动恢复图案面,不锁定用户手动翻面。
|
|
40
|
+
- 挂点旁增加小数字未读标记,超过 99 显示 99+,全部已读后隐藏;支持深浅色与减少动态效果,不增加常驻动画或渲染循环。
|
|
41
|
+
- 保留自定义图案、现有卡片材质、24/30/60 FPS 与休眠策略,不改 DSH 源码或伙伴数据。162 项自动化测试及隔离浏览器交互回归通过。
|
|
10
42
|
|
|
11
43
|
### 1.8.2 更新
|
|
12
44
|
|
|
@@ -97,7 +129,7 @@
|
|
|
97
129
|
|
|
98
130
|
知识库挂载要求同时安装包含 `dshKnowledgeMountManagement` 接口的知识库插件;旧版或未安装时会明确提示,身份、能力等管理仍可用。挂载通过知识库当前选中的本地或远程后端执行,远程只读令牌不能修改挂载,不会绕过认证或退回本地写入。
|
|
99
131
|
|
|
100
|
-
|
|
132
|
+
目标伙伴执行中拒绝管理工具修改,配置过期须重新读取。配置保存成功后,身份、能力、Skill 与协作关系在下一轮执行前注册,无需为了注入工具重开会话;Preset 和模型作为会话默认配置,不覆盖已有会话的选择。此权限不自动开启任何伙伴的记忆、心跳或渠道。
|
|
101
133
|
|
|
102
134
|
## 安装
|
|
103
135
|
|
package/docs/architecture.md
CHANGED
|
@@ -12,13 +12,26 @@ client -> HTTP feature routers -> application services -> repositories/store
|
|
|
12
12
|
|
|
13
13
|
## Module boundaries
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
the
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
`tasks/progress-notifier.ts` orders persisted final-result delivery before internal
|
|
16
|
+
agent follow-ups, with separate error boundaries. Knowledge 2.6.0 owns durable
|
|
17
|
+
writeback snapshots, plans, retries and status; Partner does not copy its queue or
|
|
18
|
+
patch the DSH loop. Channel results do not wait for extraction. Retrying writeback
|
|
19
|
+
does not rerun the partner's turn or resend its channel message. This does not
|
|
20
|
+
make channel delivery and knowledge writes one atomic transaction.
|
|
21
|
+
|
|
22
|
+
Configuration saves only commit state. The awaited `agent/pre-step` hook compares
|
|
23
|
+
the saved configuration with the installed revision before each new turn, covering
|
|
24
|
+
native history resume as well as local, channel and task-board conversations.
|
|
25
|
+
Unchanged configurations do not re-register tools or read Skill bodies again;
|
|
26
|
+
mid-turn saves never dismantle a running composition. No polling or eager wakeup
|
|
27
|
+
of inactive sessions is needed. Plugin-owned tools recheck capability revocations
|
|
28
|
+
at execution even when an old schema remains in the current turn.
|
|
29
|
+
The UI reports saved/next-turn, separately from request failures and refresh
|
|
30
|
+
failures. Preset and model defaults remain subject to DSH session-selection rules;
|
|
31
|
+
the plugin does not bypass restrictions on changing an existing session's preset.
|
|
32
|
+
`companions/session-configuration.ts` indexes persisted routes and configuration
|
|
33
|
+
revisions without transcript copies. `ui/capability-editor.tsx` owns the capability
|
|
34
|
+
form and save feedback, using the shared companion draft and existing UI tokens.
|
|
22
35
|
|
|
23
36
|
- `core/`: shared validation, identifiers and bounded collections. It contains
|
|
24
37
|
no partner feature policy.
|
|
@@ -109,9 +122,9 @@ this is separate from refreshing scoped companion tools.
|
|
|
109
122
|
Identity, enabled Skill IDs and outgoing grants commit together. Unknown
|
|
110
123
|
fields, stale revisions, cancellation, missing resources and busy targets
|
|
111
124
|
fail closed. Authority is checked again inside the serialized store write.
|
|
112
|
-
A
|
|
113
|
-
write
|
|
114
|
-
|
|
125
|
+
A runtime confirmation error after commit is reported as saved/next-turn with
|
|
126
|
+
a warning, not a failed write. Browser-owned Agent handles are not destroyed.
|
|
127
|
+
Unspecified settings, including automation, remain unchanged.
|
|
115
128
|
- Knowledge mount management is a separate provider-backed operation. The
|
|
116
129
|
adapter derives the target's default project and existing session scopes on
|
|
117
130
|
the server, never from model-supplied paths. It calls the optional
|
|
@@ -129,8 +142,87 @@ this is separate from refreshing scoped companion tools.
|
|
|
129
142
|
receives only A's granted directory and the service checks the same edge
|
|
130
143
|
again at execution time. User-initiated board delegation is a separate actor
|
|
131
144
|
and may target any created companion without impersonating another partner.
|
|
132
|
-
-
|
|
145
|
+
- A companion may submit its own assigned stage without a cross-companion
|
|
146
|
+
grant. Other-companion execution always requires the directed grant above;
|
|
147
|
+
assigned-stage instructions forbid recreating the same work recursively.
|
|
133
148
|
- Scheduled jobs default to non-overlapping execution and a disposable session.
|
|
149
|
+
|
|
150
|
+
## Companion deletion safety
|
|
151
|
+
|
|
152
|
+
- `companions/removal.ts` serializes removals, binds each operation to one ID,
|
|
153
|
+
blocks active work/last-companion deletion, and keeps the identity retryable
|
|
154
|
+
if directory cleanup fails. An in-memory removal guard prevents new partner
|
|
155
|
+
sessions, task claims, heartbeat and daily-review work during deletion.
|
|
156
|
+
- `companions/directory-cleanup.ts` derives only `<defaultCwd>/partners/<id>`;
|
|
157
|
+
it rejects traversal, shared/nested workspace paths, symlinked roots and
|
|
158
|
+
mounted volumes. Nested symlinks are removed without following their targets.
|
|
159
|
+
Filesystem cleanup finishes before deleting identity. This is not a cross-store
|
|
160
|
+
transaction: a failed filesystem deletion can have removed some files, and a
|
|
161
|
+
later state-write failure leaves the identity available for retry.
|
|
162
|
+
- The identity editor sends `DELETE ...?removeFiles=1` only after a named
|
|
163
|
+
confirmation describing permanent deletion. Older callers without this flag
|
|
164
|
+
retain file-preserving behavior. Neither path scans historical orphan folders
|
|
165
|
+
nor purges DSH's global session persistence; the current host has no supported
|
|
166
|
+
permanent session-log deletion API. `workspace-cleanup.ts` removes only the
|
|
167
|
+
dedicated workspace registration through the public host API.
|
|
168
|
+
- `ui/identity-editor.tsx` isolates confirmation and async feedback per companion,
|
|
169
|
+
prevents duplicate clicks and returns the selected deletion to the overview.
|
|
170
|
+
`test/companion-removal.test.mjs` and `scripts/verify-companion-removal.mjs`
|
|
171
|
+
use disposable fixtures; physical deletion never runs against live user data
|
|
172
|
+
as part of these regression tests.
|
|
173
|
+
|
|
174
|
+
## Proactive planning and durable task dispatch
|
|
175
|
+
|
|
176
|
+
- `collaboration/task-recovery.ts` distinguishes an early review status from a
|
|
177
|
+
committed deliverable. Previously started task delegations may resume an empty
|
|
178
|
+
review after interruption, subject to assignment, access, dependency and
|
|
179
|
+
concurrency checks. Saved results/reviews are never rerun through this path.
|
|
180
|
+
Startup repairs only known coordinator cancellations, with shutdown evidence
|
|
181
|
+
for the status-mismatch bug and no superseding task delegation. Arbitrary user
|
|
182
|
+
cancellations are not revived. Result notification is wired before recovery
|
|
183
|
+
starts claiming work.
|
|
184
|
+
- `channels/delivery-policy.ts` keeps internal task/review continuations out of
|
|
185
|
+
channel replies, including nested goal completion notices. User-origin turns
|
|
186
|
+
retain creation acknowledgments and explicit progress answers. Accepted task
|
|
187
|
+
results use the separate deterministic delivery path and persistent receipts;
|
|
188
|
+
intermediate execution/review notices are not additional channel messages.
|
|
189
|
+
- `skills/task-planning.ts` owns the built-in planning instructions (1.2.0).
|
|
190
|
+
Matching multi-deliverable requests proactively use enabled Skills and the
|
|
191
|
+
authorized directory's stable IDs, roles, descriptions and Skill names.
|
|
192
|
+
Inline Skills are already injected and do not require a redundant load call.
|
|
193
|
+
Simple answers and explicit discussion/planning-only requests do not launch
|
|
194
|
+
work. This is a model instruction contract, not a guarantee of model choices.
|
|
195
|
+
- `collaboration/composition.ts` maps assigned tool-created tasks to explicit
|
|
196
|
+
`autoRun` intent by default; `autoRun=false` or explicit backlog preserves
|
|
197
|
+
planning-only behavior. The board creation form exposes the same choice.
|
|
198
|
+
The storage service itself defaults to planning-only, so legacy records and
|
|
199
|
+
other callers do not silently acquire execution permission after an upgrade.
|
|
200
|
+
- `tasks/service.ts` persists intent and validates task state/dependencies.
|
|
201
|
+
`collaboration/task-dispatch.ts` owns pure eligibility, authorization and
|
|
202
|
+
bounded-queue helpers. `collaboration/service.ts` uses its existing recovery
|
|
203
|
+
timer to enroll intent and claim work atomically, with at most three running
|
|
204
|
+
delegations. No additional polling loop or external queue is introduced.
|
|
205
|
+
- Assignment plus explicit delegation commits atomically. Repeat submissions
|
|
206
|
+
of the same task to the same pending executor return that job, not another
|
|
207
|
+
execution. Missing or unaccepted dependencies prevent execution; all
|
|
208
|
+
prerequisites must be `done` after acceptance before downstream work starts.
|
|
209
|
+
Accepted prerequisite summaries enter the executor prompt with bounded size.
|
|
210
|
+
- The scheduler rechecks directed grants, executor identity and current task
|
|
211
|
+
state before claiming and again checks authorization before execution.
|
|
212
|
+
Queued/running jobs are never evicted to retain terminal history. Switching
|
|
213
|
+
to planning-only cancels waiting task jobs, not already-running work or review.
|
|
214
|
+
Restart recovery retains submission intent; old tasks without `autoRun=true`
|
|
215
|
+
are not enrolled automatically. Submission returns without awaiting results.
|
|
216
|
+
- `ui/task-board-stage.tsx` owns stage collapse and progressive disclosure:
|
|
217
|
+
six cards initially per stage (twelve when focused), then twelve per expansion.
|
|
218
|
+
Responsive horizontal card grids share the page scroll instead of fixed-height
|
|
219
|
+
nested scrollboxes. Mobile uses compact stage/assignee filters. Existing
|
|
220
|
+
semantic colors and dialogs are retained without new card animations.
|
|
221
|
+
- Regression coverage: `test/task-dispatch.test.mjs` exercises real storage,
|
|
222
|
+
composition tools, dependency chains, restart intent, idempotency, concurrency
|
|
223
|
+
and permission changes. `scripts/verify-task-board.mjs` tests the actual panel
|
|
224
|
+
with isolated fixtures across phone, landscape and desktop in both themes.
|
|
225
|
+
|
|
134
226
|
## 主界面挂饰与消息
|
|
135
227
|
|
|
136
228
|
- `pendant/frame-loop.ts` 独立负责可选 24/30/60 FPS 绘制调度(默认 30,旧配置自动兼容):定时器临近截止时间再进入 RAF,保留非整除刷新率的小数节奏,高频输入合并唤醒;运行时切换只重排唯一待执行回调,不重建 WebGL/物理场景,休眠中切换不启动循环。隐藏/卸载取消计时器和 RAF。物理仍以 120 Hz 固定小步推进,停顿后不追赶后台时间。握持状态不再强制常驻循环,绳子平稳后可休眠,保持弹簧位置和储能,移动/松手重新唤醒。
|
|
@@ -148,7 +240,7 @@ this is separate from refreshing scoped companion tools.
|
|
|
148
240
|
- 点击层不绘制材质或装饰边框,鼠标拖动不触发键盘聚焦,键盘操作保留可见焦点。卸载时一并清理小画布、绳带节点和物理资源。
|
|
149
241
|
- `pendant/use-placement.ts` 只负责挂点位置:拖动顶部挂点或用方向键移动整件挂饰,与卡牌拉伸手势分离。位置按可用视口比例保存在本地浏览器,刷新恢复,窄屏及旋转时约束到可见范围;逐帧移动不触发 React 状态更新,完成时才写存储,不查询宿主私有 DOM。
|
|
150
242
|
- 卡牌正面只负责图案,消息更新不会重绘或覆盖正面纹理;内侧单独绘制未读数量、伙伴名和简短状态。图案与消息使用独立纹理,不自动弹出消息或额外角标。
|
|
151
|
-
- `pendant/notice-motion.ts`
|
|
243
|
+
- `pendant/notice-motion.ts` 统一处理新消息提醒:等待被握持或快速甩动的卡牌空闲,轻摆并以短暂的物理角速度辅助转向文字面(背面,Y 轴半周),再由 `pendant/sheen.ts` 仅在文字面轻扫光两次。结束或阅读后不自动恢复图案面,也不持续锁定朝向;抓取可中断,用户仍能自由翻面。多条到达合并一次动作;后台、全部已读及减少动态效果时取消。效果共用卡面圆角几何,不使用全屏后处理、独立计时器或逐帧纹理重绘。挂点旁保留静态小数字未读标记(超过 99 显示 99+,全部已读后隐藏),翻面及减少动态效果时仍可见,不拦截拖动、不唤醒渲染循环;读屏复用消息按钮和现有单一播报区。
|
|
152
244
|
- `pendant/reader.tsx` 点击打开最新未读正文(无未读时展示列表),保留可见、可玩的挂饰;桌面优先放在卡牌旁边,窄屏选择卡牌上方或下方的可用空间。正文独立滚动,来源操作留在底部;使用独立冷灰纸面材质,支持 Escape 关闭、键盘焦点返回、卡牌再次点击关闭和来源导航。静止挂卡即使在阅读时也会自然休眠。
|
|
153
245
|
- `notifications/service.ts` 从已提交的任务/定时执行变化和完整伙伴回复生成终态通知;不改变任务执行,不暴露内部验收交接。普通回复按会话和轮次去重,任务按 ID/修订/终态去重。
|
|
154
246
|
- `notifications/store.ts` 在主状态文件同目录保存 `partner-inbox.sqlite`,权限 0600,最多 200 条摘要(每条最多 2000 字符)及已读状态。它不是新的会话历史;完整内容仍在原任务/会话中。
|
package/lib/agent-runtime.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
2
3
|
import type { AgentDefaultModelConfig } from '@deepseek-ai/dsh-agent-default-model';
|
|
3
4
|
import type { AgentPresets } from '@deepseek-ai/dsh-agent-presets';
|
|
4
5
|
import type { SessionId } from '@deepseek-ai/dsh-session';
|
|
@@ -66,6 +67,12 @@ export declare class PartnerAgentRuntime {
|
|
|
66
67
|
private readonly restoredCompositions;
|
|
67
68
|
private readonly restoredCompositionJobs;
|
|
68
69
|
private readonly disposeAgentListener;
|
|
70
|
+
private readonly disposeConfigurationListener;
|
|
71
|
+
private readonly configurations;
|
|
72
|
+
private readonly preparedTurns;
|
|
73
|
+
private readonly observationJobs;
|
|
74
|
+
private readonly agentSetupJobs;
|
|
75
|
+
private closed;
|
|
69
76
|
private questionAnswerer;
|
|
70
77
|
constructor(ctx: RuntimeContext, store: PartnerStore, defaultCwd: string, memory?: PartnerMemoryStore | undefined, reflection?: MemoryReflectionService | undefined, concerns?: PartnerConcernStore | undefined, composer?: PartnerAgentComposer | undefined);
|
|
71
78
|
setQuestionAnswerer(answerer: PartnerQuestionAnswerer): void;
|
|
@@ -94,13 +101,19 @@ export declare class PartnerAgentRuntime {
|
|
|
94
101
|
concernSources(companion: Companion, query?: string): Promise<ConcernSource[]>;
|
|
95
102
|
private runHeartbeatWhenIdle;
|
|
96
103
|
observeSessionEvent(session: Session, event: SessionEvent): Promise<void>;
|
|
104
|
+
private processSessionEvent;
|
|
97
105
|
recordConcernCreatedNotice(companion: Companion, scopeId: string, concerns: PartnerConcern[]): Promise<boolean>;
|
|
98
106
|
private driveScopedHeartbeat;
|
|
99
107
|
private driveEphemeralHeartbeat;
|
|
100
108
|
recordHeartbeatActivity(companion: Companion, route: ChannelSession, execution: HeartbeatExecution, outcome: HeartbeatOutcome, deliveryError?: string): Promise<void>;
|
|
101
109
|
resetCompanion(companionId: string): Promise<void>;
|
|
110
|
+
removeCompanionWorkspace(companionId: string): Promise<void>;
|
|
111
|
+
private sharedDirectoryPaths;
|
|
112
|
+
validateCompanionDirectory(companionId: string): Promise<void>;
|
|
113
|
+
removeCompanionDirectory(companionId: string): Promise<void>;
|
|
102
114
|
reloadCompanion(companionId: string): Promise<void>;
|
|
103
|
-
|
|
115
|
+
/** Awaited by the host before prompt/tool assembly, never from a running tool. */
|
|
116
|
+
prepareAgentTurn(agent: Agent, turn: number, signal: AbortSignal): Promise<void>;
|
|
104
117
|
isCompanionBusy(companionId: string): boolean;
|
|
105
118
|
private releaseCompanion;
|
|
106
119
|
resetChannel(channelId: string): Promise<void>;
|
|
@@ -110,7 +123,7 @@ export declare class PartnerAgentRuntime {
|
|
|
110
123
|
private persistInbound;
|
|
111
124
|
private ensureSession;
|
|
112
125
|
private ensureAgent;
|
|
113
|
-
private
|
|
126
|
+
private ensureAgentReady;
|
|
114
127
|
private composeRestoredAgent;
|
|
115
128
|
private injectProfileUpdate;
|
|
116
129
|
private attachSession;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"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"}
|