dsh-group-status 0.2.2 → 0.3.0

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 (86) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.en.md +36 -18
  3. package/README.md +39 -19
  4. package/lib/client.js +659 -300
  5. package/lib/client.js.map +1 -1
  6. package/lib/index.js +22 -9
  7. package/lib/types/client/BadgeSettingsCard.d.ts +24 -0
  8. package/lib/types/client/BadgeSettingsCard.d.ts.map +1 -0
  9. package/lib/types/client/BadgeSettingsCard.js +73 -0
  10. package/lib/types/client/BadgeSettingsCard.js.map +1 -0
  11. package/lib/types/client/badge-field.d.ts +44 -0
  12. package/lib/types/client/badge-field.d.ts.map +1 -0
  13. package/lib/types/client/badge-field.js +77 -0
  14. package/lib/types/client/badge-field.js.map +1 -0
  15. package/lib/types/client/badge-labels.d.ts +92 -0
  16. package/lib/types/client/badge-labels.d.ts.map +1 -0
  17. package/lib/types/client/badge-labels.js +150 -0
  18. package/lib/types/client/badge-labels.js.map +1 -0
  19. package/lib/types/client/badge-settings.d.ts +31 -3
  20. package/lib/types/client/badge-settings.d.ts.map +1 -1
  21. package/lib/types/client/badge-settings.js +50 -6
  22. package/lib/types/client/badge-settings.js.map +1 -1
  23. package/lib/types/client/facet-store.d.ts +46 -0
  24. package/lib/types/client/facet-store.d.ts.map +1 -0
  25. package/lib/types/client/facet-store.js +123 -0
  26. package/lib/types/client/facet-store.js.map +1 -0
  27. package/lib/types/client/facet-visibility.d.ts +17 -0
  28. package/lib/types/client/facet-visibility.d.ts.map +1 -0
  29. package/lib/types/client/facet-visibility.js +18 -0
  30. package/lib/types/client/facet-visibility.js.map +1 -0
  31. package/lib/types/client/facets.d.ts +265 -0
  32. package/lib/types/client/facets.d.ts.map +1 -0
  33. package/lib/types/client/facets.js +209 -0
  34. package/lib/types/client/facets.js.map +1 -0
  35. package/lib/types/client/group-status.d.ts +97 -45
  36. package/lib/types/client/group-status.d.ts.map +1 -1
  37. package/lib/types/client/group-status.js +148 -85
  38. package/lib/types/client/group-status.js.map +1 -1
  39. package/lib/types/client/index.d.ts +25 -0
  40. package/lib/types/client/index.d.ts.map +1 -1
  41. package/lib/types/client/index.js +59 -1
  42. package/lib/types/client/index.js.map +1 -1
  43. package/lib/types/client/legacy/bridge.d.ts +30 -0
  44. package/lib/types/client/legacy/bridge.d.ts.map +1 -0
  45. package/lib/types/client/legacy/bridge.js +58 -0
  46. package/lib/types/client/legacy/bridge.js.map +1 -0
  47. package/lib/types/client/legacy/register-legacy-facets.d.ts +14 -0
  48. package/lib/types/client/legacy/register-legacy-facets.d.ts.map +1 -0
  49. package/lib/types/client/legacy/register-legacy-facets.js +77 -0
  50. package/lib/types/client/legacy/register-legacy-facets.js.map +1 -0
  51. package/lib/types/client/legacy/schedule.d.ts +49 -0
  52. package/lib/types/client/legacy/schedule.d.ts.map +1 -0
  53. package/lib/types/client/legacy/schedule.js +73 -0
  54. package/lib/types/client/legacy/schedule.js.map +1 -0
  55. package/lib/types/client/legacy/store-source.d.ts +78 -0
  56. package/lib/types/client/legacy/store-source.d.ts.map +1 -0
  57. package/lib/types/client/legacy/store-source.js +82 -0
  58. package/lib/types/client/legacy/store-source.js.map +1 -0
  59. package/lib/types/client/legacy/waiting-review.d.ts +85 -0
  60. package/lib/types/client/legacy/waiting-review.d.ts.map +1 -0
  61. package/lib/types/client/legacy/waiting-review.js +179 -0
  62. package/lib/types/client/legacy/waiting-review.js.map +1 -0
  63. package/lib/types/client/locales.d.ts +46 -4
  64. package/lib/types/client/locales.d.ts.map +1 -1
  65. package/lib/types/client/locales.js +46 -4
  66. package/lib/types/client/locales.js.map +1 -1
  67. package/lib/types/client/rows/GroupBadge.d.ts +19 -25
  68. package/lib/types/client/rows/GroupBadge.d.ts.map +1 -1
  69. package/lib/types/client/rows/GroupBadge.js +45 -106
  70. package/lib/types/client/rows/GroupBadge.js.map +1 -1
  71. package/lib/types/client/rows/Rows.d.ts +7 -3
  72. package/lib/types/client/rows/Rows.d.ts.map +1 -1
  73. package/lib/types/client/rows/Rows.js +6 -6
  74. package/lib/types/client/rows/Rows.js.map +1 -1
  75. package/lib/types/client/rows/WorkspaceBrowser.d.ts.map +1 -1
  76. package/lib/types/client/rows/WorkspaceBrowser.js +21 -21
  77. package/lib/types/client/rows/WorkspaceBrowser.js.map +1 -1
  78. package/lib/types/client/tree.d.ts +2 -5
  79. package/lib/types/client/tree.d.ts.map +1 -1
  80. package/lib/types/client/tree.js +0 -5
  81. package/lib/types/client/tree.js.map +1 -1
  82. package/lib/types/index.d.ts +31 -1
  83. package/lib/types/index.d.ts.map +1 -1
  84. package/lib/types/index.js +13 -1
  85. package/lib/types/index.js.map +1 -1
  86. package/package.json +1 -5
@@ -1,34 +1,24 @@
1
+ import { defaultMergeFold } from "./facets.js";
2
+ /** 空折果表:让哨兵的引用跨渲染稳定。 */
3
+ const EMPTY_FACETS = new Map();
1
4
  /**
2
5
  * Zero-valued sentinel for {@link GroupLiveStatus}.
3
6
  *
4
- * Used when a group is expanded (badge is hidden, so aggregation is wasted
5
- * work) or when no cross-plugin data is available. Kept as a frozen constant
6
- * so the reference is stable across renders — `Object.is` comparisons in
7
- * React selectors never trigger spurious re-renders on it.
7
+ * Used when a group has nothing to report. Kept as a frozen constant so the
8
+ * reference is stable across renders — `Object.is` comparisons in React selectors
9
+ * never trigger spurious re-renders on it.
8
10
  */
9
11
  export const EMPTY_LIVE_STATUS = Object.freeze({
10
12
  running: 0, approval: 0, planReview: 0, question: 0, done: 0, subagents: 0,
11
- scheduledSessions: 0, scheduledCount: 0, scheduleState: undefined,
12
- waitingReviewCount: 0, waitingReviewState: undefined,
13
+ facets: EMPTY_FACETS,
13
14
  });
14
15
  /**
15
- * Merge two {@link GroupLiveStatus} objects by summing counters and taking the
16
- * highest-priority state (overdue > urgent > scheduled for schedule; overdue > waiting
17
- * for waiting-review).
16
+ * 合并两份分组折果:本插件自己的计数相加,外部状态来源**按 facet 各自合并**。
18
17
  *
19
- * Used for multi-level aggregation: when a parent group is collapsed, its badge
20
- * must reflect all descendant sessions, not just direct members.
18
+ * 用于多层聚合:折叠的父文件夹要覆盖整棵子树,而子树里每一层都已各自折过一遍。
19
+ * `FacetFold.data` 怎么合归该 facet 自己决定,本模块从不解释。
21
20
  */
22
21
  export function mergeLiveStatus(a, b) {
23
- // Schedule state: overdue (3) > urgent (2) > scheduled (1) > undefined (0)
24
- const priorityOf = (s) => s === 'overdue' ? 3 : s === 'urgent' ? 2 : s === 'scheduled' ? 1 : 0;
25
- const schedulePriorityA = priorityOf(a.scheduleState);
26
- const schedulePriorityB = priorityOf(b.scheduleState);
27
- const scheduleState = schedulePriorityA >= schedulePriorityB ? a.scheduleState : b.scheduleState;
28
- // Waiting-review state: overdue > waiting > undefined
29
- const waitingPriorityA = a.waitingReviewState === 'overdue' ? 2 : a.waitingReviewState === 'waiting' ? 1 : 0;
30
- const waitingPriorityB = b.waitingReviewState === 'overdue' ? 2 : b.waitingReviewState === 'waiting' ? 1 : 0;
31
- const waitingReviewState = waitingPriorityA >= waitingPriorityB ? a.waitingReviewState : b.waitingReviewState;
32
22
  return {
33
23
  running: a.running + b.running,
34
24
  approval: a.approval + b.approval,
@@ -36,24 +26,25 @@ export function mergeLiveStatus(a, b) {
36
26
  question: a.question + b.question,
37
27
  done: a.done + b.done,
38
28
  subagents: a.subagents + b.subagents,
39
- scheduledSessions: a.scheduledSessions + b.scheduledSessions,
40
- scheduledCount: a.scheduledCount + b.scheduledCount,
41
- scheduleState,
42
- waitingReviewCount: a.waitingReviewCount + b.waitingReviewCount,
43
- waitingReviewState,
29
+ facets: mergeFacets(a.facets, b.facets),
44
30
  };
45
31
  }
46
- // ── Helpers ──
47
- /**
48
- * Strip the `session-` / `webhook-` prefix from a Session id.
49
- *
50
- * dsh-gitea-dispatch publishes its waiting map keyed by the host SessionId, but
51
- * its HTTP endpoints key by this normalized form. Accepting both here keeps the
52
- * badge working across that publisher's conventions without knowing which is in
53
- * play.
54
- */
55
- function stripSessionPrefix(id) {
56
- return id.replace(/^(?:session|webhook)-/, '');
32
+ /** 按 facet id 合并两侧折果;只有一侧有的来源原样带过。 */
33
+ function mergeFacets(a, b) {
34
+ if (a.size === 0)
35
+ return b;
36
+ if (b.size === 0)
37
+ return a;
38
+ const merged = new Map(a);
39
+ for (const [id, entry] of b) {
40
+ const own = merged.get(id);
41
+ // 合并规则由该来源自己声明;缺省只加数量、取更紧急的色档、脉冲取或。
42
+ // 合并后仍沿用先登记那一份的 facet 引用:两侧本就是同一个来源。
43
+ merged.set(id, own === undefined
44
+ ? entry
45
+ : { facet: own.facet, fold: own.facet.merge?.(own.fold, entry.fold) ?? defaultMergeFold(own.fold, entry.fold) });
46
+ }
47
+ return merged;
57
48
  }
58
49
  // ── Main computation ──
59
50
  /**
@@ -61,84 +52,156 @@ function stripSessionPrefix(id) {
61
52
  * hidden live sessions. Mirrors the session-row status priority (pending
62
53
  * outranks running outranks completed) at the counting level; labels resolve with
63
54
  * locale at render time.
55
+ *
64
56
  * @param nodes - member rows of the group.
65
- * @param sessionIds - the same members' Session ids (schedule and waiting facts are keyed by id).
66
- * @param waitingReviewSummary - dsh-gitea-dispatch waiting map, when that plugin is loaded.
67
- * @param scheduleSummary - dsh-later schedule map, when that plugin is loaded.
57
+ * @param sessionIds - the same members' Session ids (facets address their own data by id).
58
+ * @param facets - the registered status sources to fold over this group.
59
+ * @param now - one clock reading for the whole pass, so sibling facets cannot disagree
60
+ * about which deadlines are still ahead.
68
61
  */
69
- export function summarizeGroupStatus(nodes, sessionIds, waitingReviewSummary, scheduleSummary) {
62
+ export function summarizeGroupStatus(nodes, sessionIds, facets = [], now = Date.now()) {
70
63
  let running = 0;
71
64
  let approval = 0;
72
65
  let planReview = 0;
73
66
  let question = 0;
74
67
  let done = 0;
75
68
  let subagents = 0;
69
+ // #25②:这一段曾与 `rows/Rows.tsx` 的 `sessionStatuses()` 各写一份优先级,两处结果不同
70
+ // (pending 会话漏算子智能体;未运行但已完成 + 有运行中子智能体时两处判断相反)。计数
71
+ // 判据仍在本模块(徽标只需要五个数字),但**语义以行内为准**:行内 pending 会同时给出
72
+ // subagents,未运行且有 subagents 时不承认 completed。下面的分支刻意照抄那两条规则,
73
+ // 不是另立一套「徽标自己的优先级」。
76
74
  for (const n of nodes) {
77
75
  if (n.blank || n.archived)
78
76
  continue;
77
+ const hasSubagents = n.runningSubagentCount > 0;
78
+ // 行内:pending 与 subagents 可并存(Rows.tsx `[pending, subagents]`),故不 `continue`。
79
79
  if (n.pendingInteraction === 'approval') {
80
80
  approval += 1;
81
+ subagents += n.runningSubagentCount;
81
82
  continue;
82
83
  }
83
84
  if (n.pendingInteraction === 'plan-review') {
84
85
  planReview += 1;
86
+ subagents += n.runningSubagentCount;
85
87
  continue;
86
88
  }
87
89
  if (n.pendingInteraction === 'question') {
88
90
  question += 1;
91
+ subagents += n.runningSubagentCount;
89
92
  continue;
90
93
  }
91
- if (n.running)
94
+ if (n.running) {
92
95
  running += 1;
93
- else if (n.completed)
96
+ subagents += n.runningSubagentCount;
97
+ continue;
98
+ }
99
+ // 行内:subagents 优先于 completed(`if (subagents !== undefined) return [subagents]`)。
100
+ if (hasSubagents) {
101
+ subagents += n.runningSubagentCount;
102
+ continue;
103
+ }
104
+ if (n.completed)
94
105
  done += 1;
95
- subagents += n.runningSubagentCount;
96
106
  }
97
- // Aggregate schedule summary from dsh-later
98
- let scheduledSessions = 0;
99
- let scheduledCount = 0;
100
- let scheduleState = undefined;
101
- if (scheduleSummary && sessionIds.length > 0) {
102
- let totalSessions = 0;
103
- let totalCount = 0;
104
- let highestPriority = 0; // 0=none, 1=scheduled, 2=urgent, 3=overdue
105
- for (const id of sessionIds) {
106
- const entry = scheduleSummary.get(id);
107
- if (entry) {
108
- totalSessions += 1;
109
- totalCount += entry.count;
110
- const priority = entry.state === 'overdue' ? 3 : entry.state === 'urgent' ? 2 : 1;
111
- if (priority > highestPriority)
112
- highestPriority = priority;
113
- }
107
+ // 外部来源逐个折。一个来源坏了不该带塌整只徽标:快照读失败按「此刻没有数据」处理,
108
+ // 折叠抛错则跳过该来源——两者都不往渲染管线里扩散。
109
+ const folded = new Map();
110
+ for (const { facet } of facets) {
111
+ let snapshot;
112
+ try {
113
+ snapshot = facet.getSnapshot();
114
114
  }
115
- scheduledSessions = totalSessions;
116
- scheduledCount = totalCount;
117
- scheduleState = highestPriority === 3 ? 'overdue' : highestPriority === 2 ? 'urgent' : highestPriority === 1 ? 'scheduled' : undefined;
118
- }
119
- // Aggregate waiting-review summary from dsh-gitea-dispatch (its #16).
120
- //
121
- // Counts **members**, not PRs: one session waits on exactly one PR, and the
122
- // badge's number must mean "how many sessions in this folder need attention".
123
- // `overdue` outranks `waiting` for the dot color, mirroring the schedule rule.
124
- let waitingReviewCount = 0;
125
- let waitingReviewState = undefined;
126
- if (waitingReviewSummary && sessionIds.length > 0) {
127
- for (const id of sessionIds) {
128
- const entry = waitingReviewSummary.get(id) ?? waitingReviewSummary.get(stripSessionPrefix(id));
129
- if (entry === undefined)
130
- continue;
131
- waitingReviewCount += 1;
132
- if (entry.state === 'overdue')
133
- waitingReviewState = 'overdue';
134
- else if (waitingReviewState === undefined)
135
- waitingReviewState = 'waiting';
115
+ catch {
116
+ snapshot = undefined;
117
+ }
118
+ try {
119
+ const result = facet.fold(snapshot, sessionIds, now);
120
+ // `count <= 0` 的来源不进表:数字、图标、文案、显隐判定都当它不存在。
121
+ if (result !== undefined && result.count > 0)
122
+ folded.set(facet.id, { facet, fold: result });
123
+ }
124
+ catch {
125
+ /* 同上:这个来源此刻不参与徽标 */
136
126
  }
137
127
  }
138
- return {
139
- running, approval, planReview, question, done, subagents,
140
- scheduledSessions, scheduledCount, scheduleState,
141
- waitingReviewCount, waitingReviewState,
128
+ return { running, approval, planReview, question, done, subagents, facets: folded };
129
+ }
130
+ /**
131
+ * Measure each group's own members, as the input to {@link aggregateGroupStatuses}.
132
+ *
133
+ * Every group is measured, expanded ones included. A folder row shows no badge while
134
+ * it is expanded, but its sessions still need attention and a collapsed ancestor must
135
+ * keep counting them — so expansion is a rendering fact, never an input to the
136
+ * aggregation. Short-circuiting expanded groups to `EMPTY_LIVE_STATUS` (the shape this
137
+ * had before the tree-wide aggregator existed, harmless while nothing aggregated) makes
138
+ * every collapsed parent undercount by the size of its expanded descendants.
139
+ *
140
+ * @param groups - derived groups, each with its member rows already populated.
141
+ * @param facets - registered sources, already filtered by the visibility settings.
142
+ * @param now - one clock reading shared by every group in the pass.
143
+ */
144
+ export function directStatusesForGroups(groups, facets = [], now = Date.now()) {
145
+ const map = new Map();
146
+ for (const group of groups) {
147
+ map.set(group.key, summarizeGroupStatus(group.sessions, group.sessions.map(s => s.id), facets, now));
148
+ }
149
+ return map;
150
+ }
151
+ /**
152
+ * Fold every group's DIRECT status up the workspace tree, so a collapsed folder
153
+ * counts every descendant session. A group's own row shows no badge while it is
154
+ * expanded, but its sessions still need attention and its collapsed ancestor must
155
+ * keep counting them — so the walk never depends on a group's expanded state.
156
+ *
157
+ * @param direct - each group's own-member status, keyed by group key.
158
+ * @param childrenByParent - the rendered tree: parent key (`undefined` = roots) → children.
159
+ * @returns aggregated status per group key: own members plus the whole subtree.
160
+ */
161
+ export function aggregateGroupStatuses(direct, childrenByParent) {
162
+ const aggregated = new Map();
163
+ // Parentage comes from path-prefix matching, so a self- or mutual-parent edge is
164
+ // representable; without this guard the fold would recurse forever and hang the sidebar.
165
+ const visiting = new Set();
166
+ const fold = (key) => {
167
+ const cached = aggregated.get(key);
168
+ if (cached !== undefined)
169
+ return cached;
170
+ if (visiting.has(key))
171
+ return direct.get(key) ?? EMPTY_LIVE_STATUS;
172
+ visiting.add(key);
173
+ let total = direct.get(key) ?? EMPTY_LIVE_STATUS;
174
+ for (const child of childrenByParent.get(key) ?? []) {
175
+ total = mergeLiveStatus(total, fold(child.key));
176
+ }
177
+ visiting.delete(key);
178
+ aggregated.set(key, total);
179
+ return total;
142
180
  };
181
+ // Every listed child is folded, not just the roots: an unreachable group would
182
+ // otherwise be missing from the map and lose its badge.
183
+ for (const children of childrenByParent.values()) {
184
+ for (const child of children)
185
+ fold(child.key);
186
+ }
187
+ return aggregated;
188
+ }
189
+ /**
190
+ * Attach each group's subtree-wide status, in derivation order. This is the producer
191
+ * the sidebar renders from.
192
+ *
193
+ * Expanded groups carry their status too: their own row draws no badge (a decision
194
+ * inside `groupLiveBadge`), but a collapsed ancestor still has to count them, so
195
+ * expansion never suppresses the measurement.
196
+ *
197
+ * @param groups - derived rows, in the order they render.
198
+ * @param direct - each group's own-member status, from {@link directStatusesForGroups}.
199
+ * @param childrenByParent - the rendered tree: parent key (`undefined` = roots) → children.
200
+ */
201
+ export function withAggregatedStatus(groups, direct, childrenByParent) {
202
+ const aggregated = aggregateGroupStatuses(direct, childrenByParent);
203
+ // A group missing from the fold has neither measured members nor listed children,
204
+ // so it is idle rather than unknown.
205
+ return groups.map(group => ({ ...group, liveStatus: aggregated.get(group.key) ?? EMPTY_LIVE_STATUS }));
143
206
  }
144
207
  //# sourceMappingURL=group-status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"group-status.js","sourceRoot":"","sources":["../../../src/client/group-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"group-status.js","sourceRoot":"","sources":["../../../src/client/group-status.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,31 @@ declare module '@deepseek-ai/dsh-api-session-controller/client' {
31
31
  * provides a waitable service. apply therefore depends on each slot
32
32
  * declaration through `slots.inject()` instead of assuming order.
33
33
  */
34
+ /**
35
+ * ── 跨插件公共 API:分组状态 facet 协议 ─────────────────────────────
36
+ *
37
+ * 任何插件想让自己的状态进**折叠分组**的徽标,就 `require('dsh-group-status/client')`
38
+ * 拿这三个符号注册一个 facet;本插件不认识它,也不为它改代码:
39
+ *
40
+ * ```ts
41
+ * const gs = require('dsh-group-status/client')
42
+ * const unregister = gs?.registerGroupStatusFacet?.({
43
+ * protocol: gs.GROUP_STATUS_FACET_PROTOCOL_VERSION,
44
+ * id: 'my-plugin.review', // '<包名>.<状态名>',全局唯一
45
+ * subscribe: store.subscribe, // 外部存储面,不要求 React hook
46
+ * getSnapshot: store.getSnapshot,
47
+ * fold: (snapshot, sessionIds, now) => ({ count, tone, pulse, data }),
48
+ * merge: (a, b) => ({ ... }), // 多层文件夹怎么合并你的折果
49
+ * label: (fold, { now }) => '等待评审(剩 3分钟) · #15',
50
+ * renderIcon: (fold) => h('svg', …), // 图标归你,本插件只负责摆放
51
+ * })
52
+ * ctx.effect(() => () => unregister?.(), 'my-plugin: group-status facet')
53
+ * ```
54
+ *
55
+ * 完整契约、版本规则与为什么是这个方向见 `docs/facet-protocol.md`。
56
+ */
57
+ export { GROUP_STATUS_FACET_PROTOCOL_VERSION, FACET_TONE_RANK, registerGroupStatusFacet, registry as groupStatusFacetRegistry, } from './facets.ts';
58
+ export type { AnyFacet, AnyFacetFold, FacetFold, FacetOrigin, FacetRenderContext, FacetRegistration, FacetRejection, FacetTone, GroupStatusFacet, Unregister, } from './facets.ts';
34
59
  export declare const inject: string[];
35
60
  /**
36
61
  * Register the browser and picker once their slot declarations are on the
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,KAAK,EAC2C,iBAAiB,EACvE,MAAM,kDAAkD,CAAA;AAEzD,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAqB5F,OAAO,EAAuC,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAYrG,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAExD,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,YAAY,EACV,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,wBAAwB,EAC/F,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,wBAAwB,EAC9G,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EAAE,oBAAoB,GAC9C,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,mBAAmB;QAC3B,iEAAiE;QACjE,aAAa,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;QACtD,8EAA8E;QAC9E,gBAAgB,EAAE,oBAAoB,CAAC,qBAAqB,CAAC,CAAA;KAC9D;IAED,UAAU,kBAAkB;QAC1B,+DAA+D;QAC/D,SAAS,EAAE,YAAY,CAAA;KACxB;CACF;AAED,OAAO,QAAQ,gDAAgD,CAAC;IAC9D,UAAU,yBAAyB;QACjC,kBAAkB,EAAE,OAAO,CAAA;KAC5B;CACF;AAkCD;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,UAElB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA0QxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,KAAK,EAC2C,iBAAiB,EACvE,MAAM,kDAAkD,CAAA;AAEzD,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAqB5F,OAAO,EAAuC,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAarG,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAExD,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,YAAY,EACV,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,wBAAwB,EAC/F,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,wBAAwB,EAC9G,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EAAE,oBAAoB,GAC9C,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,mBAAmB;QAC3B,iEAAiE;QACjE,aAAa,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAA;QACtD,8EAA8E;QAC9E,gBAAgB,EAAE,oBAAoB,CAAC,qBAAqB,CAAC,CAAA;KAC9D;IAED,UAAU,kBAAkB;QAC1B,+DAA+D;QAC/D,SAAS,EAAE,YAAY,CAAA;KACxB;CACF;AAED,OAAO,QAAQ,gDAAgD,CAAC;IAC9D,UAAU,yBAAyB;QACjC,kBAAkB,EAAE,OAAO,CAAA;KAC5B;CACF;AAkCD;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EACL,mCAAmC,EAAE,eAAe,EAAE,wBAAwB,EAC9E,QAAQ,IAAI,wBAAwB,GACrC,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAClE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,GAC3E,MAAM,aAAa,CAAA;AAEpB,eAAO,MAAM,MAAM,UAElB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CA8QxC"}
@@ -2,6 +2,8 @@ import { createSnapshotStore } from '@deepseek-ai/dsh-client-store';
2
2
  import { menuOpenStateFactory, } from "./contract/slots.js";
3
3
  import { createWorkspaceShortcutControls, installWorkspaceShortcuts } from "./shortcuts.js";
4
4
  import { createBadgeSettingsSource, ENTRY_ID } from "./badge-settings.js";
5
+ import { disposeFacetStore } from "./facet-store.js";
6
+ import { BadgeSettingsCard } from "./BadgeSettingsCard.js";
5
7
  import { UiWorkspaceService } from "./navigation.js";
6
8
  import { createWorkspaceViewStore } from "./stores.js";
7
9
  import { WorkspaceBrowser } from "./rows/WorkspaceBrowser.js";
@@ -15,6 +17,13 @@ import { WorkspacePicker } from "./WorkspacePicker.js";
15
17
  import { en, zh } from "./locales.js";
16
18
  /** Dictionary namespace owned by this plugin. */
17
19
  const NS = 'workspace';
20
+ /** 插件详情页配置表单的槽位名(按包名寻址;契约见 `plugin-manager-slot.d.ts`)。 */
21
+ const CONFIG_CARD_SLOT = 'plugins.bundle.config';
22
+ /**
23
+ * 插件管理器分发 `plugins.bundle.config` 用的键 = **包名**(不是条目 id)。
24
+ * 本包的补丁把行 id 也写成同名,但两者是不同概念,别改成 ENTRY_ID 的引用。
25
+ */
26
+ const CONFIG_CARD_KEY = 'dsh-group-status';
18
27
  /**
19
28
  * Required services (cordis fiber inject). The target slots are declared by
20
29
  * the ui-sidebar / ui-conversation applies, whose activation order relative
@@ -23,6 +32,30 @@ const NS = 'workspace';
23
32
  * provides a waitable service. apply therefore depends on each slot
24
33
  * declaration through `slots.inject()` instead of assuming order.
25
34
  */
35
+ /**
36
+ * ── 跨插件公共 API:分组状态 facet 协议 ─────────────────────────────
37
+ *
38
+ * 任何插件想让自己的状态进**折叠分组**的徽标,就 `require('dsh-group-status/client')`
39
+ * 拿这三个符号注册一个 facet;本插件不认识它,也不为它改代码:
40
+ *
41
+ * ```ts
42
+ * const gs = require('dsh-group-status/client')
43
+ * const unregister = gs?.registerGroupStatusFacet?.({
44
+ * protocol: gs.GROUP_STATUS_FACET_PROTOCOL_VERSION,
45
+ * id: 'my-plugin.review', // '<包名>.<状态名>',全局唯一
46
+ * subscribe: store.subscribe, // 外部存储面,不要求 React hook
47
+ * getSnapshot: store.getSnapshot,
48
+ * fold: (snapshot, sessionIds, now) => ({ count, tone, pulse, data }),
49
+ * merge: (a, b) => ({ ... }), // 多层文件夹怎么合并你的折果
50
+ * label: (fold, { now }) => '等待评审(剩 3分钟) · #15',
51
+ * renderIcon: (fold) => h('svg', …), // 图标归你,本插件只负责摆放
52
+ * })
53
+ * ctx.effect(() => () => unregister?.(), 'my-plugin: group-status facet')
54
+ * ```
55
+ *
56
+ * 完整契约、版本规则与为什么是这个方向见 `docs/facet-protocol.md`。
57
+ */
58
+ export { GROUP_STATUS_FACET_PROTOCOL_VERSION, FACET_TONE_RANK, registerGroupStatusFacet, registry as groupStatusFacetRegistry, } from "./facets.js";
26
59
  export const inject = [
27
60
  'slots', 'sessions', 'workspaces', 'locale', 'remote', 'remote.directoryPicker', 'layout', 'shortcuts',
28
61
  ];
@@ -47,6 +80,9 @@ export function apply(ctx) {
47
80
  const uiWorkspace = new UiWorkspaceService(ctx, ctx.remote.directoryPicker, workspaces, sessions, viewInstance.actions, notify);
48
81
  ctx.slots.provideRoot({ hooks: { workspaces: workspaces.list } });
49
82
  ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'ui-workspace: dictionaries');
83
+ // 外部状态来源只有一张登记面(`facets.ts`):本插件不认识任何具体插件,也不代任何
84
+ // 插件登记。释放单例存储即可,来源自己的 facet 由它们的插件生命周期负责注销。
85
+ ctx.effect(() => () => disposeFacetStore(), 'ui-workspace: status facets');
50
86
  const shortcutControls = createWorkspaceShortcutControls();
51
87
  // 折叠徽标的显示偏好(`showCompletedInBadge`)。
52
88
  //
@@ -63,11 +99,33 @@ export function apply(ctx) {
63
99
  // namespace——宿主 `describe()` 的 `ns` 即条目 id。
64
100
  ctx.inject(['configForms'], (configCtx) => {
65
101
  const forms = configCtx.get('configForms');
66
- const scope = forms !== undefined && typeof forms.get === 'function' ? forms.get(ENTRY_ID) : undefined;
102
+ if (forms === undefined || typeof forms.get !== 'function')
103
+ return;
104
+ // 同一份官方设置表单既喂折叠徽标(只读快照),也喂插件页卡片(读写)。
105
+ const scope = forms.get(ENTRY_ID);
67
106
  if (scope === undefined)
68
107
  return;
69
108
  badgeSettings.publish(scope.getSnapshot());
70
109
  configCtx.effect(() => scope.subscribe(() => { badgeSettings.publish(scope.getSnapshot()); }), 'dsh-group-status: badge settings');
110
+ // 插件详情页(插件 → dsh-group-status)的配置表单。宿主把 `Config` 投影成
111
+ // 上面这份表单,但页面要插件自己注册卡片才画得出来——没有这段,设置项在
112
+ // GUI 里不存在(README 的「设置项」一节描述的就是这张卡片)。
113
+ //
114
+ // 键取**包名**(插件管理器按包名分发该槽位),寻址的表单仍是上面同一份 scope,
115
+ // 于是卡片与折叠徽标永远读同一个值。
116
+ //
117
+ // `whileServed` 盯住条目命名空间:宿主不再服务该条目时连卡片一起注销,避免
118
+ // 留下一张点开即空的表单。`bind` 是必需的:它是类原型方法,内部读写
119
+ // `this.mirror`,取下来裸调用会丢接收者。
120
+ const whileServed = forms.whileServed?.bind(forms);
121
+ if (whileServed === undefined)
122
+ return;
123
+ configCtx.effect(() => whileServed([ENTRY_ID], () => ctx.slots.inject(CONFIG_CARD_SLOT, () => ctx.slots.register({
124
+ name: CONFIG_CARD_SLOT,
125
+ key: CONFIG_CARD_KEY,
126
+ locale: NS,
127
+ inject: () => ({ scope }),
128
+ }, BadgeSettingsCard))), 'dsh-group-status: plugins-page card');
71
129
  });
72
130
  const searchSessions = async (query, signal) => {
73
131
  const result = await sessions.search(query, signal);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 过渡期的跨插件桥:把 dsh-later / dsh-gitea-dispatch 的摘要面接到 facet 登记面上。
3
+ *
4
+ * ⚠️ 本目录整体是**临时代管**。两个提供方按 `../facets.ts` 的协议自己注册之后
5
+ * (对应它们各自的 issue),`legacy/` 整个目录与 `package.json` 里的
6
+ * `dsh.client.external` 两条声明一并删除,本插件不再认识任何具体状态源。
7
+ *
8
+ * ## 为什么在这里、又为什么要"登记表"
9
+ *
10
+ * 两家的 store 都在自己的 client `apply` 里创建,而**插件 apply 的先后宿主不保证**:
11
+ * 本插件可能在对方 store 就绪之前就开始渲染。所以桥接层不能一次性抓 store,必须
12
+ * 订阅对方的"store 登记变化",并把 store 的迟到本身当作一次快照变化通知出去
13
+ * (`subscribe` 里同时挂两层)。这与 `cross-plugin-summary.ts` 里 `createSummaryRegistry`
14
+ * 解决的是一模一样的问题,只是这次藏在桥接层里,不污染协议。
15
+ *
16
+ * ## 为什么用 subscribe/getSnapshot 而不是调对方的 hook
17
+ *
18
+ * 见 `../facets.ts` 文件头:hook 数量必须逐次渲染恒定,而 facet 运行时可增删。桥接层
19
+ * 只要把对方的 store 面交出去,聚合侧就完全不需要知道背后有几个来源。
20
+ *
21
+ * @module dsh-group-status/client/legacy/bridge
22
+ */
23
+ import { type FacetRegistry, type Unregister } from '../facets.ts';
24
+ /**
25
+ * 安装过渡适配器。
26
+ *
27
+ * @param target - 登记面;缺省用生产单例,测试传入自建实例以隔离。
28
+ */
29
+ export declare function installLegacyBridges(target?: FacetRegistry): Unregister;
30
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../../src/client/legacy/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAsB5E;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,aAAwB,GAAG,UAAU,CAUjF"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * 过渡期的跨插件桥:把 dsh-later / dsh-gitea-dispatch 的摘要面接到 facet 登记面上。
3
+ *
4
+ * ⚠️ 本目录整体是**临时代管**。两个提供方按 `../facets.ts` 的协议自己注册之后
5
+ * (对应它们各自的 issue),`legacy/` 整个目录与 `package.json` 里的
6
+ * `dsh.client.external` 两条声明一并删除,本插件不再认识任何具体状态源。
7
+ *
8
+ * ## 为什么在这里、又为什么要"登记表"
9
+ *
10
+ * 两家的 store 都在自己的 client `apply` 里创建,而**插件 apply 的先后宿主不保证**:
11
+ * 本插件可能在对方 store 就绪之前就开始渲染。所以桥接层不能一次性抓 store,必须
12
+ * 订阅对方的"store 登记变化",并把 store 的迟到本身当作一次快照变化通知出去
13
+ * (`subscribe` 里同时挂两层)。这与 `cross-plugin-summary.ts` 里 `createSummaryRegistry`
14
+ * 解决的是一模一样的问题,只是这次藏在桥接层里,不污染协议。
15
+ *
16
+ * ## 为什么用 subscribe/getSnapshot 而不是调对方的 hook
17
+ *
18
+ * 见 `../facets.ts` 文件头:hook 数量必须逐次渲染恒定,而 facet 运行时可增删。桥接层
19
+ * 只要把对方的 store 面交出去,聚合侧就完全不需要知道背后有几个来源。
20
+ *
21
+ * @module dsh-group-status/client/legacy/bridge
22
+ */
23
+ import { registry } from "../facets.js";
24
+ import { assembleLegacySources } from "./store-source.js";
25
+ import { registerLegacyFacets } from "./register-legacy-facets.js";
26
+ /**
27
+ * 读一个 provider 的 client 模块表行。
28
+ *
29
+ * 用**注入的** `require`(闭包工厂的参数)而不是 `globalThis.require`:宿主没有全局
30
+ * require(实测 `typeof globalThis.require === 'undefined'`),走全局会静默拿到
31
+ * undefined,于是整个跨插件集成"看起来装着、其实一直没工作"。
32
+ * 提供方未安装 / 未启用时模块表里没有这一行,`require` 抛错 → 当作缺席。
33
+ */
34
+ function clientOf(specifier) {
35
+ try {
36
+ return require(specifier);
37
+ }
38
+ catch {
39
+ return undefined;
40
+ }
41
+ }
42
+ /**
43
+ * 安装过渡适配器。
44
+ *
45
+ * @param target - 登记面;缺省用生产单例,测试传入自建实例以隔离。
46
+ */
47
+ export function installLegacyBridges(target = registry) {
48
+ const later = clientOf('dsh-later/client');
49
+ const dispatch = clientOf('dsh-gitea-dispatch/client');
50
+ // 缺席就省略键(exactOptionalPropertyTypes 下 undefined 不是"没有"的合法写法)。
51
+ const clients = {
52
+ ...(later === undefined ? {} : { later }),
53
+ ...(dispatch === undefined ? {} : { dispatch }),
54
+ };
55
+ const sources = assembleLegacySources(clients);
56
+ return registerLegacyFacets(sources, target);
57
+ }
58
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../../src/client/legacy/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,QAAQ,EAAuC,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,qBAAqB,EAA8B,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA8B,CAAA;AAInE;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAI,SAAiB;IACpC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,SAAS,CAAkB,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAwB,QAAQ;IACnE,MAAM,KAAK,GAAG,QAAQ,CAAiC,kBAAkB,CAAC,CAAA;IAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAoC,2BAA2B,CAAC,CAAA;IACzF,8DAA8D;IAC9D,MAAM,OAAO,GAA0B;QACrC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;KAChD,CAAA;IACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC9C,OAAO,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAC9C,CAAC"}