@suifei/dsh-ai-team 0.3.24 → 0.3.25

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.25 — 2026-11-10
4
+
5
+ - 收件箱未读数按 `state=unread` 统计,决策提交后「待你处理」立即消失;
6
+ - 已答/已 dismiss 的报告六问不会在重启后再次导入;
7
+ - 收件箱决策项显示提问成员名字,不再显示 `mem_*`。
8
+
3
9
  ## 0.3.24 — 2026-11-10
4
10
 
5
11
  - 修复 member `team` 工具 accept 未透传 `checks` 的缺口:agent QA 带 checklist 验收不再 E_INVALID_STATE;
package/client.js CHANGED
@@ -3024,7 +3024,7 @@ window.__ModuleLoader__.load({
3024
3024
  h('div', { className: 'at-inboxmeta' },
3025
3025
  item.projectName ? item.projectName + ' · ' : '',
3026
3026
  item.ref?.category ? item.ref.category + ' · ' : '',
3027
- item.ref?.memberId ? item.ref.memberId : '',
3027
+ item.ref?.memberName ?? (item.ref?.memberId ? item.ref.memberId : ''),
3028
3028
  ' · ',
3029
3029
  fmtTime(item.createdAt)),
3030
3030
  item.state !== 'unread' ? h('div', { className: 'at-inboxstate' }, item.state) : null),
package/index.js CHANGED
@@ -34,7 +34,7 @@ export const name = 'ai-team';
34
34
  /** The workbench only makes sense where the Web carrier exists. */
35
35
  export const inject = ['webServer', 'permissionPresets', 'sandboxPolicy'];
36
36
 
37
- const VERSION = '0.3.24';
37
+ const VERSION = '0.3.25';
38
38
  const PROJECT_ID = 'prj_main';
39
39
  const HUMAN_ID = 'mem_human';
40
40
 
@@ -748,7 +748,7 @@ export function apply(ctx) {
748
748
  return send(res, {
749
749
  ...bootstrap,
750
750
  inbox,
751
- inboxUnread: inbox.filter((item) => item.read !== true).length,
751
+ inboxUnread: inbox.filter((item) => item.state === 'unread').length,
752
752
  projects: booted.registry.list().map((project) => {
753
753
  const active = bootstrap.projects?.find((entry) => entry.id === project.id);
754
754
  return {
@@ -184,8 +184,7 @@ export class TeamService {
184
184
  item.memberId === humanId
185
185
  && item.ref?.source === reportPath
186
186
  && Array.isArray(item.ref?.questions)
187
- && item.ref.questions.length > 0
188
- && !['resolved', 'dismissed', 'superseded'].includes(item.state));
187
+ && item.ref.questions.length > 0);
189
188
  if (alreadyStructured) return 0;
190
189
  const chosen = candidates.find((candidate) => /§6|六问/.test(candidate.entry.body))
191
190
  ?? candidates.sort((left, right) => (right.entry.seq ?? 0) - (left.entry.seq ?? 0))[0];
@@ -196,6 +195,7 @@ export class TeamService {
196
195
  taskId: chosen.task.id,
197
196
  entrySeq: chosen.entry.seq,
198
197
  memberId: chosen.entry.authorId,
198
+ memberName: this.state.members?.[chosen.entry.authorId]?.name ?? chosen.entry.authorId,
199
199
  category: 'thread_mention',
200
200
  title: `需 Human 决策 · ${reportQuestions.length} 问`,
201
201
  questions: reportQuestions,
@@ -223,6 +223,7 @@ export class TeamService {
223
223
  taskId: task.id,
224
224
  entrySeq: entry.seq,
225
225
  memberId: entry.authorId,
226
+ memberName: this.state.members?.[entry.authorId]?.name ?? entry.authorId,
226
227
  category: 'thread_mention',
227
228
  title: String(entry.body).slice(0, 180),
228
229
  },
@@ -928,6 +929,7 @@ export class TeamService {
928
929
  taskId,
929
930
  entrySeq: outcome.entry.seq,
930
931
  memberId: authorId,
932
+ memberName: this.state.members?.[authorId]?.name ?? authorId,
931
933
  category: 'thread_mention',
932
934
  title: String(body).slice(0, 180),
933
935
  },
@@ -982,6 +984,8 @@ export class TeamService {
982
984
  ref: {
983
985
  taskId,
984
986
  title,
987
+ memberId: command.actor.memberId ?? null,
988
+ memberName: this.state.members?.[command.actor.memberId]?.name ?? command.actor.memberId ?? null,
985
989
  questions,
986
990
  ...(typeof payload.source === 'string' && payload.source !== '' ? { source: payload.source } : {}),
987
991
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@suifei/dsh-ai-team",
3
- "version": "0.3.24",
3
+ "version": "0.3.25",
4
4
  "type": "module",
5
5
  "description": "文渊阁 (Wenyuan Pavilion) — AI Team mode for DeepSeek Harness: concurrent projects, owned tasks, threads, inbox and an append-only team ledger",
6
6
  "license": "MIT",