@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.
Files changed (119) hide show
  1. package/README.md +5 -3
  2. package/README.zh.md +5 -3
  3. package/package.json +47 -45
  4. package/packages/agent-team/README.md +1 -1
  5. package/packages/agent-team/README.zh.md +1 -1
  6. package/packages/agent-team/core-skills/member-memory-manager/SKILL.md +30 -0
  7. package/packages/agent-team/lib/context-continuity-host.js +91 -0
  8. package/packages/agent-team/lib/context-projection.js +266 -493
  9. package/packages/agent-team/lib/context-source.js +4 -74
  10. package/packages/agent-team/lib/human-avatar.js +61 -0
  11. package/packages/agent-team/lib/human-profile.js +46 -0
  12. package/packages/agent-team/lib/human-update-check.js +119 -0
  13. package/packages/agent-team/lib/index.js +351 -245
  14. package/packages/agent-team/lib/ledger.js +120 -15
  15. package/packages/agent-team/lib/member-context.js +6 -3
  16. package/packages/agent-team/lib/member-runtime.js +1 -1
  17. package/packages/agent-team/lib/pressure-policy.js +6 -1
  18. package/packages/agent-team/lib/session-remediation.js +1 -1
  19. package/packages/agent-team/lib/typert.host.js +424 -32
  20. package/packages/agent-team/lib/typert.remote-client.d.ts +13 -3
  21. package/packages/agent-team/lib/typert.remote-client.d.ts.map +1 -1
  22. package/packages/agent-team/lib/typert.remote-client.js +205 -28
  23. package/packages/agent-team/lib/types/context-continuity-host.d.ts +84 -0
  24. package/packages/agent-team/lib/types/context-continuity-host.d.ts.map +1 -0
  25. package/packages/agent-team/lib/types/context-projection.d.ts +130 -185
  26. package/packages/agent-team/lib/types/context-projection.d.ts.map +1 -1
  27. package/packages/agent-team/lib/types/context-source.d.ts +4 -35
  28. package/packages/agent-team/lib/types/context-source.d.ts.map +1 -1
  29. package/packages/agent-team/lib/types/human-avatar.d.ts +29 -0
  30. package/packages/agent-team/lib/types/human-avatar.d.ts.map +1 -0
  31. package/packages/agent-team/lib/types/human-profile.d.ts +44 -0
  32. package/packages/agent-team/lib/types/human-profile.d.ts.map +1 -0
  33. package/packages/agent-team/lib/types/human-update-check.d.ts +73 -0
  34. package/packages/agent-team/lib/types/human-update-check.d.ts.map +1 -0
  35. package/packages/agent-team/lib/types/index.d.ts +104 -38
  36. package/packages/agent-team/lib/types/index.d.ts.map +1 -1
  37. package/packages/agent-team/lib/types/ledger.d.ts +31 -2
  38. package/packages/agent-team/lib/types/ledger.d.ts.map +1 -1
  39. package/packages/agent-team/lib/types/member-context.d.ts.map +1 -1
  40. package/packages/agent-team/lib/types/pressure-policy.d.ts +6 -0
  41. package/packages/agent-team/lib/types/pressure-policy.d.ts.map +1 -1
  42. package/packages/agent-team/lib/types/session-remediation.d.ts +1 -1
  43. package/packages/agent-team/lib/types/session-remediation.d.ts.map +1 -1
  44. package/packages/agent-team/lib/types/types/entities.d.ts +17 -0
  45. package/packages/agent-team/lib/types/types/entities.d.ts.map +1 -1
  46. package/packages/agent-team/lib/types/types/requests-results.d.ts +63 -0
  47. package/packages/agent-team/lib/types/types/requests-results.d.ts.map +1 -1
  48. package/packages/agent-team/preset/team-member/agent.cordis.yml +3 -1
  49. package/packages/client-agent-team/lib/client.js +1890 -613
  50. package/packages/client-agent-team/lib/client.js.map +1 -1
  51. package/packages/client-agent-team/lib/types/client/HumanSettingsSection.d.ts +15 -0
  52. package/packages/client-agent-team/lib/types/client/HumanSettingsSection.d.ts.map +1 -0
  53. package/packages/client-agent-team/lib/types/client/HumanSettingsSection.js +115 -0
  54. package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.d.ts.map +1 -1
  55. package/packages/client-agent-team/lib/types/client/TeamAgentsPanel.js +6 -2
  56. package/packages/client-agent-team/lib/types/client/TeamAvatarStack.d.ts +22 -1
  57. package/packages/client-agent-team/lib/types/client/TeamAvatarStack.d.ts.map +1 -1
  58. package/packages/client-agent-team/lib/types/client/TeamAvatarStack.js +25 -2
  59. package/packages/client-agent-team/lib/types/client/TeamChannelPage.d.ts +6 -1
  60. package/packages/client-agent-team/lib/types/client/TeamChannelPage.d.ts.map +1 -1
  61. package/packages/client-agent-team/lib/types/client/TeamChannelPage.js +67 -29
  62. package/packages/client-agent-team/lib/types/client/TeamComposer.js +2 -2
  63. package/packages/client-agent-team/lib/types/client/TeamConversation.d.ts +1 -1
  64. package/packages/client-agent-team/lib/types/client/TeamConversation.d.ts.map +1 -1
  65. package/packages/client-agent-team/lib/types/client/TeamConversation.js +12 -5
  66. package/packages/client-agent-team/lib/types/client/TeamInboxPage.d.ts +4 -1
  67. package/packages/client-agent-team/lib/types/client/TeamInboxPage.d.ts.map +1 -1
  68. package/packages/client-agent-team/lib/types/client/TeamInboxPage.js +22 -7
  69. package/packages/client-agent-team/lib/types/client/TeamMemberEditor.d.ts +11 -1
  70. package/packages/client-agent-team/lib/types/client/TeamMemberEditor.d.ts.map +1 -1
  71. package/packages/client-agent-team/lib/types/client/TeamMemberEditor.js +68 -7
  72. package/packages/client-agent-team/lib/types/client/TeamMessage.d.ts +18 -3
  73. package/packages/client-agent-team/lib/types/client/TeamMessage.d.ts.map +1 -1
  74. package/packages/client-agent-team/lib/types/client/TeamMessage.js +213 -67
  75. package/packages/client-agent-team/lib/types/client/TeamThreadPage.d.ts +5 -0
  76. package/packages/client-agent-team/lib/types/client/TeamThreadPage.d.ts.map +1 -1
  77. package/packages/client-agent-team/lib/types/client/TeamThreadPage.js +52 -26
  78. package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.d.ts.map +1 -1
  79. package/packages/client-agent-team/lib/types/client/TeamWorkspaceBrowser.js +2 -5
  80. package/packages/client-agent-team/lib/types/client/TeamWorkspaceSelector.d.ts +37 -0
  81. package/packages/client-agent-team/lib/types/client/TeamWorkspaceSelector.d.ts.map +1 -0
  82. package/packages/client-agent-team/lib/types/client/TeamWorkspaceSelector.js +58 -0
  83. package/packages/client-agent-team/lib/types/client/avatar-image.d.ts +21 -0
  84. package/packages/client-agent-team/lib/types/client/avatar-image.d.ts.map +1 -0
  85. package/packages/client-agent-team/lib/types/client/avatar-image.js +9 -0
  86. package/packages/client-agent-team/lib/types/client/human-identity.d.ts +94 -0
  87. package/packages/client-agent-team/lib/types/client/human-identity.d.ts.map +1 -0
  88. package/packages/client-agent-team/lib/types/client/human-identity.js +117 -0
  89. package/packages/client-agent-team/lib/types/client/index.d.ts.map +1 -1
  90. package/packages/client-agent-team/lib/types/client/index.js +94 -4
  91. package/packages/client-agent-team/lib/types/client/locales.d.ts +74 -2
  92. package/packages/client-agent-team/lib/types/client/locales.d.ts.map +1 -1
  93. package/packages/client-agent-team/lib/types/client/locales.js +80 -2
  94. package/packages/client-agent-team/lib/types/client/multi-menu-field.js +1 -1
  95. package/packages/client-agent-team/lib/types/client/refs.d.ts +71 -0
  96. package/packages/client-agent-team/lib/types/client/refs.d.ts.map +1 -0
  97. package/packages/client-agent-team/lib/types/client/refs.js +181 -0
  98. package/packages/client-agent-team/lib/types/client/sidebar-sections.d.ts +1 -1
  99. package/packages/client-agent-team/lib/types/client/sidebar-sections.d.ts.map +1 -1
  100. package/packages/client-agent-team/lib/types/client/sidebar-sections.js +4 -3
  101. package/packages/client-agent-team/lib/types/client/slots.d.ts +8 -2
  102. package/packages/client-agent-team/lib/types/client/slots.d.ts.map +1 -1
  103. package/packages/client-agent-team/lib/types/client/team-formatters.d.ts +57 -9
  104. package/packages/client-agent-team/lib/types/client/team-formatters.d.ts.map +1 -1
  105. package/packages/client-agent-team/lib/types/client/team-formatters.js +85 -17
  106. package/packages/tool-agent-team/README.md +1 -1
  107. package/packages/tool-agent-team/README.zh.md +1 -1
  108. package/packages/tool-agent-team/lib/context-tools.js +20 -6
  109. package/packages/tool-agent-team/lib/index.js +2 -2
  110. package/packages/tool-agent-team/lib/types/context-tools.d.ts.map +1 -1
  111. package/packages/agent-team/lib/context-management.js +0 -372
  112. package/packages/agent-team/lib/types/context-management.d.ts +0 -154
  113. package/packages/agent-team/lib/types/context-management.d.ts.map +0 -1
  114. package/packages/client-agent-team/lib/types/client/TeamWorkspaceRow.d.ts +0 -11
  115. package/packages/client-agent-team/lib/types/client/TeamWorkspaceRow.d.ts.map +0 -1
  116. package/packages/client-agent-team/lib/types/client/TeamWorkspaceRow.js +0 -6
  117. package/packages/client-agent-team/lib/types/client/task-refs.d.ts +0 -31
  118. package/packages/client-agent-team/lib/types/client/task-refs.d.ts.map +0 -1
  119. package/packages/client-agent-team/lib/types/client/task-refs.js +0 -99
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # DeepSeek Harness Agent Team
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
  [![Release](https://img.shields.io/github/v/release/wowyuarm/dsh-agent-team?include_prereleases&style=flat-square)](https://github.com/wowyuarm/dsh-agent-team/releases)
8
8
  [![Listed on Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com/p/wowyuarm/dsh-agent-team/)
9
9
 
10
- **dsh-agent-team** gives DeepSeek Harness a persistent agent team for long-running collaboration: agents are durable identities for their sessions, keeping memory and responsibilities across them; Workspaces organize agents and sessions per project; Channels carry responsibilities; Task Threads chain session agents into one line of progress.
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.6-alpha.1`. If `dsh` is not installed yet, start DSH with the official package:
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 Team
1
+ # dsh-agent-team — DeepSeek Harness 持久 Agent 团队
2
2
 
3
3
  [English](README.md) | 简体中文
4
4
 
@@ -7,7 +7,7 @@
7
7
  [![Release](https://img.shields.io/github/v/release/wowyuarm/dsh-agent-team?include_prereleases&style=flat-square)](https://github.com/wowyuarm/dsh-agent-team/releases)
8
8
  [![Listed on Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com/p/wowyuarm/dsh-agent-team/)
9
9
 
10
- **dsh-agent-team** 给 DSH 一个可长期协作的持久 Agent 团队:Agent session 的持久身份,跨会话保持记忆与职责;Workspace 按项目组织 agents sessions;Channel 承载职责分派;Task Thread 把多个 session agent 串成一条推进线。
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.6-alpha.1` 完成认证。如果还没有安装 `dsh`,先使用官方 package 启动 DSH:
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-alpha.1",
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
- "test": "npm run generate:typert && npm run check:docs && npm run check:core-skills && npm run check:boundaries && vitest run",
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.6-alpha.1 <0.1.7",
149
- "@deepseek-ai/dsh-agent-default-model": ">=0.1.6-alpha.1 <0.1.7",
150
- "@deepseek-ai/dsh-agent-presets": ">=0.1.6-alpha.1 <0.1.7",
151
- "@deepseek-ai/dsh-agent-tool-presentation": ">=0.1.6-alpha.1 <0.1.7",
152
- "@deepseek-ai/dsh-api-remotes": ">=0.1.6-alpha.1 <0.1.7",
153
- "@deepseek-ai/dsh-api-session-controller": ">=0.1.6-alpha.1 <0.1.7",
154
- "@deepseek-ai/dsh-api-workspace-controller": ">=0.1.6-alpha.1 <0.1.7",
155
- "@deepseek-ai/dsh-brand": ">=0.1.6-alpha.1 <0.1.7",
156
- "@deepseek-ai/dsh-client-locale": ">=0.1.6-alpha.1 <0.1.7",
157
- "@deepseek-ai/dsh-client-ui-conversation": ">=0.1.6-alpha.1 <0.1.7",
158
- "@deepseek-ai/dsh-client-ui-input-trigger": ">=0.1.6-alpha.1 <0.1.7",
159
- "@deepseek-ai/dsh-client-ui-layout": ">=0.1.6-alpha.1 <0.1.7",
160
- "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.6-alpha.1 <0.1.7",
161
- "@deepseek-ai/dsh-client-ui-renderer": ">=0.1.6-alpha.1 <0.1.7",
162
- "@deepseek-ai/dsh-client-ui-settings-general": ">=0.1.6-alpha.1 <0.1.7",
163
- "@deepseek-ai/dsh-client-ui-sidebar": ">=0.1.6-alpha.1 <0.1.7",
164
- "@deepseek-ai/dsh-client-ui-slots": ">=0.1.6-alpha.1 <0.1.7",
165
- "@deepseek-ai/dsh-client-ui-workspace": ">=0.1.6-alpha.1 <0.1.7",
166
- "@deepseek-ai/dsh-command-compact": ">=0.1.6-alpha.1 <0.1.7",
167
- "@deepseek-ai/dsh-compaction": ">=0.1.6-alpha.1 <0.1.7",
168
- "@deepseek-ai/dsh-home-paths": ">=0.1.6-alpha.1 <0.1.7",
169
- "@deepseek-ai/dsh-invariants": ">=0.1.6-alpha.1 <0.1.7",
170
- "@deepseek-ai/dsh-llm": ">=0.1.6-alpha.1 <0.1.7",
171
- "@deepseek-ai/dsh-sandbox-policy": ">=0.1.6-alpha.1 <0.1.7",
172
- "@deepseek-ai/dsh-scope": ">=0.1.6-alpha.1 <0.1.7",
173
- "@deepseek-ai/dsh-session": ">=0.1.6-alpha.1 <0.1.7",
174
- "@deepseek-ai/dsh-session-format-catalog": ">=0.1.6-alpha.1 <0.1.7",
175
- "@deepseek-ai/dsh-session-persistence": ">=0.1.6-alpha.1 <0.1.7",
176
- "@deepseek-ai/dsh-skill": ">=0.1.6-alpha.1 <0.1.7",
177
- "@deepseek-ai/dsh-skill-filesystem": ">=0.1.6-alpha.1 <0.1.7",
178
- "@deepseek-ai/dsh-storage-domain": ">=0.1.6-alpha.1 <0.1.7",
179
- "@deepseek-ai/dsh-token-meter": ">=0.1.6-alpha.1 <0.1.7",
180
- "@deepseek-ai/dsh-tool-bash": ">=0.1.6-alpha.1 <0.1.7",
181
- "@deepseek-ai/dsh-tool-fs": ">=0.1.6-alpha.1 <0.1.7",
182
- "@deepseek-ai/dsh-tool-fs-search": ">=0.1.6-alpha.1 <0.1.7",
183
- "@deepseek-ai/dsh-tool-jobs": ">=0.1.6-alpha.1 <0.1.7",
184
- "@deepseek-ai/dsh-tool-pwsh": ">=0.1.6-alpha.1 <0.1.7",
185
- "@deepseek-ai/dsh-tool-skill": ">=0.1.6-alpha.1 <0.1.7",
186
- "@deepseek-ai/dsh-tool-todo": ">=0.1.6-alpha.1 <0.1.7",
187
- "@deepseek-ai/dsh-tool-web": ">=0.1.6-alpha.1 <0.1.7",
188
- "@deepseek-ai/dsh-tools": ">=0.1.6-alpha.1 <0.1.7",
189
- "@deepseek-ai/dsh-typert-protocol": ">=0.1.6-alpha.1 <0.1.7",
190
- "@deepseek-ai/dsh-workspace": ">=0.1.6-alpha.1 <0.1.7",
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 8 KiB reference index, injected only for that Member when its content changes; `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.
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` 是有界的 8 KiB 参考索引,只有该 Member 的内容变化时才注入;`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。
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
+ }