@wowyuarm/dsh-agent-team 0.1.14-alpha.1 → 0.1.14
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 +5 -3
- package/README.zh.md +5 -3
- package/package.json +47 -45
- package/packages/agent-team/README.md +1 -1
- package/packages/agent-team/README.zh.md +1 -1
- package/packages/agent-team/core-skills/member-memory-manager/SKILL.md +30 -0
- package/packages/agent-team/lib/context-continuity-host.js +91 -0
- package/packages/agent-team/lib/context-projection.js +266 -493
- package/packages/agent-team/lib/context-source.js +4 -74
- package/packages/agent-team/lib/human-avatar.js +61 -0
- package/packages/agent-team/lib/human-profile.js +46 -0
- package/packages/agent-team/lib/human-update-check.js +119 -0
- package/packages/agent-team/lib/index.js +351 -245
- package/packages/agent-team/lib/ledger.js +120 -15
- package/packages/agent-team/lib/member-context.js +6 -3
- package/packages/agent-team/lib/member-runtime.js +1 -1
- package/packages/agent-team/lib/pressure-policy.js +6 -1
- package/packages/agent-team/lib/session-remediation.js +1 -1
- package/packages/agent-team/lib/typert.host.js +424 -32
- package/packages/agent-team/lib/typert.remote-client.d.ts +13 -3
- package/packages/agent-team/lib/typert.remote-client.d.ts.map +1 -1
- package/packages/agent-team/lib/typert.remote-client.js +205 -28
- package/packages/agent-team/lib/types/context-continuity-host.d.ts +84 -0
- package/packages/agent-team/lib/types/context-continuity-host.d.ts.map +1 -0
- package/packages/agent-team/lib/types/context-projection.d.ts +130 -185
- package/packages/agent-team/lib/types/context-projection.d.ts.map +1 -1
- package/packages/agent-team/lib/types/context-source.d.ts +4 -35
- package/packages/agent-team/lib/types/context-source.d.ts.map +1 -1
- package/packages/agent-team/lib/types/human-avatar.d.ts +29 -0
- package/packages/agent-team/lib/types/human-avatar.d.ts.map +1 -0
- package/packages/agent-team/lib/types/human-profile.d.ts +44 -0
- package/packages/agent-team/lib/types/human-profile.d.ts.map +1 -0
- package/packages/agent-team/lib/types/human-update-check.d.ts +73 -0
- package/packages/agent-team/lib/types/human-update-check.d.ts.map +1 -0
- package/packages/agent-team/lib/types/index.d.ts +104 -38
- package/packages/agent-team/lib/types/index.d.ts.map +1 -1
- package/packages/agent-team/lib/types/ledger.d.ts +31 -2
- package/packages/agent-team/lib/types/ledger.d.ts.map +1 -1
- package/packages/agent-team/lib/types/member-context.d.ts.map +1 -1
- package/packages/agent-team/lib/types/pressure-policy.d.ts +6 -0
- package/packages/agent-team/lib/types/pressure-policy.d.ts.map +1 -1
- package/packages/agent-team/lib/types/session-remediation.d.ts +1 -1
- package/packages/agent-team/lib/types/session-remediation.d.ts.map +1 -1
- package/packages/agent-team/lib/types/types/entities.d.ts +17 -0
- package/packages/agent-team/lib/types/types/entities.d.ts.map +1 -1
- package/packages/agent-team/lib/types/types/requests-results.d.ts +63 -0
- package/packages/agent-team/lib/types/types/requests-results.d.ts.map +1 -1
- package/packages/agent-team/preset/team-member/agent.cordis.yml +3 -1
- package/packages/client-agent-team/lib/client.js +1890 -613
- package/packages/client-agent-team/lib/client.js.map +1 -1
- package/packages/client-agent-team/lib/types/client/HumanSettingsSection.d.ts +15 -0
- package/packages/client-agent-team/lib/types/client/HumanSettingsSection.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/HumanSettingsSection.js +115 -0
- package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.js +6 -2
- package/packages/client-agent-team/lib/types/client/TeamAvatarStack.d.ts +22 -1
- package/packages/client-agent-team/lib/types/client/TeamAvatarStack.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamAvatarStack.js +25 -2
- package/packages/client-agent-team/lib/types/client/TeamChannelPage.d.ts +6 -1
- package/packages/client-agent-team/lib/types/client/TeamChannelPage.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamChannelPage.js +67 -29
- package/packages/client-agent-team/lib/types/client/TeamComposer.js +2 -2
- package/packages/client-agent-team/lib/types/client/TeamConversation.d.ts +1 -1
- package/packages/client-agent-team/lib/types/client/TeamConversation.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamConversation.js +12 -5
- package/packages/client-agent-team/lib/types/client/TeamInboxPage.d.ts +4 -1
- package/packages/client-agent-team/lib/types/client/TeamInboxPage.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamInboxPage.js +22 -7
- package/packages/client-agent-team/lib/types/client/TeamMemberEditor.d.ts +11 -1
- package/packages/client-agent-team/lib/types/client/TeamMemberEditor.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamMemberEditor.js +68 -7
- package/packages/client-agent-team/lib/types/client/TeamMessage.d.ts +18 -3
- package/packages/client-agent-team/lib/types/client/TeamMessage.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamMessage.js +213 -67
- package/packages/client-agent-team/lib/types/client/TeamThreadPage.d.ts +5 -0
- package/packages/client-agent-team/lib/types/client/TeamThreadPage.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamThreadPage.js +52 -26
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.js +2 -5
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceSelector.d.ts +37 -0
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceSelector.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceSelector.js +58 -0
- package/packages/client-agent-team/lib/types/client/avatar-image.d.ts +21 -0
- package/packages/client-agent-team/lib/types/client/avatar-image.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/avatar-image.js +9 -0
- package/packages/client-agent-team/lib/types/client/human-identity.d.ts +94 -0
- package/packages/client-agent-team/lib/types/client/human-identity.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/human-identity.js +117 -0
- package/packages/client-agent-team/lib/types/client/index.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/index.js +94 -4
- package/packages/client-agent-team/lib/types/client/locales.d.ts +74 -2
- package/packages/client-agent-team/lib/types/client/locales.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/locales.js +80 -2
- package/packages/client-agent-team/lib/types/client/multi-menu-field.js +1 -1
- package/packages/client-agent-team/lib/types/client/refs.d.ts +71 -0
- package/packages/client-agent-team/lib/types/client/refs.d.ts.map +1 -0
- package/packages/client-agent-team/lib/types/client/refs.js +181 -0
- package/packages/client-agent-team/lib/types/client/sidebar-sections.d.ts +1 -1
- package/packages/client-agent-team/lib/types/client/sidebar-sections.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/sidebar-sections.js +4 -3
- package/packages/client-agent-team/lib/types/client/slots.d.ts +8 -2
- package/packages/client-agent-team/lib/types/client/slots.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/team-formatters.d.ts +57 -9
- package/packages/client-agent-team/lib/types/client/team-formatters.d.ts.map +1 -1
- package/packages/client-agent-team/lib/types/client/team-formatters.js +85 -17
- package/packages/tool-agent-team/README.md +1 -1
- package/packages/tool-agent-team/README.zh.md +1 -1
- package/packages/tool-agent-team/lib/context-tools.js +20 -6
- package/packages/tool-agent-team/lib/index.js +2 -2
- package/packages/tool-agent-team/lib/types/context-tools.d.ts.map +1 -1
- package/packages/agent-team/lib/context-management.js +0 -372
- package/packages/agent-team/lib/types/context-management.d.ts +0 -154
- package/packages/agent-team/lib/types/context-management.d.ts.map +0 -1
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceRow.d.ts +0 -11
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceRow.d.ts.map +0 -1
- package/packages/client-agent-team/lib/types/client/TeamWorkspaceRow.js +0 -6
- package/packages/client-agent-team/lib/types/client/task-refs.d.ts +0 -31
- package/packages/client-agent-team/lib/types/client/task-refs.d.ts.map +0 -1
- package/packages/client-agent-team/lib/types/client/task-refs.js +0 -99
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# dsh-agent-team — Persistent Agent Teams for DeepSeek Harness
|
|
2
2
|
|
|
3
3
|
[English](README.md) | [简体中文](README.zh.md)
|
|
4
4
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://github.com/wowyuarm/dsh-agent-team/releases)
|
|
8
8
|
[](https://awesome-dsh-plugin.com/p/wowyuarm/dsh-agent-team/)
|
|
9
9
|
|
|
10
|
-
**dsh-agent-team** gives DeepSeek Harness
|
|
10
|
+
**dsh-agent-team** gives DeepSeek Harness agents that don't reset. Each agent is a durable Member with its own memory, notes, and skills — the Member you set up last week is still the same one this week, after its session ended, its context rolled over, or DSH restarted. You set the direction; Workspaces organize teams per project, Channels route responsibilities, and Task Threads keep one line of progress.
|
|
11
11
|
|
|
12
12
|
An opt-in plugin for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): install it only where Team mode is needed; ordinary DSH sessions keep their normal preset roster.
|
|
13
13
|
|
|
@@ -41,7 +41,7 @@ If this looks useful, a star on [GitHub](https://github.com/wowyuarm/dsh-agent-t
|
|
|
41
41
|
|
|
42
42
|
### 1. Check DSH
|
|
43
43
|
|
|
44
|
-
This release is certified against DSH `0.1.
|
|
44
|
+
This release is certified against DSH `0.1.5-rc.1`. If `dsh` is not installed yet, start DSH with the official package:
|
|
45
45
|
|
|
46
46
|
```sh
|
|
47
47
|
npx @deepseek-ai/dsh web
|
|
@@ -125,6 +125,8 @@ Published packages include built artifacts. A local checkout needs the adjacent
|
|
|
125
125
|
|
|
126
126
|
## Development
|
|
127
127
|
|
|
128
|
+
Contributing: [`CONTRIBUTING.md`](CONTRIBUTING.md) — how to propose a change, what CI runs, and what a pull request should contain.
|
|
129
|
+
|
|
128
130
|
Read [`docs/README.md`](docs/README.md) for the maintained documentation index. The usual checks are:
|
|
129
131
|
|
|
130
132
|
```sh
|
package/README.zh.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# DeepSeek Harness Agent
|
|
1
|
+
# dsh-agent-team — DeepSeek Harness 持久 Agent 团队
|
|
2
2
|
|
|
3
3
|
[English](README.md) | 简体中文
|
|
4
4
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://github.com/wowyuarm/dsh-agent-team/releases)
|
|
8
8
|
[](https://awesome-dsh-plugin.com/p/wowyuarm/dsh-agent-team/)
|
|
9
9
|
|
|
10
|
-
**dsh-agent-team** 给
|
|
10
|
+
**dsh-agent-team** 给 DeepSeek Harness 一批不会归零的 Agent。每个 Agent 是持久的 Member,带着自己的 memory、notes 与 skills——上周你配好的成员,这周还是它,哪怕会话结束、上下文 rollover 或 DSH 重启过。方向由你定;Workspace 按项目组织团队,Channel 路由职责,Task Thread 保持一条推进线。
|
|
11
11
|
|
|
12
12
|
一个为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 提供的按需启用插件:只在需要 Team mode 的 profile 安装,普通 DSH Session 保持原有 preset roster。
|
|
13
13
|
|
|
@@ -41,7 +41,7 @@ Task Thread 把 Claim、Agent 交接、Human 验收和后续回复保留在同
|
|
|
41
41
|
|
|
42
42
|
### 1. 检查 DSH
|
|
43
43
|
|
|
44
|
-
当前版本已针对 DSH `0.1.
|
|
44
|
+
当前版本已针对 DSH `0.1.5-rc.1` 完成认证。如果还没有安装 `dsh`,先使用官方 package 启动 DSH:
|
|
45
45
|
|
|
46
46
|
```sh
|
|
47
47
|
npx @deepseek-ai/dsh web
|
|
@@ -125,6 +125,8 @@ dsh web
|
|
|
125
125
|
|
|
126
126
|
## 开发
|
|
127
127
|
|
|
128
|
+
贡献指南:[`CONTRIBUTING.zh.md`](CONTRIBUTING.zh.md)——怎么提改动、CI 会跑什么、PR 里要写什么。
|
|
129
|
+
|
|
128
130
|
维护中的文档入口是 [`docs/README.zh.md`](docs/README.zh.md)。常用检查命令:
|
|
129
131
|
|
|
130
132
|
```sh
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wowyuarm/dsh-agent-team",
|
|
3
|
-
"version": "0.1.14
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "A persistent agent team for long-running collaboration in DeepSeek Harness",
|
|
6
6
|
"repository": {
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
"check:docs": "node scripts/check-docs.mjs",
|
|
28
28
|
"check:core-skills": "node scripts/check-core-skills.mjs",
|
|
29
29
|
"check:boundaries": "node scripts/check-package-boundaries.mjs",
|
|
30
|
-
"
|
|
30
|
+
"check:versions": "node scripts/check-version-consistency.mjs",
|
|
31
|
+
"test": "npm run generate:typert && npm run check:docs && npm run check:core-skills && npm run check:boundaries && npm run check:versions && vitest run",
|
|
31
32
|
"test:browser": "npm run build && node scripts/run-browser-test.mjs",
|
|
32
33
|
"preview": "node scripts/check-preview-credentials.mjs && npm run build && node scripts/run-preview.mjs",
|
|
33
34
|
"preview:ui": "npm run build && node scripts/run-ui-preview.mjs",
|
|
@@ -58,6 +59,7 @@
|
|
|
58
59
|
}
|
|
59
60
|
},
|
|
60
61
|
"dependencies": {
|
|
62
|
+
"@wowyuarm/dsh-context-continuity": "^0.1.3",
|
|
61
63
|
"zod": "^4.4.3"
|
|
62
64
|
},
|
|
63
65
|
"devDependencies": {
|
|
@@ -145,49 +147,49 @@
|
|
|
145
147
|
},
|
|
146
148
|
"peerDependencies": {
|
|
147
149
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
148
|
-
"@deepseek-ai/dsh-agent": ">=0.1.
|
|
149
|
-
"@deepseek-ai/dsh-agent-default-model": ">=0.1.
|
|
150
|
-
"@deepseek-ai/dsh-agent-presets": ">=0.1.
|
|
151
|
-
"@deepseek-ai/dsh-agent-tool-presentation": ">=0.1.
|
|
152
|
-
"@deepseek-ai/dsh-api-remotes": ">=0.1.
|
|
153
|
-
"@deepseek-ai/dsh-api-session-controller": ">=0.1.
|
|
154
|
-
"@deepseek-ai/dsh-api-workspace-controller": ">=0.1.
|
|
155
|
-
"@deepseek-ai/dsh-brand": ">=0.1.
|
|
156
|
-
"@deepseek-ai/dsh-client-locale": ">=0.1.
|
|
157
|
-
"@deepseek-ai/dsh-client-ui-conversation": ">=0.1.
|
|
158
|
-
"@deepseek-ai/dsh-client-ui-input-trigger": ">=0.1.
|
|
159
|
-
"@deepseek-ai/dsh-client-ui-layout": ">=0.1.
|
|
160
|
-
"@deepseek-ai/dsh-client-ui-primitives": ">=0.1.
|
|
161
|
-
"@deepseek-ai/dsh-client-ui-renderer": ">=0.1.
|
|
162
|
-
"@deepseek-ai/dsh-client-ui-settings-general": ">=0.1.
|
|
163
|
-
"@deepseek-ai/dsh-client-ui-sidebar": ">=0.1.
|
|
164
|
-
"@deepseek-ai/dsh-client-ui-slots": ">=0.1.
|
|
165
|
-
"@deepseek-ai/dsh-client-ui-workspace": ">=0.1.
|
|
166
|
-
"@deepseek-ai/dsh-command-compact": ">=0.1.
|
|
167
|
-
"@deepseek-ai/dsh-compaction": ">=0.1.
|
|
168
|
-
"@deepseek-ai/dsh-home-paths": ">=0.1.
|
|
169
|
-
"@deepseek-ai/dsh-invariants": ">=0.1.
|
|
170
|
-
"@deepseek-ai/dsh-llm": ">=0.1.
|
|
171
|
-
"@deepseek-ai/dsh-sandbox-policy": ">=0.1.
|
|
172
|
-
"@deepseek-ai/dsh-scope": ">=0.1.
|
|
173
|
-
"@deepseek-ai/dsh-session": ">=0.1.
|
|
174
|
-
"@deepseek-ai/dsh-session-format-catalog": ">=0.1.
|
|
175
|
-
"@deepseek-ai/dsh-session-persistence": ">=0.1.
|
|
176
|
-
"@deepseek-ai/dsh-skill": ">=0.1.
|
|
177
|
-
"@deepseek-ai/dsh-skill-filesystem": ">=0.1.
|
|
178
|
-
"@deepseek-ai/dsh-storage-domain": ">=0.1.
|
|
179
|
-
"@deepseek-ai/dsh-token-meter": ">=0.1.
|
|
180
|
-
"@deepseek-ai/dsh-tool-bash": ">=0.1.
|
|
181
|
-
"@deepseek-ai/dsh-tool-fs": ">=0.1.
|
|
182
|
-
"@deepseek-ai/dsh-tool-fs-search": ">=0.1.
|
|
183
|
-
"@deepseek-ai/dsh-tool-jobs": ">=0.1.
|
|
184
|
-
"@deepseek-ai/dsh-tool-pwsh": ">=0.1.
|
|
185
|
-
"@deepseek-ai/dsh-tool-skill": ">=0.1.
|
|
186
|
-
"@deepseek-ai/dsh-tool-todo": ">=0.1.
|
|
187
|
-
"@deepseek-ai/dsh-tool-web": ">=0.1.
|
|
188
|
-
"@deepseek-ai/dsh-tools": ">=0.1.
|
|
189
|
-
"@deepseek-ai/dsh-typert-protocol": ">=0.1.
|
|
190
|
-
"@deepseek-ai/dsh-workspace": ">=0.1.
|
|
150
|
+
"@deepseek-ai/dsh-agent": ">=0.1.5-rc.1 <0.1.6",
|
|
151
|
+
"@deepseek-ai/dsh-agent-default-model": ">=0.1.5-rc.1 <0.1.6",
|
|
152
|
+
"@deepseek-ai/dsh-agent-presets": ">=0.1.5-rc.1 <0.1.6",
|
|
153
|
+
"@deepseek-ai/dsh-agent-tool-presentation": ">=0.1.5-rc.1 <0.1.6",
|
|
154
|
+
"@deepseek-ai/dsh-api-remotes": ">=0.1.5-rc.1 <0.1.6",
|
|
155
|
+
"@deepseek-ai/dsh-api-session-controller": ">=0.1.5-rc.1 <0.1.6",
|
|
156
|
+
"@deepseek-ai/dsh-api-workspace-controller": ">=0.1.5-rc.1 <0.1.6",
|
|
157
|
+
"@deepseek-ai/dsh-brand": ">=0.1.5-rc.1 <0.1.6",
|
|
158
|
+
"@deepseek-ai/dsh-client-locale": ">=0.1.5-rc.1 <0.1.6",
|
|
159
|
+
"@deepseek-ai/dsh-client-ui-conversation": ">=0.1.5-rc.1 <0.1.6",
|
|
160
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": ">=0.1.5-rc.1 <0.1.6",
|
|
161
|
+
"@deepseek-ai/dsh-client-ui-layout": ">=0.1.5-rc.1 <0.1.6",
|
|
162
|
+
"@deepseek-ai/dsh-client-ui-primitives": ">=0.1.5-rc.1 <0.1.6",
|
|
163
|
+
"@deepseek-ai/dsh-client-ui-renderer": ">=0.1.5-rc.1 <0.1.6",
|
|
164
|
+
"@deepseek-ai/dsh-client-ui-settings-general": ">=0.1.5-rc.1 <0.1.6",
|
|
165
|
+
"@deepseek-ai/dsh-client-ui-sidebar": ">=0.1.5-rc.1 <0.1.6",
|
|
166
|
+
"@deepseek-ai/dsh-client-ui-slots": ">=0.1.5-rc.1 <0.1.6",
|
|
167
|
+
"@deepseek-ai/dsh-client-ui-workspace": ">=0.1.5-rc.1 <0.1.6",
|
|
168
|
+
"@deepseek-ai/dsh-command-compact": ">=0.1.5-rc.1 <0.1.6",
|
|
169
|
+
"@deepseek-ai/dsh-compaction": ">=0.1.5-rc.1 <0.1.6",
|
|
170
|
+
"@deepseek-ai/dsh-home-paths": ">=0.1.5-rc.1 <0.1.6",
|
|
171
|
+
"@deepseek-ai/dsh-invariants": ">=0.1.5-rc.1 <0.1.6",
|
|
172
|
+
"@deepseek-ai/dsh-llm": ">=0.1.5-rc.1 <0.1.6",
|
|
173
|
+
"@deepseek-ai/dsh-sandbox-policy": ">=0.1.5-rc.1 <0.1.6",
|
|
174
|
+
"@deepseek-ai/dsh-scope": ">=0.1.5-rc.1 <0.1.6",
|
|
175
|
+
"@deepseek-ai/dsh-session": ">=0.1.5-rc.1 <0.1.6",
|
|
176
|
+
"@deepseek-ai/dsh-session-format-catalog": ">=0.1.5-rc.1 <0.1.6",
|
|
177
|
+
"@deepseek-ai/dsh-session-persistence": ">=0.1.5-rc.1 <0.1.6",
|
|
178
|
+
"@deepseek-ai/dsh-skill": ">=0.1.5-rc.1 <0.1.6",
|
|
179
|
+
"@deepseek-ai/dsh-skill-filesystem": ">=0.1.5-rc.1 <0.1.6",
|
|
180
|
+
"@deepseek-ai/dsh-storage-domain": ">=0.1.5-rc.1 <0.1.6",
|
|
181
|
+
"@deepseek-ai/dsh-token-meter": ">=0.1.5-rc.1 <0.1.6",
|
|
182
|
+
"@deepseek-ai/dsh-tool-bash": ">=0.1.5-rc.1 <0.1.6",
|
|
183
|
+
"@deepseek-ai/dsh-tool-fs": ">=0.1.5-rc.1 <0.1.6",
|
|
184
|
+
"@deepseek-ai/dsh-tool-fs-search": ">=0.1.5-rc.1 <0.1.6",
|
|
185
|
+
"@deepseek-ai/dsh-tool-jobs": ">=0.1.5-rc.1 <0.1.6",
|
|
186
|
+
"@deepseek-ai/dsh-tool-pwsh": ">=0.1.5-rc.1 <0.1.6",
|
|
187
|
+
"@deepseek-ai/dsh-tool-skill": ">=0.1.5-rc.1 <0.1.6",
|
|
188
|
+
"@deepseek-ai/dsh-tool-todo": ">=0.1.5-rc.1 <0.1.6",
|
|
189
|
+
"@deepseek-ai/dsh-tool-web": ">=0.1.5-rc.1 <0.1.6",
|
|
190
|
+
"@deepseek-ai/dsh-tools": ">=0.1.5-rc.1 <0.1.6",
|
|
191
|
+
"@deepseek-ai/dsh-typert-protocol": ">=0.1.5-rc.1 <0.1.6",
|
|
192
|
+
"@deepseek-ai/dsh-workspace": ">=0.1.5-rc.1 <0.1.6",
|
|
191
193
|
"react": "^18.2.0"
|
|
192
194
|
},
|
|
193
195
|
"keywords": [
|
|
@@ -28,7 +28,7 @@ Activation applies `tools.allow` as a scoped restriction over the composed prese
|
|
|
28
28
|
|
|
29
29
|
Skills are Member-private: the preset has no shared skill-filesystem row, and the Host registers one provider per Member that scans exactly the plugin's bundled read-only core skills (`packages/agent-team/core-skills/` — the `member-skill-manager` meta skill that owns all skill craft guidance) plus that Member's writable `skills/` directory under its private memory path (default roots excluded). Installing is writing into the Member's own directory — directory form `skills/<name>/SKILL.md` with optional references and scripts, or a flat `.md` — and there is deliberately no upload Remote. The persona itself only states the private-space physical facts; the meta skill's description routes skill-management work to it. `skills.allow` filters the catalog through a live selection ref swapped at the same turn boundary; the filesystem watcher feeds discovery after a self-install.
|
|
30
30
|
|
|
31
|
-
Every team-managed session records `danger-full-access`. Project cwd remains the Workspace path, while private memory lives under `$DSH_HOME/agent-team/members/<memberId>/`. An untitled Member session is named with its handle through the session-title service, so the ordinary Session list shows the Member identity; an explicit rename or any earlier title always wins. The isolated `team-member` preset also provides coding tools including model-facing web search, Workspace instruction discovery, and Team protocol guidance. The host owns the shared Web service and provider; the preset mounts only the model-facing web tool. Its lowercase `memory.md` is a bounded
|
|
31
|
+
Every team-managed session records `danger-full-access`. Project cwd remains the Workspace path, while private memory lives under `$DSH_HOME/agent-team/members/<memberId>/`. An untitled Member session is named with its handle through the session-title service, so the ordinary Session list shows the Member identity; an explicit rename or any earlier title always wins. The isolated `team-member` preset also provides coding tools including model-facing web search, Workspace instruction discovery, and Team protocol guidance. The host owns the shared Web service and provider; the preset mounts only the model-facing web tool. Its lowercase `memory.md` is a bounded 16 KiB reference index, injected only for that Member when its content changes, with its current usage (`X.X KiB / 16 KiB`) stated in the block; `notes/` stays on-demand through filesystem tools. Over-budget indexes receive a maintenance warning, not silent truncation. Ordinary sessions and forks receive no Team identity or private-memory context. At Host startup every enabled Member's private memory is provisioned and an `inactive` Member's is removed with its Session archived; directories the replayed ledger does not reference are never pruned, so leftovers from a discarded ledger stay on disk for the operator. Both that removal and the activation-time migration of a pre-fix colon directory act only on paths inside the running process's own `$DSH_HOME/agent-team/members/`: a recorded path naming a different DSH home (an isolated test home, a second instance) is refused with a warning rather than renamed or deleted, because acting on it would take a Member's real private memory out of its home.
|
|
32
32
|
|
|
33
33
|
Adding a Member to a Channel grants future read/send/claim authority but injects no historical Messages into the member session. Every top-level Message creates a Thread; new Client/tool starts explicitly choose taskless while released-client omission remains taskful, and a Human can later promote a taskless Thread by atomically adding its Task overlay and a structured `promote` Task activity. Thread Attention starts when a Thread is created, a Claim is created, a member follows, a top-level Message mentions them, or a Human confirms an invitation. Ordinary unread is derived from Attention; structured mentions create durable direct markers, while terminal Task changes retain sparse Activity markers for affected followers after Attention ends. `team_inbox` and Thread reads are Host projections, not Session inbox contents. A direct mention context includes its Message body and source; Task/Claim changes — including promotion — include concise transition facts; ordinary unread carries a body-free Thread-first route. Pending hints are coalesced, ignored hints do not loop, and resume/error recovery derives a new hint from durable unread state. For recoverable service failures, the Host wakes a Member after each of the first two consecutive `agent/error` occurrences, then leaves the third failure for the operator; only a clean turn resets that run.
|
|
34
34
|
|
|
@@ -28,7 +28,7 @@ Activation 把 `tools.allow` 作为 scoped restriction 应用在已组合的 pre
|
|
|
28
28
|
|
|
29
29
|
Skills 是 Member 私有的:preset 不带共享 skill-filesystem row,Host 为每个 Member 注册一个 provider,只扫插件内置的只读 core skills(`packages/agent-team/core-skills/`——`member-skill-manager` meta skill,全部 skill 写作/安装/credentials 引导都在它里面)加该 Member 可写的私有 `skills/` 目录(排除默认 roots)。安装就是往自己目录写——目录形态 `skills/<name>/SKILL.md` + 可选 references/scripts,或平铺 `.md`——有意不提供上传 Remote。persona 只陈述私有空间物理事实,meta skill 的 description 负责"涉及 skill 管理工作时先读我"。`skills.allow` 通过同一 turn 边界换装的 live selection ref 过滤 catalog;自装后的发现由 filesystem watcher 驱动。
|
|
30
30
|
|
|
31
|
-
每个 Team 管理的 session 都会持久写入 `danger-full-access`。项目 cwd 仍是 Workspace 路径,私有记忆位于 `$DSH_HOME/agent-team/members/<memberId>/`。没有标题的 Member session 会通过 session-title service 以 handle 命名,普通 Session 列表因此直接显示 Member 身份;显式重命名或任何既有标题始终优先。隔离的 `team-member` preset 还提供 coding 工具、面向模型的 Web 搜索、Workspace instruction discovery 和 Team protocol guidance。共享的 Web service 与 provider 仍由 Host 持有;preset 只挂载面向模型的 Web tool。小写 `memory.md` 是有界的
|
|
31
|
+
每个 Team 管理的 session 都会持久写入 `danger-full-access`。项目 cwd 仍是 Workspace 路径,私有记忆位于 `$DSH_HOME/agent-team/members/<memberId>/`。没有标题的 Member session 会通过 session-title service 以 handle 命名,普通 Session 列表因此直接显示 Member 身份;显式重命名或任何既有标题始终优先。隔离的 `team-member` preset 还提供 coding 工具、面向模型的 Web 搜索、Workspace instruction discovery 和 Team protocol guidance。共享的 Web service 与 provider 仍由 Host 持有;preset 只挂载面向模型的 Web tool。小写 `memory.md` 是有界的 16 KiB 参考索引,只有该 Member 的内容变化时才注入,注入块注明当前用量(已用 X.X KiB / 16 KiB);`notes/` 只通过 filesystem tools 按需读取。超预算索引只产生维护警告,不静默截断。普通 session 和 fork 不获得 Team 身份或私有记忆上下文。Host 启动时会为每个 enabled Member 准备其私有记忆,并对 `inactive` Member 归档其 Session 后删除其私有记忆;重放 ledger 不引用的目录一律不清理,被丢弃 ledger 的遗留物留在磁盘上交给操作者处置。这项删除与 activation 时对旧式 colon 目录的迁移都只作用于当前进程自己的 `$DSH_HOME/agent-team/members/` 之内的路径:记录里指向另一个 DSH home(隔离测试 home、第二个实例)的路径会被拒绝并告警,既不改名也不删除——对它动手等于把 Member 的真实私有记忆搬出它自己的 home。
|
|
32
32
|
|
|
33
33
|
把 Member 加入 Channel 只授予之后的 read/send/claim authority,不向 Member session 注入历史 Message。每条顶层 Message 都创建 Thread;新 Client/tool 显式选择 taskless,released Client 省略意图时仍保持 taskful;Human 可之后 promotion taskless Thread,原子附加 Task overlay 与结构化 `promote` Task activity。创建 Thread、创建 Claim、显式 follow、顶层消息 mention 到、或 Human 确认邀请会开始 Thread Attention。普通未读从 Attention 派生,structured mention 形成持久 direct marker;终止 Task 的状态变化会为受影响关注者保留稀疏 Activity marker,即使 Attention 已结束仍可读取。`team_inbox` 和 Thread read 是 Host projection,不是 Session inbox 内容。Direct mention context 包含消息正文和来源,Task/Claim 变化(含 promotion)包含简短状态事实,普通未读提供无正文的 Thread-first 路由。提示会合并,忽略提示不会形成循环,resume/runtime error recovery 会从持久未读状态重新判断是否提示。对于可恢复的服务错误,Host 会在连续 `agent/error` occurrence 的前两次后唤醒 Member;第 3 次错误则交给 operator,只有 clean turn 才会重置这段连续错误。
|
|
34
34
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: member-memory-manager
|
|
3
|
+
description: Maintain this Member's private memory — what earns a line in the memory.md index, what belongs in a notes/ file instead, how to compact an index past half its budget, and when to demote knowledge that no longer earns a line. Read this skill when the injected memory block shows a maintenance warning, when the index approaches its budget, or before adding or renaming a note.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Member Memory Manager
|
|
7
|
+
|
|
8
|
+
`memory.md` is a routing index, not a store, and its budget is real: the injected block states current usage, and past 16 KiB the index is not injected at all — the Member loses its own continuity. Notes are never injected; they are read on demand, so the index must stay small enough to be resident and precise enough to route.
|
|
9
|
+
|
|
10
|
+
## Three tiers
|
|
11
|
+
|
|
12
|
+
- **T0 `memory.md` (always injected)** — identity and role, durable rules that must bind every step, what is currently in hand, and one routing line per topic cluster. Target well under 8 KiB; treat 16 KiB as the hard ceiling.
|
|
13
|
+
- **T1 `notes/<cluster>/README.md` (read on demand)** — one line per note in that cluster. What T0 routes to is the cluster count (3–6), not the note count.
|
|
14
|
+
- **T2 `notes/<name>.md` (read on demand)** — one concept per file; update the existing file instead of writing a near-duplicate, and keep evidence, numbers, and commands here rather than in T0.
|
|
15
|
+
|
|
16
|
+
Screenshots, logs, and generated artifacts belong under `notes/assets/` and earn no index line anywhere.
|
|
17
|
+
|
|
18
|
+
## What earns a line
|
|
19
|
+
|
|
20
|
+
Apply one test before writing: would my future self make a wrong decision without this line? If not, it does not belong in T0. Team facts the ledger already owns, event logs, one-off task detail, credentials, and copies of a note's body never qualify.
|
|
21
|
+
|
|
22
|
+
## Lifecycle
|
|
23
|
+
|
|
24
|
+
- **Compact as you write.** Past roughly half the budget, merge and drop while adding rather than appending; naming a cluster in T1 is cheaper than naming its notes in T0.
|
|
25
|
+
- **Demote, do not delete.** A rule that stopped binding moves down a tier (T0 to a note, T1 to `notes/archive/`); archived knowledge stays readable and is never silently lost.
|
|
26
|
+
- **Separate rolling from settled.** "In hand" is overwritten as work moves; settled knowledge is compacted in place, and that section never accumulates history.
|
|
27
|
+
|
|
28
|
+
## Check after reorganizing
|
|
29
|
+
|
|
30
|
+
Re-read `memory.md` once: under budget, one line per cluster, every routing line resolving to a file that exists, and nothing that must bind every step living only in a note. The injected block reports the current size, so a later injection shows whether the rewrite took.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Agent Team's binding of the context-continuity engine: how one Member
|
|
3
|
+
* resolves to its live Agent and back, how a Member Session's fold state is
|
|
4
|
+
* read, how a prepared generation swap runs in the Member lifecycle, and the
|
|
5
|
+
* two domain dimensions the engine refuses to own (which queued messages are
|
|
6
|
+
* Team notices, and how a rollover's durable identity is named).
|
|
7
|
+
*
|
|
8
|
+
* The engine owns every mechanic this module does not state: the idle-boundary
|
|
9
|
+
* swap, carried input, checkpoint continuations, crash repair. Team owns the
|
|
10
|
+
* Member vocabulary and the ledger-backed lifecycle behind
|
|
11
|
+
* {@link TeamContextContinuityOptions.executeTransition}.
|
|
12
|
+
*
|
|
13
|
+
* The projection state this host hands the coordinator is the engine's own
|
|
14
|
+
* (`ContextProjectionState`), read from the unit `context-projection.ts`
|
|
15
|
+
* registers once per Host — one state shape, one fold, no translation.
|
|
16
|
+
* @module @wowyuarm/dsh-agent-team/context-continuity-host
|
|
17
|
+
*/
|
|
18
|
+
import { createHash } from 'node:crypto';
|
|
19
|
+
import { ContextContinuityCoordinator, ContextMessageCodec, } from '@wowyuarm/dsh-context-continuity';
|
|
20
|
+
import { SessionId as SessionIdBrand } from '@deepseek-ai/dsh-session';
|
|
21
|
+
import { AGENT_TEAM_PLUGIN_ID } from "./context-source.js";
|
|
22
|
+
/**
|
|
23
|
+
* The one writer of context-continuity messages for Team. Section names are
|
|
24
|
+
* the engine's fixed vocabulary; only the plugin identity and the two
|
|
25
|
+
* subject-facing prose lines are Team's, and both are frozen by history —
|
|
26
|
+
* durable logs written by earlier generations are read back through this same
|
|
27
|
+
* identity, so `handoffIntro` and `handoffVerifyNote` reproduce them byte for
|
|
28
|
+
* byte.
|
|
29
|
+
*/
|
|
30
|
+
export const TEAM_CONTEXT_CODEC = new ContextMessageCodec({
|
|
31
|
+
pluginId: AGENT_TEAM_PLUGIN_ID,
|
|
32
|
+
handoffIntro: 'Context handoff: you are continuing as the same Team Member in a fresh private context.',
|
|
33
|
+
handoffVerifyNote: 'Your handoff from the previous context follows. Verify external state before relying on it; a context change never rolls back files, processes, Team facts, or remote side effects.',
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Team's `ContextContinuityHost`. Every method is a straight delegation except
|
|
37
|
+
* the three that decide domain meaning: the durable rollover identity, which
|
|
38
|
+
* queued messages are rederived Team notices, and the projection bridge.
|
|
39
|
+
*/
|
|
40
|
+
export class TeamContextContinuityHost {
|
|
41
|
+
options;
|
|
42
|
+
constructor(options) {
|
|
43
|
+
this.options = options;
|
|
44
|
+
}
|
|
45
|
+
agentForSubject(memberId) {
|
|
46
|
+
return this.options.agentForMember(memberId);
|
|
47
|
+
}
|
|
48
|
+
subjectForAgent(agent) {
|
|
49
|
+
const member = this.options.memberForAgent(agent);
|
|
50
|
+
if (member === undefined)
|
|
51
|
+
return undefined;
|
|
52
|
+
return { id: member.memberId, sessionId: member.sessionId };
|
|
53
|
+
}
|
|
54
|
+
projectionForSubject(memberId, sessionId) {
|
|
55
|
+
return this.options.projectionForMember(memberId, sessionId);
|
|
56
|
+
}
|
|
57
|
+
executeTransition(memberId, plan) {
|
|
58
|
+
return this.options.executeTransition(memberId, plan);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Rollover identity, unchanged from the in-repo coordinator: stable key over
|
|
62
|
+
* the previous Session and the successful tool call, JSON-encoded so no
|
|
63
|
+
* delimiter can alias across the two unconstrained fields, then hashed to a
|
|
64
|
+
* fixed-length digest. Both names are durable — in-flight recovery converges
|
|
65
|
+
* on `agent-team-rollover-<digest>`, and the ledger records the request id.
|
|
66
|
+
*/
|
|
67
|
+
rolloverIdentity(previousSessionId, toolCallId) {
|
|
68
|
+
const stableKey = createHash('sha256').update(JSON.stringify([previousSessionId, toolCallId])).digest('hex');
|
|
69
|
+
return {
|
|
70
|
+
newSessionId: SessionIdBrand(`agent-team-rollover-${stableKey}`),
|
|
71
|
+
requestId: `agent-team:rollover:${stableKey}`,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A queued message the successor generation rederives from ledger facts: any
|
|
76
|
+
* Team-attributed message. The engine excludes the handoff and continuation
|
|
77
|
+
* envelopes before consulting this, so the two are ordinary delivered
|
|
78
|
+
* context the next generation keeps.
|
|
79
|
+
*/
|
|
80
|
+
isEphemeralNotice(message) {
|
|
81
|
+
const source = message.source;
|
|
82
|
+
return source.kind === 'plugin' && source.plugin === AGENT_TEAM_PLUGIN_ID;
|
|
83
|
+
}
|
|
84
|
+
log(message) {
|
|
85
|
+
this.options.log(message);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** Build the engine coordinator over Team's Member lifecycle. */
|
|
89
|
+
export function createTeamContextManagement(options) {
|
|
90
|
+
return new ContextContinuityCoordinator(new TeamContextContinuityHost(options), TEAM_CONTEXT_CODEC);
|
|
91
|
+
}
|