@huanlin/dsh-plugin-ya-workspace-sidebar 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/client.js +274 -116
- package/lib/client.js.map +1 -1
- package/lib/types/client/contract.d.ts +6 -0
- package/lib/types/client/model.d.ts +18 -6
- package/lib/types/client/navigation.d.ts +30 -3
- package/lib/types/client/styles.d.ts +1 -1
- package/package.json +21 -16
|
@@ -71,10 +71,16 @@ export type SidebarInjected = DirectoryInjected & {
|
|
|
71
71
|
cwd?: string;
|
|
72
72
|
}) => Promise<SessionPaths>;
|
|
73
73
|
revealInExplorer: (cwd: string) => Promise<void>;
|
|
74
|
+
/** Current main-view Session (dsh 0.1.7-rc.1: owned by the uiWorkspace service). */
|
|
75
|
+
hooks: {
|
|
76
|
+
currentSession: HostObservable<SessionId | undefined>;
|
|
77
|
+
};
|
|
74
78
|
};
|
|
75
79
|
/** Full sidebar component props. */
|
|
76
80
|
export type SidebarProps = PropsRuntime<'sidebar.workspaces'> & PropsRenderSlots<'sidebar.workspaces.directoryFlow'> & Omit<SidebarInjected, 'hooks'> & {
|
|
77
81
|
useDirectoryFlow: SnapshotSelectorHook<boolean>;
|
|
82
|
+
} & {
|
|
83
|
+
useCurrentSession: SnapshotSelectorHook<SessionId | undefined>;
|
|
78
84
|
} & PropsLocale<'ya-workspace-sidebar'>;
|
|
79
85
|
/** Conversation hero picker operations. */
|
|
80
86
|
export type PickerInjected = DirectoryInjected & {
|
|
@@ -4,12 +4,24 @@ import type { WorkspaceId, WorkspaceView } from '@deepseek-ai/dsh-api-workspace-
|
|
|
4
4
|
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
5
5
|
/** Pending-interaction kinds surfaced as a row status dot. */
|
|
6
6
|
export type PendingInteractionKind = 'approval' | 'plan-review' | 'question';
|
|
7
|
-
/** Renderer-visible view of ui-session's
|
|
7
|
+
/** Renderer-visible view of ui-session's unified Session status entries. */
|
|
8
8
|
export type PendingInteractionEntry = {
|
|
9
|
-
readonly
|
|
9
|
+
readonly pendingInteraction?: {
|
|
10
|
+
readonly kind: string;
|
|
11
|
+
};
|
|
12
|
+
/** dsh 0.1.7's ui-session status: an unread completion awaiting acknowledgement. */
|
|
13
|
+
readonly completionUnread?: boolean;
|
|
10
14
|
};
|
|
11
15
|
/** Pending-interaction snapshot consumed by the derive functions. */
|
|
12
16
|
export type PendingInteractionMap = ReadonlyMap<SessionId, PendingInteractionEntry>;
|
|
17
|
+
/**
|
|
18
|
+
* Session Controller list plus the selection the sidebar filters/highlights
|
|
19
|
+
* against. dsh 0.1.7-rc.1 moved the selection out of `SessionListState` into
|
|
20
|
+
* the `uiWorkspace` service; callers merge it back in for these projections.
|
|
21
|
+
*/
|
|
22
|
+
export type SessionListView = SessionListState & {
|
|
23
|
+
current?: SessionId;
|
|
24
|
+
};
|
|
13
25
|
/** Navigation key for sessions not accounted to a real workspace. */
|
|
14
26
|
export declare const UNGROUPED: "__ya_ungrouped__";
|
|
15
27
|
/** One sidebar session row. */
|
|
@@ -52,7 +64,7 @@ export interface WorkspaceRow {
|
|
|
52
64
|
/** Resolve the first/second-level destination for one session. */
|
|
53
65
|
export declare function workspaceKeyForSession(sessionId: SessionId | undefined, workspaces: readonly WorkspaceView[]): WorkspaceId | typeof UNGROUPED | null;
|
|
54
66
|
/** Derive global recent sessions, newest first. */
|
|
55
|
-
export declare function deriveRecent(list:
|
|
67
|
+
export declare function deriveRecent(list: SessionListView, workspaces: readonly WorkspaceView[], archivedSessionIds: readonly SessionId[], pending: PendingInteractionMap, limit?: number): SessionRow[];
|
|
56
68
|
/** Lift pinned rows (in pinned order) to the front; the rest keep their order. */
|
|
57
69
|
export declare function applyPinned(rows: readonly SessionRow[], pinnedOrder: readonly SessionId[]): SessionRow[];
|
|
58
70
|
/** Split date-grouped rows into a leading pinned list (pinned order) and the remaining groups (emptied groups dropped). */
|
|
@@ -77,9 +89,9 @@ export interface VirtualWindow {
|
|
|
77
89
|
*/
|
|
78
90
|
export declare function virtualWindow(scrollTop: number, viewportHeight: number, count: number, stride?: number, overscan?: number): VirtualWindow;
|
|
79
91
|
/** Derive first-level workspaces plus Ungrouped, newest session activity first. */
|
|
80
|
-
export declare function deriveWorkspaces(list:
|
|
92
|
+
export declare function deriveWorkspaces(list: SessionListView, workspaces: readonly WorkspaceView[], archivedSessionIds: readonly SessionId[]): WorkspaceRow[];
|
|
81
93
|
/** Derive the selected workspace's sessions in its canonical order. */
|
|
82
|
-
export declare function deriveWorkspaceSessions(key: WorkspaceId | typeof UNGROUPED, list:
|
|
94
|
+
export declare function deriveWorkspaceSessions(key: WorkspaceId | typeof UNGROUPED, list: SessionListView, workspaces: readonly WorkspaceView[], archivedSessionIds: readonly SessionId[], pending: PendingInteractionMap): SessionRow[];
|
|
83
95
|
/**
|
|
84
96
|
* Derive the selected real workspace's sessions grouped by local calendar date.
|
|
85
97
|
*
|
|
@@ -89,7 +101,7 @@ export declare function deriveWorkspaceSessions(key: WorkspaceId | typeof UNGROU
|
|
|
89
101
|
* - Future timestamps clamp to today's bucket (`dayOffset` 0).
|
|
90
102
|
* - `now` is the reference timestamp for "today"; pass `Date.now()` in production.
|
|
91
103
|
*/
|
|
92
|
-
export declare function deriveWorkspaceSessionGroups(key: WorkspaceId | typeof UNGROUPED, list:
|
|
104
|
+
export declare function deriveWorkspaceSessionGroups(key: WorkspaceId | typeof UNGROUPED, list: SessionListView, workspaces: readonly WorkspaceView[], archivedSessionIds: readonly SessionId[], pending: PendingInteractionMap, now: number): SessionDateGroup[];
|
|
93
105
|
/** Group root workspace rows by local calendar date of `lastUsedAt`; undated rows trail with empty `dateKey`. */
|
|
94
106
|
export declare function deriveWorkspaceGroups(rows: readonly WorkspaceRow[], now: number): WorkspaceDateGroup[];
|
|
95
107
|
/** Case-insensitive local title/workspace matching used beside Host content search. */
|
|
@@ -9,13 +9,24 @@
|
|
|
9
9
|
* pre-split client runtime: reuse-or-create Workspace connection, the
|
|
10
10
|
* explicit/current/recent New Session fallback, archived-current clearing,
|
|
11
11
|
* boot auto-selection, and the directory-picking wire calls.
|
|
12
|
+
*
|
|
13
|
+
* dsh 0.1.7-rc.1 moved the Session selection out of the Session Controller
|
|
14
|
+
* (`SessionListState.current` / `ISessions.open` / `ISessions.clear` are gone)
|
|
15
|
+
* into this service: a retained `mainReference` plus a persisted selection
|
|
16
|
+
* store (`dsh.sessions.current`). This port mirrors the shipped
|
|
17
|
+
* `UiWorkspaceService` selection mechanics.
|
|
12
18
|
*/
|
|
13
19
|
import { Service, type Context } from '@deepseek-ai/cordis';
|
|
14
|
-
import type { ISessions } from '@deepseek-ai/dsh-api-session-controller/client';
|
|
20
|
+
import type { ISessions, SessionTarget } from '@deepseek-ai/dsh-api-session-controller/client';
|
|
15
21
|
import type { ClientRemote, DirectoryListing } from '@deepseek-ai/dsh-api-remotes/client';
|
|
16
22
|
import type { IWorkspaces, WorkspaceId } from '@deepseek-ai/dsh-api-workspace-controller/client';
|
|
17
23
|
import type { UiWorkspace } from '@deepseek-ai/dsh-client-ui-workspace/client';
|
|
18
24
|
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
25
|
+
/** One persisted selection: the current Session and its optional subagent address. */
|
|
26
|
+
export interface SessionSelection {
|
|
27
|
+
readonly sessionId?: SessionId;
|
|
28
|
+
readonly subagentAddress?: SessionTarget;
|
|
29
|
+
}
|
|
19
30
|
/** Implements Workspace navigation and directory UI operations. */
|
|
20
31
|
export declare class YaWorkspaceNavigation extends Service implements UiWorkspace {
|
|
21
32
|
private readonly directoryPicker;
|
|
@@ -23,6 +34,8 @@ export declare class YaWorkspaceNavigation extends Service implements UiWorkspac
|
|
|
23
34
|
private readonly sessions;
|
|
24
35
|
private readonly connecting;
|
|
25
36
|
private readonly lifetime;
|
|
37
|
+
private readonly selection;
|
|
38
|
+
private mainReference;
|
|
26
39
|
/**
|
|
27
40
|
* @param ctx - Client root Context.
|
|
28
41
|
* @param directoryPicker - the directory-picking Remote namespace.
|
|
@@ -30,16 +43,30 @@ export declare class YaWorkspaceNavigation extends Service implements UiWorkspac
|
|
|
30
43
|
* @param sessions - pure Session Controller.
|
|
31
44
|
*/
|
|
32
45
|
constructor(ctx: Context, directoryPicker: ClientRemote['directoryPicker'], workspaces: IWorkspaces, sessions: ISessions);
|
|
46
|
+
/** The Session currently shown in the main view, or undefined. */
|
|
47
|
+
get currentSessionId(): SessionId | undefined;
|
|
48
|
+
/** Observe the current selection (the sidebar's blank-row filter and highlight). */
|
|
49
|
+
subscribeSelection(listener: () => void): () => void;
|
|
33
50
|
connectWorkspace(workspaceId: WorkspaceId): Promise<SessionId>;
|
|
34
|
-
|
|
51
|
+
private reuseOrCreateBlank;
|
|
52
|
+
private reuseBlank;
|
|
53
|
+
openSession(target: SessionTarget): void;
|
|
35
54
|
openWorkspace(workspaceId: WorkspaceId, beforeOpen?: (sessionId: SessionId) => void): Promise<void>;
|
|
36
55
|
forkSession(sessionId: SessionId): Promise<void>;
|
|
37
56
|
startSession(workspaceId?: WorkspaceId): void;
|
|
38
|
-
archiveSession(sessionId: SessionId
|
|
57
|
+
archiveSession(sessionId: SessionId, options?: {
|
|
58
|
+
readonly stopActivity?: boolean;
|
|
59
|
+
}): Promise<void>;
|
|
60
|
+
unarchiveSession(sessionId: SessionId): Promise<void>;
|
|
61
|
+
pinSession(sessionId: SessionId): Promise<void>;
|
|
62
|
+
unpinSession(sessionId: SessionId): Promise<void>;
|
|
39
63
|
pickDirectory(): Promise<string | null>;
|
|
40
64
|
listDirectory(path?: string, signal?: AbortSignal): Promise<DirectoryListing>;
|
|
41
65
|
createDirectory(path: string, name: string): Promise<string>;
|
|
42
66
|
private watchNavigation;
|
|
67
|
+
private restoreSelection;
|
|
43
68
|
/** @returns true when an archived current selection was cleared. */
|
|
44
69
|
private clearArchivedCurrent;
|
|
70
|
+
private clearMain;
|
|
71
|
+
private replaceMain;
|
|
45
72
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** One scoped stylesheet injected for the lifetime of the client activation. */
|
|
2
|
-
export declare const CSS = "\n[data-ya-workspace-sidebar] { flex:1; min-height:0; display:flex; flex-direction:column; box-sizing:border-box; padding-right:var(--dsh-sidebar-inline-padding); color:var(--dsw-alias-label-primary); }\n[data-ya-workspace-sidebar].ya-rail { padding-right:0; }\n.ya-section-header { flex:none; height:36px; display:flex; align-items:center; justify-content:flex-end; gap:4px; padding-left:12px; margin-bottom:4px; box-sizing:border-box; color:var(--dsw-alias-label-tertiary); }\n.ya-section-title { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; }\n.ya-icon-button { flex:none; width:28px; height:28px; border:0; border-radius:50%; padding:0; display:inline-flex; align-items:center; justify-content:center; color:var(--dsw-alias-label-secondary); background:transparent; cursor:pointer; }\n.ya-icon-button:hover { background:var(--dsw-alias-interactive-bg-hover); }\n.ya-search { flex:none; height:38px; margin:0 2px 10px; padding:0 14px; display:flex; align-items:center; gap:8px; box-sizing:border-box; border:1px solid var(--dsw-alias-border-l2); border-radius:24px; background:var(--dsw-static-neutral-bluish-75); color:var(--dsw-alias-label-caption); }\nbody[data-ds-dark-theme] .ya-search { background:var(--dsw-static-neutral-bluish-900); }\n.ya-search-input { flex:1; min-width:0; border:0; outline:0; background:transparent; color:var(--dsw-alias-label-primary); font:inherit; font-size:14px; }\n.ya-search-input::placeholder { color:var(--dsw-alias-label-tertiary); }\n.ya-search-icon { flex:none; display:inline-flex; border:0; padding:0; color:inherit; background:transparent; }\n.ya-body { flex:1; min-height:0; display:flex; flex-direction:column; overflow:hidden; margin-right:calc(-1 * var(--dsh-sidebar-inline-padding)); padding-right:var(--dsh-sidebar-inline-padding); }\n.ya-recent { flex:none; }\n.ya-recent-list-wrap { display:grid; grid-template-rows:1fr; transition:grid-template-rows 220ms ease-out; }\n.ya-recent-collapsed .ya-recent-list-wrap { grid-template-rows:0fr; }\n.ya-recent-list { position:relative; overflow-y:auto; overscroll-behavior:contain; min-height:0; max-height:min(280px, 40vh); }\n.ya-virtual-canvas { position:relative; width:100%; }\n.ya-virtual-slot { position:absolute; left:0; right:0; height:35px; box-sizing:border-box; padding:1px 0; display:flex; flex-direction:column; justify-content:center; }\n.ya-virtual-slot .ya-row { margin:0; min-height:33px; }\n.ya-recent-resizer { position:relative; flex:none; height:9px; margin:1px 0 3px; display:flex; align-items:center; justify-content:center; border-radius:5px; cursor:row-resize; touch-action:none; }\n.ya-recent-resizer::before { content:''; position:absolute; left:8px; right:8px; top:50%; height:1px; transform:translateY(-0.5px); background:var(--dsw-alias-border-l2); }\n.ya-recent-resizer::after { content:''; width:26px; height:3px; border-radius:2px; background:var(--dsw-alias-border-l2); transition:background 120ms ease-out; }\n.ya-recent-resizer:hover::after, .ya-recent-resizer:focus-visible::after, .ya-recent-resizer.ya-resizing::after { background:var(--dsw-alias-label-tertiary); }\n.ya-recent-resizer.ya-resizing::before { background:var(--dsw-alias-interactive-bg-selected); }\n.ya-block-label { height:26px; display:flex; align-items:center; gap:2px; padding:0 8px; color:var(--dsw-alias-label-tertiary); font-size:12px; font-weight:600; letter-spacing:.02em; text-transform:uppercase; }\n.ya-block-label-toggle { flex:none; width:20px; height:20px; margin-left:auto; border:0; border-radius:6px; padding:0; display:inline-flex; align-items:center; justify-content:center; background:transparent; color:var(--dsw-alias-label-tertiary); cursor:pointer; transition:transform 180ms ease-out; }\n.ya-block-label-toggle:hover { background:var(--dsw-alias-interactive-bg-hover); color:var(--dsw-alias-label-secondary); }\n.ya-block-label-toggle.ya-collapsed { transform:rotate(-90deg); }\n.ya-date-group-label { height:26px; display:flex; align-items:center; padding:0 8px; color:var(--dsw-alias-label-tertiary); font-size:12px; font-weight:600; letter-spacing:.02em; }\n.ya-breadcrumb { flex:none; height:34px; display:flex; align-items:center; gap:2px; padding:0 6px; color:var(--dsw-alias-label-tertiary); font-size:13px; }\n.ya-crumb { border:0; padding:4px 3px; border-radius:6px; background:transparent; color:inherit; font:inherit; cursor:default; min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }\nbutton.ya-crumb:hover { background:var(--dsw-alias-interactive-bg-hover); color:var(--dsw-alias-label-primary); cursor:pointer; }\n.ya-scroll { flex:1; min-height:0; overflow-y:auto; padding-bottom:12px; }\n.ya-row { position:relative; min-height:34px; display:flex; align-items:center; gap:6px; margin:1px 0; padding:0 7px; border-radius:9px; box-sizing:border-box; color:var(--dsw-alias-label-primary); cursor:pointer; user-select:none; }\n.ya-row:hover, .ya-row.ya-menu-open { background:var(--dsw-alias-interactive-bg-hover); }\n.ya-row.ya-selected { background:var(--dsw-alias-interactive-bg-selected); }\n.ya-workspace-row { min-height:40px; }\n.ya-row-main { flex:1; min-width:0; display:flex; flex-direction:column; justify-content:center; }\n.ya-row-line { display:flex; align-items:center; min-width:0; gap:6px; }\n.ya-row-title { flex:1; min-width:0; overflow:hidden;
|
|
2
|
+
export declare const CSS = "\n[data-ya-workspace-sidebar] { flex:1; min-height:0; display:flex; flex-direction:column; box-sizing:border-box; padding-right:var(--dsh-sidebar-inline-padding); color:var(--dsw-alias-label-primary); }\n[data-ya-workspace-sidebar].ya-rail { padding-right:0; }\n.ya-section-header { flex:none; height:36px; display:flex; align-items:center; justify-content:flex-end; gap:4px; padding-left:12px; margin-bottom:4px; box-sizing:border-box; color:var(--dsw-alias-label-tertiary); }\n.ya-section-title { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; }\n.ya-icon-button { flex:none; width:28px; height:28px; border:0; border-radius:50%; padding:0; display:inline-flex; align-items:center; justify-content:center; color:var(--dsw-alias-label-secondary); background:transparent; cursor:pointer; }\n.ya-icon-button:hover { background:var(--dsw-alias-interactive-bg-hover); }\n.ya-search { flex:none; height:38px; margin:0 2px 10px; padding:0 14px; display:flex; align-items:center; gap:8px; box-sizing:border-box; border:1px solid var(--dsw-alias-border-l2); border-radius:24px; background:var(--dsw-static-neutral-bluish-75); color:var(--dsw-alias-label-caption); }\nbody[data-ds-dark-theme] .ya-search { background:var(--dsw-static-neutral-bluish-900); }\n.ya-search-input { flex:1; min-width:0; border:0; outline:0; background:transparent; color:var(--dsw-alias-label-primary); font:inherit; font-size:14px; }\n.ya-search-input::placeholder { color:var(--dsw-alias-label-tertiary); }\n.ya-search-icon { flex:none; display:inline-flex; border:0; padding:0; color:inherit; background:transparent; }\n.ya-body { flex:1; min-height:0; display:flex; flex-direction:column; overflow:hidden; margin-right:calc(-1 * var(--dsh-sidebar-inline-padding)); padding-right:var(--dsh-sidebar-inline-padding); }\n.ya-recent { flex:none; }\n.ya-recent-list-wrap { display:grid; grid-template-rows:1fr; transition:grid-template-rows 220ms ease-out; }\n.ya-recent-collapsed .ya-recent-list-wrap { grid-template-rows:0fr; }\n.ya-recent-list { position:relative; overflow-y:auto; overscroll-behavior:contain; min-height:0; max-height:min(280px, 40vh); }\n.ya-virtual-canvas { position:relative; width:100%; }\n.ya-virtual-slot { position:absolute; left:0; right:0; height:35px; box-sizing:border-box; padding:1px 0; display:flex; flex-direction:column; justify-content:center; }\n.ya-virtual-slot .ya-row { margin:0; min-height:33px; }\n.ya-recent-resizer { position:relative; flex:none; height:9px; margin:1px 0 3px; display:flex; align-items:center; justify-content:center; border-radius:5px; cursor:row-resize; touch-action:none; }\n.ya-recent-resizer::before { content:''; position:absolute; left:8px; right:8px; top:50%; height:1px; transform:translateY(-0.5px); background:var(--dsw-alias-border-l2); }\n.ya-recent-resizer::after { content:''; width:26px; height:3px; border-radius:2px; background:var(--dsw-alias-border-l2); transition:background 120ms ease-out; }\n.ya-recent-resizer:hover::after, .ya-recent-resizer:focus-visible::after, .ya-recent-resizer.ya-resizing::after { background:var(--dsw-alias-label-tertiary); }\n.ya-recent-resizer.ya-resizing::before { background:var(--dsw-alias-interactive-bg-selected); }\n.ya-block-label { height:26px; display:flex; align-items:center; gap:2px; padding:0 8px; color:var(--dsw-alias-label-tertiary); font-size:12px; font-weight:600; letter-spacing:.02em; text-transform:uppercase; }\n.ya-block-label-toggle { flex:none; width:20px; height:20px; margin-left:auto; border:0; border-radius:6px; padding:0; display:inline-flex; align-items:center; justify-content:center; background:transparent; color:var(--dsw-alias-label-tertiary); cursor:pointer; transition:transform 180ms ease-out; }\n.ya-block-label-toggle:hover { background:var(--dsw-alias-interactive-bg-hover); color:var(--dsw-alias-label-secondary); }\n.ya-block-label-toggle.ya-collapsed { transform:rotate(-90deg); }\n.ya-date-group-label { height:26px; display:flex; align-items:center; padding:0 8px; color:var(--dsw-alias-label-tertiary); font-size:12px; font-weight:600; letter-spacing:.02em; }\n.ya-breadcrumb { flex:none; height:34px; display:flex; align-items:center; gap:2px; padding:0 6px; color:var(--dsw-alias-label-tertiary); font-size:13px; }\n.ya-crumb { border:0; padding:4px 3px; border-radius:6px; background:transparent; color:inherit; font:inherit; cursor:default; min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }\nbutton.ya-crumb:hover { background:var(--dsw-alias-interactive-bg-hover); color:var(--dsw-alias-label-primary); cursor:pointer; }\n.ya-scroll { flex:1; min-height:0; overflow-y:auto; padding-bottom:12px; }\n.ya-row { position:relative; min-height:34px; display:flex; align-items:center; gap:6px; margin:1px 0; padding:0 7px; border-radius:9px; box-sizing:border-box; color:var(--dsw-alias-label-primary); cursor:pointer; user-select:none; }\n.ya-row:hover, .ya-row.ya-menu-open { background:var(--dsw-alias-interactive-bg-hover); }\n.ya-row.ya-selected { background:var(--dsw-alias-interactive-bg-selected); }\n.ya-workspace-row { min-height:40px; }\n.ya-row-main { flex:1; min-width:0; display:flex; flex-direction:column; justify-content:center; }\n.ya-row-line { display:flex; align-items:center; min-width:0; gap:6px; }\n.ya-row-title { flex:1; min-width:0; overflow:hidden; white-space:nowrap; font-size:13px; line-height:18px; -webkit-mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent 100%); mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent 100%); }\n.ya-row-meta { flex:none; color:var(--dsw-alias-label-tertiary); font-size:11px; white-space:nowrap; }\n.ya-workspace-path { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--dsw-alias-label-tertiary); font-size:11px; line-height:15px; }\n.ya-row-actions { flex:none; display:flex; align-items:center; gap:2px; opacity:0; pointer-events:none; transition:opacity 120ms ease-out; }\n.ya-row:hover .ya-row-actions, .ya-menu-open .ya-row-actions { opacity:1; pointer-events:auto; }\n.ya-status-slot { flex:none; width:16px; height:16px; display:inline-flex; align-items:center; justify-content:center; color:var(--dsw-alias-label-tertiary); }\n.ya-recent .ya-row { min-height:31px; }\n.ya-search-workspace { color:var(--dsw-alias-label-tertiary); font-size:11px; line-height:15px; overflow:hidden; white-space:nowrap; -webkit-mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent 100%); mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent 100%); }\n.ya-empty, .ya-status { padding:18px 10px; color:var(--dsw-alias-label-tertiary); text-align:center; font-size:13px; }\n.ya-warning { color:var(--dsw-alias-status-warning); }\n.ya-rename-input { width:100%; height:38px; box-sizing:border-box; border:1px solid var(--dsw-alias-border-l2); border-radius:9px; padding:0 11px; background:transparent; color:var(--dsw-alias-label-primary); outline:none; }\n.ya-error { margin-top:8px; color:var(--dsw-alias-status-error); font-size:12px; }\n.ya-rail .ya-section-header { padding-left:0; margin-bottom:12px; }\n.ya-rail .ya-icon-button, .ya-rail .ya-search { width:36px; height:36px; padding:0; margin:0 0 12px; border-color:transparent; background:transparent; }\n.ya-rail .ya-search { justify-content:center; }\n.ya-rail .ya-search-icon { cursor:pointer; color:var(--dsw-alias-label-primary); }\n.ya-picker-error { color:var(--dsw-alias-status-error); white-space:pre-wrap; }\n.ya-action-mode-toggle.ya-action-mode-delete { color:var(--dsw-alias-state-error-primary); }\n.ya-action-mode-toggle.ya-action-mode-delete:hover { background:var(--dsw-alias-interactive-bg-hover-danger); }\n@keyframes ya-slide-in-forward { from { opacity:0; transform:translateX(10px); } to { opacity:1; transform:translateX(0); } }\n@keyframes ya-slide-in-backward { from { opacity:0; transform:translateX(-10px); } to { opacity:1; transform:translateX(0); } }\n.ya-level-enter-forward { animation:ya-slide-in-forward 180ms ease-out; }\n.ya-level-enter-backward { animation:ya-slide-in-backward 180ms ease-out; }\n.ya-unread-dot { position:relative; flex:none; width:10px; height:10px; }\n.ya-unread-dot::before { content:''; position:absolute; inset:0; border-radius:50%; background:var(--dsw-static-deepseek-450); opacity:.1; }\n.ya-unread-dot::after { content:''; position:absolute; inset:20%; border-radius:50%; background:var(--dsw-static-deepseek-450); }\n.ya-row.ya-unread .ya-row-title { font-weight:600; }\n.ya-pin-mark { flex:none; display:inline-flex; color:var(--dsw-alias-label-tertiary); }\n.ya-row.ya-pinned .ya-pin-mark { color:var(--dsw-alias-label-secondary); }\n";
|
|
3
3
|
/** Install the stylesheet and return its disposer. */
|
|
4
4
|
export declare function installStyles(): () => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huanlin/dsh-plugin-ya-workspace-sidebar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -50,21 +50,22 @@
|
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
|
-
"@deepseek-ai/cordis": "^0.1
|
|
54
|
-
"@deepseek-ai/dsh-api-remotes": "^0.1.
|
|
55
|
-
"@deepseek-ai/dsh-api-session-controller": "^0.1.
|
|
56
|
-
"@deepseek-ai/dsh-api-workspace-controller": "^0.1.
|
|
57
|
-
"@deepseek-ai/dsh-client-locale": "^0.1.
|
|
58
|
-
"@deepseek-ai/dsh-client-
|
|
59
|
-
"@deepseek-ai/dsh-client-ui-
|
|
60
|
-
"@deepseek-ai/dsh-client-ui-
|
|
61
|
-
"@deepseek-ai/dsh-client-ui-
|
|
62
|
-
"@deepseek-ai/dsh-client-ui-
|
|
63
|
-
"@deepseek-ai/dsh-client-ui-
|
|
64
|
-
"@deepseek-ai/dsh-client-ui-
|
|
65
|
-
"@deepseek-ai/dsh-client-ui-
|
|
66
|
-
"@deepseek-ai/dsh-
|
|
67
|
-
"@deepseek-ai/dsh-
|
|
53
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
54
|
+
"@deepseek-ai/dsh-api-remotes": "^0.1.7-rc.1",
|
|
55
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.1",
|
|
56
|
+
"@deepseek-ai/dsh-api-workspace-controller": "^0.1.7-rc.1",
|
|
57
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.7-rc.1",
|
|
58
|
+
"@deepseek-ai/dsh-client-store": "^0.1.7-rc.1",
|
|
59
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-rc.1",
|
|
60
|
+
"@deepseek-ai/dsh-client-ui-layout": "^0.1.7-rc.1",
|
|
61
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.7-rc.1",
|
|
62
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-rc.1",
|
|
63
|
+
"@deepseek-ai/dsh-client-ui-session": "^0.1.7-rc.1",
|
|
64
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "^0.1.7-rc.1",
|
|
65
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.7-rc.1",
|
|
66
|
+
"@deepseek-ai/dsh-client-ui-workspace": "^0.1.7-rc.1",
|
|
67
|
+
"@deepseek-ai/dsh-session": "^0.1.7-rc.1",
|
|
68
|
+
"@deepseek-ai/dsh-typert-protocol": "^0.1.7-rc.1",
|
|
68
69
|
"react": "^18.2.0"
|
|
69
70
|
},
|
|
70
71
|
"peerDependenciesMeta": {
|
|
@@ -83,6 +84,9 @@
|
|
|
83
84
|
"@deepseek-ai/dsh-client-locale": {
|
|
84
85
|
"optional": true
|
|
85
86
|
},
|
|
87
|
+
"@deepseek-ai/dsh-client-store": {
|
|
88
|
+
"optional": true
|
|
89
|
+
},
|
|
86
90
|
"@deepseek-ai/dsh-client-ui-conversation": {
|
|
87
91
|
"optional": true
|
|
88
92
|
},
|
|
@@ -124,6 +128,7 @@
|
|
|
124
128
|
"@deepseek-ai/dsh-api-session-controller": "link:D:/Projects/deepseek-harness/dsh/packages/api/session-controller",
|
|
125
129
|
"@deepseek-ai/dsh-api-workspace-controller": "link:D:/Projects/deepseek-harness/dsh/packages/api/workspace-controller",
|
|
126
130
|
"@deepseek-ai/dsh-client-locale": "link:D:/Projects/deepseek-harness/dsh/packages/client/locale",
|
|
131
|
+
"@deepseek-ai/dsh-client-store": "link:D:/Projects/deepseek-harness/dsh/packages/client/store",
|
|
127
132
|
"@deepseek-ai/dsh-client-ui-conversation": "link:D:/Projects/deepseek-harness/dsh/packages/client/ui-conversation",
|
|
128
133
|
"@deepseek-ai/dsh-client-ui-layout": "link:D:/Projects/deepseek-harness/dsh/packages/client/ui-layout",
|
|
129
134
|
"@deepseek-ai/dsh-client-ui-primitives": "link:D:/Projects/deepseek-harness/dsh/packages/client/ui-primitives",
|