dsh-group-status 0.2.2 → 0.4.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 (110) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.en.md +42 -24
  3. package/README.md +45 -25
  4. package/lib/client.js +1781 -483
  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/contract/slots.d.ts +39 -21
  24. package/lib/types/client/contract/slots.d.ts.map +1 -1
  25. package/lib/types/client/contract/slots.js.map +1 -1
  26. package/lib/types/client/contract/toast.d.ts +67 -0
  27. package/lib/types/client/contract/toast.d.ts.map +1 -0
  28. package/lib/types/client/contract/toast.js +2 -0
  29. package/lib/types/client/contract/toast.js.map +1 -0
  30. package/lib/types/client/facet-store.d.ts +46 -0
  31. package/lib/types/client/facet-store.d.ts.map +1 -0
  32. package/lib/types/client/facet-store.js +123 -0
  33. package/lib/types/client/facet-store.js.map +1 -0
  34. package/lib/types/client/facet-visibility.d.ts +17 -0
  35. package/lib/types/client/facet-visibility.d.ts.map +1 -0
  36. package/lib/types/client/facet-visibility.js +18 -0
  37. package/lib/types/client/facet-visibility.js.map +1 -0
  38. package/lib/types/client/facets.d.ts +265 -0
  39. package/lib/types/client/facets.d.ts.map +1 -0
  40. package/lib/types/client/facets.js +209 -0
  41. package/lib/types/client/facets.js.map +1 -0
  42. package/lib/types/client/group-status.d.ts +97 -45
  43. package/lib/types/client/group-status.d.ts.map +1 -1
  44. package/lib/types/client/group-status.js +148 -85
  45. package/lib/types/client/group-status.js.map +1 -1
  46. package/lib/types/client/index.d.ts +31 -3
  47. package/lib/types/client/index.d.ts.map +1 -1
  48. package/lib/types/client/index.js +107 -14
  49. package/lib/types/client/index.js.map +1 -1
  50. package/lib/types/client/locales.d.ts +60 -4
  51. package/lib/types/client/locales.d.ts.map +1 -1
  52. package/lib/types/client/locales.js +60 -4
  53. package/lib/types/client/locales.js.map +1 -1
  54. package/lib/types/client/navigation.d.ts +45 -12
  55. package/lib/types/client/navigation.d.ts.map +1 -1
  56. package/lib/types/client/navigation.js +102 -26
  57. package/lib/types/client/navigation.js.map +1 -1
  58. package/lib/types/client/rows/GroupBadge.d.ts +19 -25
  59. package/lib/types/client/rows/GroupBadge.d.ts.map +1 -1
  60. package/lib/types/client/rows/GroupBadge.js +45 -106
  61. package/lib/types/client/rows/GroupBadge.js.map +1 -1
  62. package/lib/types/client/rows/Rows.d.ts +7 -3
  63. package/lib/types/client/rows/Rows.d.ts.map +1 -1
  64. package/lib/types/client/rows/Rows.js +9 -9
  65. package/lib/types/client/rows/Rows.js.map +1 -1
  66. package/lib/types/client/rows/WorkspaceBrowser.d.ts +1 -1
  67. package/lib/types/client/rows/WorkspaceBrowser.d.ts.map +1 -1
  68. package/lib/types/client/rows/WorkspaceBrowser.js +75 -71
  69. package/lib/types/client/rows/WorkspaceBrowser.js.map +1 -1
  70. package/lib/types/client/session-actions/ArchiveSession.js +1 -1
  71. package/lib/types/client/session-actions/ArchiveSession.js.map +1 -1
  72. package/lib/types/client/session-actions/ForkSession.d.ts +5 -4
  73. package/lib/types/client/session-actions/ForkSession.d.ts.map +1 -1
  74. package/lib/types/client/session-actions/ForkSession.js +7 -4
  75. package/lib/types/client/session-actions/ForkSession.js.map +1 -1
  76. package/lib/types/client/session-actions/PinSession.js +1 -1
  77. package/lib/types/client/session-actions/PinSession.js.map +1 -1
  78. package/lib/types/client/session-actions/RowActionToast.d.ts +5 -8
  79. package/lib/types/client/session-actions/RowActionToast.d.ts.map +1 -1
  80. package/lib/types/client/session-actions/RowActionToast.js +10 -49
  81. package/lib/types/client/session-actions/RowActionToast.js.map +1 -1
  82. package/lib/types/client/session-actions/SessionId.d.ts +8 -0
  83. package/lib/types/client/session-actions/SessionId.d.ts.map +1 -0
  84. package/lib/types/client/session-actions/SessionId.js +16 -0
  85. package/lib/types/client/session-actions/SessionId.js.map +1 -0
  86. package/lib/types/client/session-watermarks.d.ts +30 -0
  87. package/lib/types/client/session-watermarks.d.ts.map +1 -0
  88. package/lib/types/client/session-watermarks.js +54 -0
  89. package/lib/types/client/session-watermarks.js.map +1 -0
  90. package/lib/types/client/shortcuts.d.ts +2 -7
  91. package/lib/types/client/shortcuts.d.ts.map +1 -1
  92. package/lib/types/client/shortcuts.js +7 -11
  93. package/lib/types/client/shortcuts.js.map +1 -1
  94. package/lib/types/client/toast/Toast.d.ts +41 -0
  95. package/lib/types/client/toast/Toast.d.ts.map +1 -0
  96. package/lib/types/client/toast/Toast.js +44 -0
  97. package/lib/types/client/toast/Toast.js.map +1 -0
  98. package/lib/types/client/toast/register.d.ts +11 -0
  99. package/lib/types/client/toast/register.d.ts.map +1 -0
  100. package/lib/types/client/toast/register.js +162 -0
  101. package/lib/types/client/toast/register.js.map +1 -0
  102. package/lib/types/client/tree.d.ts +2 -5
  103. package/lib/types/client/tree.d.ts.map +1 -1
  104. package/lib/types/client/tree.js +0 -5
  105. package/lib/types/client/tree.js.map +1 -1
  106. package/lib/types/index.d.ts +31 -1
  107. package/lib/types/index.d.ts.map +1 -1
  108. package/lib/types/index.js +13 -1
  109. package/lib/types/index.js.map +1 -1
  110. package/package.json +33 -34
@@ -3,9 +3,15 @@ import { Service, type Context } from '@deepseek-ai/cordis';
3
3
  import type { ClientRemote, DirectoryListing, RemoteFailure } from '@deepseek-ai/dsh-api-remotes/client';
4
4
  import type { ISessions, SessionTarget } from '@deepseek-ai/dsh-api-session-controller/client';
5
5
  import type { IWorkspaces, WorkspaceId } from '@deepseek-ai/dsh-api-workspace-controller/client';
6
+ import type { DraftInitializationOptions } from '@deepseek-ai/dsh-client-ui-conversation/client';
6
7
  import type { SessionId } from '@deepseek-ai/dsh-session/types';
7
8
  import type { RowToast } from './contract/slots.ts';
8
9
  import type { WorkspaceViewStoreActions } from './stores.ts';
10
+ /** Content preparation and Agent preset for the Session a Workspace flow opens. */
11
+ export interface StartSessionOptions extends DraftInitializationOptions {
12
+ /** Agent preset the Session runs; the Host default when omitted. */
13
+ readonly agentPreset?: string;
14
+ }
9
15
  /** Workspace archive and directory operations consumed by Client UI domains. */
10
16
  export interface UiWorkspace {
11
17
  /**
@@ -18,30 +24,37 @@ export interface UiWorkspace {
18
24
  * @param workspaceId - target Workspace.
19
25
  * @param beforeOpen - optional synchronous preparation for the selected Session,
20
26
  * skipped after supersession; a throw aborts the open and releases the retained reference.
27
+ * @param options - choices for the Session the connection creates or reuses.
21
28
  * @returns completion; a superseded request may create a Session but does not open it.
22
29
  * @throws on failure; a refused creation is also shown through the Workspace
23
30
  * notice unless a later navigation or disposal superseded the request.
24
31
  */
25
- openWorkspace(workspaceId: WorkspaceId, beforeOpen?: (sessionId: SessionId) => void): Promise<void>;
32
+ openWorkspace(workspaceId: WorkspaceId, beforeOpen?: (sessionId: SessionId) => void, options?: Pick<StartSessionOptions, 'agentPreset'>): Promise<void>;
26
33
  /**
27
34
  * Fork a Session without changing the current selection.
28
35
  * @param sessionId - source Session.
29
36
  * @param onCreated - observer before the optional child-title update.
37
+ * @param options - optional permission to start source migration; omission preserves the Host default.
30
38
  * @returns the child SessionId after creation and inherited-title increment.
31
39
  */
32
- forkSession(sessionId: SessionId, onCreated?: (childId: SessionId) => void): Promise<SessionId>;
40
+ forkSession(sessionId: SessionId, onCreated?: (childId: SessionId) => void, options?: Pick<Parameters<ISessions['fork']>[0], 'allowMigration'>): Promise<SessionId>;
33
41
  /**
34
- * Resolve the reusable or newly created blank Session for a Workspace.
42
+ * Resolve the Session for a new conversation in a Workspace: the Host reuses
43
+ * the first listed blank member while it is reusable and otherwise creates one,
44
+ * under the requested preset or the Host default.
35
45
  * @param workspaceId - target Workspace.
46
+ * @param options - choices for the created or reused Session.
36
47
  * @returns a Session already addressable through the Session Controller.
37
48
  */
38
- connectWorkspace(workspaceId: WorkspaceId): Promise<SessionId>;
49
+ connectWorkspace(workspaceId: WorkspaceId, options?: Pick<StartSessionOptions, 'agentPreset'>): Promise<SessionId>;
39
50
  /**
40
- * Start a New Session flow and navigate to its Session; a creation the Host
51
+ * Create a fresh Session, or reuse a blank when preparing an explicit draft. A creation the Host
41
52
  * refuses is shown through the Workspace notice and leaves the selection as it was.
42
53
  * @param workspaceId - explicit target; absent inherits the current or most recent Workspace.
54
+ * @param options - initial content and the reused blank's preset; existing text or attachments
55
+ * are preserved unless clearPreviousDraft is true.
43
56
  */
44
- startSession(workspaceId?: WorkspaceId): void;
57
+ startSession(workspaceId?: WorkspaceId, options?: StartSessionOptions): void;
45
58
  /**
46
59
  * Archive a Session and clear it when it is the current selection.
47
60
  * @param sessionId - Session to archive.
@@ -121,13 +134,33 @@ declare class UiWorkspaceService extends Service implements UiWorkspace {
121
134
  * @param notify - show one notice through the Workspace notice channel.
122
135
  */
123
136
  constructor(ctx: Context, directoryPicker: ClientRemote['directoryPicker'], workspaces: IWorkspaces, sessions: ISessions, view: Pick<WorkspaceViewStoreActions, 'pinSessionOrder'>, notify: (toast: RowToast) => void);
124
- connectWorkspace(workspaceId: WorkspaceId): Promise<SessionId>;
125
- private reuseOrCreateBlank;
126
- private reuseBlank;
137
+ connectWorkspace(workspaceId: WorkspaceId, options?: Pick<StartSessionOptions, 'agentPreset'>): Promise<SessionId>;
138
+ /**
139
+ * @param reuse - preset for the reused or created blank; absent creates a fresh Session.
140
+ */
141
+ private connectBlank;
142
+ private createInWorkspace;
143
+ /**
144
+ * Create through the Host. A named blank the Host declined may still read as
145
+ * blank from stale cached list metadata, which hides it from the Session tree;
146
+ * its projections are reloaded so the row reflects its log.
147
+ */
148
+ private createNamed;
149
+ /**
150
+ * Reopen a saved blank Session under the preset its log recorded, or under
151
+ * the Host default once that preset no longer activates. Listed values are
152
+ * cached hints that can lag the log after an unclean Host exit, so the
153
+ * Session's projections are reloaded before the preset is read; a Session
154
+ * that still awaits a format migration reloads only those cached hints.
155
+ */
156
+ private restoreBlank;
127
157
  openSession(target: SessionTarget): void;
128
- openWorkspace(workspaceId: WorkspaceId, beforeOpen?: (sessionId: SessionId) => void): Promise<void>;
129
- forkSession(sessionId: SessionId, onCreated?: (childId: SessionId) => void): Promise<SessionId>;
130
- startSession(workspaceId?: WorkspaceId): void;
158
+ openWorkspace(workspaceId: WorkspaceId, beforeOpen?: (sessionId: SessionId) => void, options?: Pick<StartSessionOptions, 'agentPreset'>): Promise<void>;
159
+ private openWorkspaceSession;
160
+ forkSession(sessionId: SessionId, onCreated?: (childId: SessionId) => void, options?: Pick<Parameters<ISessions['fork']>[0], 'allowMigration'>): Promise<SessionId>;
161
+ startSession(workspaceId?: WorkspaceId, options?: StartSessionOptions): void;
162
+ private prepareDraft;
163
+ private draftPreparationFailed;
131
164
  archiveSession(sessionId: SessionId, options?: {
132
165
  readonly stopActivity?: boolean;
133
166
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/client/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/client/navigation.ts"],"names":[],"mappings":"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"}
@@ -49,54 +49,97 @@ class UiWorkspaceService extends Service {
49
49
  };
50
50
  }, 'ui-workspace: Workspace navigation policy');
51
51
  }
52
- async connectWorkspace(workspaceId) {
52
+ connectWorkspace(workspaceId, options = {}) {
53
+ return this.connectBlank(workspaceId, options);
54
+ }
55
+ /**
56
+ * @param reuse - preset for the reused or created blank; absent creates a fresh Session.
57
+ */
58
+ async connectBlank(workspaceId, reuse) {
53
59
  const workspace = this.workspaces.list.getSnapshot().items
54
60
  .find(item => item.workspaceId === workspaceId);
55
61
  if (workspace === undefined) {
56
62
  throw new Error(`uiWorkspace.connectWorkspace: unknown workspace ${workspaceId}`);
57
63
  }
64
+ if (reuse === undefined)
65
+ return this.sessions.create({ workspaceId });
58
66
  const inflight = this.connecting.get(workspaceId);
59
- if (inflight !== undefined)
60
- return inflight;
61
- const attempt = this.reuseOrCreateBlank(workspace)
62
- .finally(() => { this.connecting.delete(workspaceId); });
63
- this.connecting.set(workspaceId, attempt);
67
+ if (inflight !== undefined && inflight.agentPreset === reuse.agentPreset)
68
+ return inflight.attempt;
69
+ const attempt = this.createInWorkspace(workspace, reuse).finally(() => {
70
+ if (this.connecting.get(workspaceId)?.attempt === attempt)
71
+ this.connecting.delete(workspaceId);
72
+ });
73
+ this.connecting.set(workspaceId, { agentPreset: reuse.agentPreset, attempt });
64
74
  return attempt;
65
75
  }
66
- reuseOrCreateBlank(workspace) {
76
+ createInWorkspace(workspace, options) {
67
77
  const archived = this.workspaces.list.getSnapshot().archivedSessionIds;
68
78
  const sessions = this.sessions.list.getSnapshot();
69
- for (const id of sessions.ids) {
79
+ const blank = sessions.ids.find((id) => {
70
80
  const summary = sessions.byId[id];
71
- if (summary === undefined || !summary.blank || summary.cwd !== workspace.path
72
- || !workspace.sessionIds.includes(id) || archived.includes(id))
73
- continue;
74
- return this.reuseBlank(workspace.workspaceId, id);
81
+ return summary !== undefined && summary.blank && summary.cwd === workspace.path
82
+ && workspace.sessionIds.includes(id) && !archived.includes(id);
83
+ });
84
+ return this.createNamed({
85
+ workspaceId: workspace.workspaceId,
86
+ ...(blank === undefined ? {} : { sessionId: blank }),
87
+ ...(options.agentPreset === undefined ? {} : { agentPreset: options.agentPreset }),
88
+ });
89
+ }
90
+ /**
91
+ * Create through the Host. A named blank the Host declined may still read as
92
+ * blank from stale cached list metadata, which hides it from the Session tree;
93
+ * its projections are reloaded so the row reflects its log.
94
+ */
95
+ async createNamed(request) {
96
+ const sessionId = await this.sessions.create(request);
97
+ const named = request.sessionId;
98
+ if (named !== undefined && named !== sessionId) {
99
+ this.sessions.refreshProjections(named).catch((reason) => {
100
+ console.warn('declined blank Session projection reload failed:', reason);
101
+ });
75
102
  }
76
- return this.sessions.create({ workspaceId: workspace.workspaceId });
103
+ return sessionId;
77
104
  }
78
- async reuseBlank(workspaceId, sessionId) {
105
+ /**
106
+ * Reopen a saved blank Session under the preset its log recorded, or under
107
+ * the Host default once that preset no longer activates. Listed values are
108
+ * cached hints that can lag the log after an unclean Host exit, so the
109
+ * Session's projections are reloaded before the preset is read; a Session
110
+ * that still awaits a format migration reloads only those cached hints.
111
+ */
112
+ async restoreBlank(workspaceId, sessionId) {
113
+ await this.sessions.refreshProjections(sessionId);
114
+ const recorded = this.sessions.list.getSnapshot().byId[sessionId]?.projectionValues?.agentPreset;
115
+ const request = { workspaceId, sessionId };
116
+ if (typeof recorded !== 'string')
117
+ return this.createNamed(request);
79
118
  try {
80
- return await this.sessions.create({ workspaceId, sessionId });
119
+ return await this.createNamed({ ...request, agentPreset: recorded });
81
120
  }
82
121
  catch (error) {
83
- if (sessionCreateErrorOf(error)?.rpcError.code !== 'session/writer-held')
122
+ const code = sessionCreateErrorOf(error)?.rpcError.code;
123
+ if (code !== 'agent-preset/not-found' && code !== 'agent-preset/invalid')
84
124
  throw error;
85
- return this.sessions.create({ workspaceId });
125
+ return this.createNamed(request);
86
126
  }
87
127
  }
88
128
  openSession(target) {
89
129
  this.replaceMain(target, this.lifetime.signal, 'reveal');
90
130
  }
91
- async openWorkspace(workspaceId, beforeOpen) {
131
+ openWorkspace(workspaceId, beforeOpen, options = {}) {
132
+ return this.openWorkspaceSession(workspaceId, beforeOpen, options);
133
+ }
134
+ async openWorkspaceSession(workspaceId, beforeOpen, reuse) {
92
135
  const navigation = AbortSignal.any([this.ctx.layout.beginNavigation(), this.lifetime.signal]);
93
136
  let sessionId;
94
137
  try {
95
- sessionId = await this.connectWorkspace(workspaceId);
138
+ sessionId = await this.connectBlank(workspaceId, reuse);
96
139
  }
97
140
  catch (error) {
98
- // Reported here, not in connectWorkspace: startup restoration calls that
99
- // directly and stays console-only.
141
+ // Reported here, not in connectBlank: startup restoration calls it directly
142
+ // and stays console-only.
100
143
  if (!navigation.aborted)
101
144
  this.notify({ kind: 'createFailed', message: creationFailureMessage(error) });
102
145
  throw error;
@@ -105,10 +148,19 @@ class UiWorkspaceService extends Service {
105
148
  return;
106
149
  this.replaceMain(sessionId, navigation, 'reveal', beforeOpen);
107
150
  }
108
- async forkSession(sessionId, onCreated) {
109
- return this.sessions.fork({ sessionId, increaseTitle: true, ...onCreated === undefined ? {} : { onCreated } });
151
+ forkSession(sessionId, onCreated, options) {
152
+ return this.sessions.fork({
153
+ sessionId,
154
+ increaseTitle: true,
155
+ ...(onCreated === undefined ? {} : { onCreated }),
156
+ ...(options?.allowMigration === undefined ? {} : { allowMigration: options.allowMigration }),
157
+ });
110
158
  }
111
- startSession(workspaceId) {
159
+ startSession(workspaceId, options) {
160
+ const { agentPreset, ...draft } = options ?? {};
161
+ const draftOptions = options === undefined ? undefined : draft;
162
+ const initializeDraft = draftOptions !== undefined
163
+ && (draftOptions.prompt !== undefined || draftOptions.clearPreviousDraft === true);
112
164
  const workspace = this.workspaces.list.getSnapshot();
113
165
  const sessions = this.sessions.list.getSnapshot();
114
166
  const current = this.mainReference?.sessionId;
@@ -120,10 +172,34 @@ class UiWorkspaceService extends Service {
120
172
  : undefined;
121
173
  const target = workspaceId ?? currentWorkspaceId ?? recent;
122
174
  if (target === undefined) {
175
+ if (initializeDraft) {
176
+ this.notify({
177
+ kind: 'createFailed',
178
+ message: this.ctx.locale.bind('workspace')('draft.workspaceRequired'),
179
+ });
180
+ return;
181
+ }
123
182
  this.clearMain();
124
183
  return;
125
184
  }
126
- void this.openWorkspace(target).catch((reason) => { console.warn('new session failed:', reason); });
185
+ const open = draftOptions === undefined
186
+ ? this.openWorkspaceSession(target, undefined, undefined)
187
+ : this.openWorkspace(target, initializeDraft ? (sessionId) => {
188
+ const binding = this.sessions.binding(sessionId) ?? this.draftPreparationFailed();
189
+ this.prepareDraft(binding, draftOptions);
190
+ } : undefined, agentPreset === undefined ? {} : { agentPreset });
191
+ void open.catch((reason) => { console.warn('new session failed:', reason); });
192
+ }
193
+ prepareDraft(binding, options) {
194
+ const conversation = this.ctx.get('conversation') ?? this.draftPreparationFailed();
195
+ if (conversation.input.requestDraftInitialization(binding, options) === 'blocked') {
196
+ this.draftPreparationFailed();
197
+ }
198
+ }
199
+ draftPreparationFailed() {
200
+ const message = this.ctx.locale.bind('workspace')('draft.initializationFailed');
201
+ this.notify({ kind: 'createFailed', message });
202
+ throw new Error(message);
127
203
  }
128
204
  async archiveSession(sessionId, options = {}) {
129
205
  await this.workspaces.archiveSession(sessionId, options);
@@ -210,7 +286,7 @@ class UiWorkspaceService extends Service {
210
286
  let sessionId;
211
287
  if (summary !== undefined && workspace !== undefined && summary.cwd === workspace.path
212
288
  && !workspaces.archivedSessionIds.includes(summary.id)) {
213
- sessionId = await this.reuseBlank(workspace.workspaceId, summary.id);
289
+ sessionId = await this.restoreBlank(workspace.workspaceId, summary.id);
214
290
  }
215
291
  let target = workspace?.workspaceId ?? recentWorkspace(workspaces.items, sessions.byId);
216
292
  if (target === undefined && workspaces.items.length === 0 && sessions.ids.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/client/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../src/client/navigation.ts"],"names":[],"mappings":"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"}
@@ -5,43 +5,37 @@
5
5
  * vendored file only needs one import and one `<GroupBadge />` call to wire
6
6
  * the badge in. Everything fork-specific lives here.
7
7
  *
8
+ * The **wording** lives in `../badge-labels.ts`: this file imports the host icon set,
9
+ * whose `require` graph only resolves inside the DSH app, so anything kept here is
10
+ * untestable in this repository.
11
+ *
12
+ * 本文件也**不为任何具体状态源写分支**:外部来源的图标、色档、脉冲、文案都随 facet
13
+ * 一起进来,这里只按登记顺序把它们排进徽标。
14
+ *
8
15
  * @module
9
16
  */
10
17
  import type { ReactNode } from 'react';
11
18
  import type { WorkspaceBrowserProps } from '../contract/slots.ts';
12
- import type { GroupLiveStatus, GroupNode } from '../tree.ts';
19
+ import type { GroupNode } from '../tree.ts';
13
20
  import type { ResolvedBadgeSettings } from '../badge-settings.ts';
21
+ export { facetCountTotal, facetGlyph, facetPulseClass, groupLiveLabel, hoverStatusLines } from '../badge-labels.ts';
14
22
  /** The standard locale seat, prop-passed from the browser root. */
15
23
  type RowTranslate = WorkspaceBrowserProps['t'];
16
- /**
17
- * Accessible label for a folded group's aggregated status, reusing the
18
- * session-row locale keys so both surfaces read identically.
19
- *
20
- * 按设置过滤:关掉的来源不出现在标签里(aria-label 与徽标视觉一致)。
21
- */
22
- export declare function groupLiveLabel(s: GroupLiveStatus, t: RowTranslate, settings: ResolvedBadgeSettings): string;
23
24
  /**
24
25
  * Aggregated live-status badge for a folded folder row. Dots reuse StateDot so
25
26
  * colors match session rows (warning = pending, ongoing = running, done = completed).
26
- * Renders nothing while expanded or when nothing is pending/active/completed/scheduled/waiting.
27
- *
28
- * Count matches the dots: pending + active + completed + waiting-review + scheduled sessions.
27
+ * Renders nothing while expanded or when nothing is pending/active/completed or any
28
+ * status source reports a contribution.
29
29
  *
30
- * `settings` 按来源过滤:关掉的来源不画点、不计数、不进 aria-label、不参与「是否显示徽标」
31
- * 的判断。会话行自身的状态不受影响:那是行级状态,不是分组提示。
32
- */
33
- export declare function groupLiveBadge(group: GroupNode, t: RowTranslate, settings: ResolvedBadgeSettings): ReactNode;
34
- /**
35
- * Build the status detail lines for the workspace hover card.
30
+ * Count matches the dots: host-side sessions plus every registered facet's own count.
36
31
  *
37
- * Extracted so `WorkspaceHoverContent` in `Rows.tsx` only needs to map the
38
- * returned array — the fork-specific status→line logic lives here.
32
+ * `settings` 按来源过滤:关掉的来源不画点、不计数、不进 aria-label、不参与「是否显示
33
+ * 徽标」的判断。会话行自身的状态点不受影响:那是行级状态,不是分组提示。**外部**来源的
34
+ * 过滤发生在折叠之前(`WorkspaceBrowser` 按 `facet.settingKey` 筛登记面),所以到这里
35
+ * 的折果已经是"该显示的",label 与视觉不可能各说一套。
39
36
  *
40
- * 按设置过滤:关掉的来源不出现在明细行里;`showHoverDetails=false` 时整段返回空。
37
+ * `now` 缺省取渲染时刻(与 `WorkspaceBrowser` 为相对时间读的时钟同一姿态):文案里的
38
+ * 剩余时长以此计算,只在提供方 store 通知时随渲染更新。
41
39
  */
42
- export declare function hoverStatusLines(status: GroupLiveStatus | undefined, t: RowTranslate, settings: ResolvedBadgeSettings): {
43
- state: 'warning' | 'ongoing' | 'done';
44
- text: string;
45
- }[];
46
- export {};
40
+ export declare function groupLiveBadge(group: GroupNode, t: RowTranslate, settings: ResolvedBadgeSettings, now?: number): ReactNode;
47
41
  //# sourceMappingURL=GroupBadge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupBadge.d.ts","sourceRoot":"","sources":["../../../../src/client/rows/GroupBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAGjE,mEAAmE;AACnE,KAAK,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAI9C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAiB3G;AAID;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,qBAAqB,GAAG,SAAS,CAmD5G;AAID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,CAAC,EAAE,YAAY,EACf,QAAQ,EAAE,qBAAqB,GAC9B;IAAE,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAyB3D"}
1
+ {"version":3,"file":"GroupBadge.d.ts","sourceRoot":"","sources":["../../../../src/client/rows/GroupBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAIjE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEnH,mEAAmE;AACnE,KAAK,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAI9C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,CAAC,EAAE,YAAY,EACf,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,GAAE,MAAmB,GACvB,SAAS,CA+CX"}
@@ -1,132 +1,71 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { IconClockOutlineRegular, IconListPenOutlineRegular, StateDot, } from '@deepseek-ai/dsh-client-ui-primitives';
2
+ import { StateDot } from '@deepseek-ai/dsh-client-ui-primitives';
3
+ import { facetCountTotal, facetGlyph, facetPulseClass, groupLiveLabel } from "../badge-labels.js";
3
4
  import css from './Rows.module.css';
4
- // ── Accessible label ──
5
- /**
6
- * Accessible label for a folded group's aggregated status, reusing the
7
- * session-row locale keys so both surfaces read identically.
8
- *
9
- * 按设置过滤:关掉的来源不出现在标签里(aria-label 与徽标视觉一致)。
10
- */
11
- export function groupLiveLabel(s, t, settings) {
12
- const parts = [];
13
- if (settings.showPendingInBadge) {
14
- if (s.approval > 0)
15
- parts.push(`${s.approval} ${t('status.waitingApproval')}`);
16
- if (s.planReview > 0)
17
- parts.push(`${s.planReview} ${t('status.planReview')}`);
18
- if (s.question > 0)
19
- parts.push(`${s.question} ${t('status.waitingAnswer')}`);
20
- }
21
- if (settings.showRunningInBadge) {
22
- if (s.running > 0)
23
- parts.push(`${s.running} ${t('status.running')}`);
24
- if (s.subagents > 0) {
25
- parts.push(t(s.subagents === 1 ? 'status.subagentsRunning.one' : 'status.subagentsRunning.other', { n: s.subagents }));
26
- }
27
- }
28
- if (settings.showWaitingReviewInBadge && s.waitingReviewCount > 0)
29
- parts.push(`${s.waitingReviewCount} ${t('status.waitingReview')}`);
30
- if (settings.showScheduledInBadge && s.scheduledSessions > 0)
31
- parts.push(`${s.scheduledSessions} ${t('status.scheduled')}`);
32
- if (settings.showCompletedInBadge && s.done > 0)
33
- parts.push(`${s.done} ${t('status.completed')}`);
34
- return parts.join(' · ');
35
- }
5
+ export { facetCountTotal, facetGlyph, facetPulseClass, groupLiveLabel, hoverStatusLines } from "../badge-labels.js";
36
6
  // ── Badge ──
37
7
  /**
38
8
  * Aggregated live-status badge for a folded folder row. Dots reuse StateDot so
39
9
  * colors match session rows (warning = pending, ongoing = running, done = completed).
40
- * Renders nothing while expanded or when nothing is pending/active/completed/scheduled/waiting.
10
+ * Renders nothing while expanded or when nothing is pending/active/completed or any
11
+ * status source reports a contribution.
12
+ *
13
+ * Count matches the dots: host-side sessions plus every registered facet's own count.
41
14
  *
42
- * Count matches the dots: pending + active + completed + waiting-review + scheduled sessions.
15
+ * `settings` 按来源过滤:关掉的来源不画点、不计数、不进 aria-label、不参与「是否显示
16
+ * 徽标」的判断。会话行自身的状态点不受影响:那是行级状态,不是分组提示。**外部**来源的
17
+ * 过滤发生在折叠之前(`WorkspaceBrowser` 按 `facet.settingKey` 筛登记面),所以到这里
18
+ * 的折果已经是"该显示的",label 与视觉不可能各说一套。
43
19
  *
44
- * `settings` 按来源过滤:关掉的来源不画点、不计数、不进 aria-label、不参与「是否显示徽标」
45
- * 的判断。会话行自身的状态不受影响:那是行级状态,不是分组提示。
20
+ * `now` 缺省取渲染时刻(与 `WorkspaceBrowser` 为相对时间读的时钟同一姿态):文案里的
21
+ * 剩余时长以此计算,只在提供方 store 通知时随渲染更新。
46
22
  */
47
- export function groupLiveBadge(group, t, settings) {
23
+ export function groupLiveBadge(group, t, settings, now = Date.now()) {
48
24
  const s = group.liveStatus;
49
25
  if (group.expanded || s === undefined)
50
26
  return null;
51
27
  const pending = settings.showPendingInBadge ? s.approval + s.planReview + s.question : 0;
52
28
  const active = settings.showRunningInBadge ? s.running + s.subagents : 0;
53
- const scheduled = settings.showScheduledInBadge ? s.scheduledSessions : 0;
54
- const hasWaitingReview = settings.showWaitingReviewInBadge && s.waitingReviewCount > 0;
55
29
  const completed = settings.showCompletedInBadge ? s.done : 0;
56
- // 只在有 pending / active / 已完成 / 定时任务 / 等待评审时显示徽标
57
- if (pending === 0 && active === 0 && completed === 0 && scheduled === 0 && !hasWaitingReview)
30
+ const facetTotal = facetCountTotal(s);
31
+ // 只在有 pending / active / 已完成 / 任一外部来源有贡献时显示徽标
32
+ if (pending === 0 && active === 0 && completed === 0 && facetTotal === 0)
58
33
  return null;
59
- const label = groupLiveLabel(s, t, settings);
34
+ const label = groupLiveLabel(s, t, settings, now);
60
35
  const dots = [];
61
36
  if (pending > 0)
62
37
  dots.push(_jsx(StateDot, { state: "warning" }, "warn"));
63
38
  if (active > 0)
64
39
  dots.push(_jsx(StateDot, { state: "ongoing" }, "run"));
40
+ // #25①:点行顺序此前是 pending → active → **done** → facet,而明细(`hoverStatusLines`)
41
+ // 是 pending → active → **facet** → done,两处相反;而 `badge-labels.ts` 的注释声称两者
42
+ // 「完全一致」,括号里写的还正是明细那一种。此处按明细对齐(facet 排在 done 之前),
43
+ // 注释与实现从此同一条来源。
44
+ // 外部来源的相对次序由 facet.order 决定(谁更该被看见,来源自己排)。
45
+ // CSS module 的类型把 class 声明为可能 undefined,这里只在真的闪时才求值。
46
+ const urgentClass = css.groupBadgeUrgent ?? '';
47
+ for (const entry of s.facets.values()) {
48
+ const glyph = facetGlyph(entry, t, now);
49
+ const pulseClass = facetPulseClass(entry, urgentClass) || undefined;
50
+ dots.push(glyph === undefined
51
+ // provider 没画图标时退回通用点:陌生来源仍然可见,只是朴素。宿主只有三档状态点,
52
+ // 没有 error 档,所以 info 之外的色档都落到 warning 点上。
53
+ ? _jsx(StateDot, { state: entry.fold.tone === 'info' ? 'ongoing' : 'warning' }, entry.facet.id)
54
+ // #22:脉冲 class 加在**这一枚元素**上,不是整只徽标。同组里别家开闪不该让
55
+ // `pulse: false` 的来源跟着呼吸——那条约定不能依赖邻居的开关。
56
+ : _jsx("span", { className: pulseClass, children: glyph }, entry.facet.id));
57
+ }
65
58
  if (completed > 0)
66
59
  dots.push(_jsx(StateDot, { state: "done" }, "done"));
67
- // 定时任务图标(紫色 #8b5cf6 与 dsh-later 定时徽标同源,浅深底对比均 >=3:1;
68
- // urgent 橙 / overdue 红走宿主 warn/error 语义令牌)。与等待评审**用不同图标**——
69
- // 两者同属"在等"的语义,只靠颜色区分对色盲用户不可用。
70
- if (scheduled > 0) {
71
- const stateColor = s.scheduleState === 'overdue' ? 'var(--dsw-alias-state-error-primary)' : s.scheduleState === 'urgent' ? 'var(--dsw-alias-state-warn-secondary)' : '#8b5cf6';
72
- dots.push(_jsx("span", { style: { color: stateColor, display: 'inline-flex', alignItems: 'center' }, children: _jsx(IconClockOutlineRegular, { size: 14 }) }, "schedule"));
73
- }
74
- // 等待评审图标(琥珀色;超时转红)。数据来自 dsh-gitea-dispatch 的
75
- // useWaitingSummary()——本插件不自己轮询该端点(其 store 是唯一轮询方)。
76
- if (hasWaitingReview) {
77
- const stateColor = s.waitingReviewState === 'overdue' ? 'var(--dsw-alias-state-error-primary)' : 'var(--dsw-alias-state-warn-secondary)';
78
- dots.push(_jsx("span", { style: { color: stateColor, display: 'inline-flex', alignItems: 'center' }, children: _jsx(IconListPenOutlineRegular, { size: 14 }) }, "waiting-review"));
79
- }
80
- // 数字统计 pending + active + 已完成 + 定时任务会话 + 等待评审会话(与 dot 一致)
81
- // P2-3: 数字上限 99+,避免大项目组徽标过宽。
82
- // P3-3: count < countThreshold 时省略数字(点已表达"有东西");设置项 countThreshold 可调。
83
- const count = pending + active + completed + scheduled + (hasWaitingReview ? s.waitingReviewCount : 0);
60
+ // 数字 = 待审批 + 进行中(含子智能体)+ 已完成 + 各外部来源自己报的条数。
61
+ // #25②:「含子智能体」此前是**空头承诺**——`summarizeGroupStatus` 在 pending 分支里
62
+ // `continue` 掉了 `subagents += n.runningSubagentCount`,行内却给两个点。计数判据已
63
+ // 改成与 `Rows.tsx` 的 `sessionStatuses()` 同一套规则,这条注释现在才成立。
64
+ // P2-3: 上限 99+,避免大项目组徽标过宽。
65
+ // P3-3: 低于 countThreshold 时省略数字(点已表达"有东西");设置项可调。
66
+ const count = pending + active + completed + facetTotal;
84
67
  const countLabel = count > 99 ? '99+' : count >= settings.countThreshold ? String(count) : '';
85
- // P2-2: 紧急状态(overdue/urgent)时添加脉冲动画类。
86
- const isUrgent = s.scheduleState === 'overdue' || s.scheduleState === 'urgent'
87
- || s.waitingReviewState === 'overdue';
88
- const badgeClass = isUrgent ? `${css.groupBadge} ${css.groupBadgeUrgent}` : css.groupBadge;
89
- return (_jsxs("span", { className: badgeClass, role: "img", "aria-label": label, title: label, children: [dots, countLabel && _jsx("span", { className: css.groupBadgeCount, children: countLabel })] }));
90
- }
91
- // ── Hover-card status lines ──
92
- /**
93
- * Build the status detail lines for the workspace hover card.
94
- *
95
- * Extracted so `WorkspaceHoverContent` in `Rows.tsx` only needs to map the
96
- * returned array — the fork-specific status→line logic lives here.
97
- *
98
- * 按设置过滤:关掉的来源不出现在明细行里;`showHoverDetails=false` 时整段返回空。
99
- */
100
- export function hoverStatusLines(status, t, settings) {
101
- const lines = [];
102
- if (status === undefined || !settings.showHoverDetails)
103
- return lines;
104
- if (settings.showPendingInBadge) {
105
- if (status.approval > 0)
106
- lines.push({ state: 'warning', text: `${status.approval} ${t('status.waitingApproval')}` });
107
- if (status.planReview > 0)
108
- lines.push({ state: 'warning', text: `${status.planReview} ${t('status.planReview')}` });
109
- if (status.question > 0)
110
- lines.push({ state: 'warning', text: `${status.question} ${t('status.waitingAnswer')}` });
111
- }
112
- if (settings.showRunningInBadge) {
113
- if (status.running > 0)
114
- lines.push({ state: 'ongoing', text: `${status.running} ${t('status.running')}` });
115
- if (status.subagents > 0) {
116
- lines.push({
117
- state: 'ongoing',
118
- text: t(status.subagents === 1 ? 'status.subagentsRunning.one' : 'status.subagentsRunning.other', { n: status.subagents }),
119
- });
120
- }
121
- }
122
- if (settings.showWaitingReviewInBadge && status.waitingReviewCount > 0) {
123
- lines.push({ state: 'warning', text: `${status.waitingReviewCount} ${t('status.waitingReview')}` });
124
- }
125
- if (settings.showScheduledInBadge && status.scheduledSessions > 0) {
126
- lines.push({ state: 'warning', text: `${status.scheduledSessions} ${t('status.scheduled')}` });
127
- }
128
- if (settings.showCompletedInBadge && status.done > 0)
129
- lines.push({ state: 'done', text: `${status.done} ${t('status.completed')}` });
130
- return lines;
68
+ // #22:徽标**容器**不再带脉冲 class——脉冲是"某个来源的元素该闪",不是整只徽标该闪。
69
+ return (_jsxs("span", { className: css.groupBadge, role: "img", "aria-label": label, title: label, children: [dots, countLabel && _jsx("span", { className: css.groupBadgeCount, children: countLabel })] }));
131
70
  }
132
71
  //# sourceMappingURL=GroupBadge.js.map