dsh-group-status 0.3.0 → 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.
- package/CHANGELOG.md +12 -0
- package/README.en.md +6 -6
- package/README.md +6 -6
- package/lib/client.js +1122 -183
- package/lib/client.js.map +1 -1
- package/lib/types/client/contract/slots.d.ts +39 -21
- package/lib/types/client/contract/slots.d.ts.map +1 -1
- package/lib/types/client/contract/slots.js.map +1 -1
- package/lib/types/client/contract/toast.d.ts +67 -0
- package/lib/types/client/contract/toast.d.ts.map +1 -0
- package/lib/types/client/contract/toast.js +2 -0
- package/lib/types/client/contract/toast.js.map +1 -0
- package/lib/types/client/index.d.ts +6 -3
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +48 -13
- package/lib/types/client/index.js.map +1 -1
- package/lib/types/client/locales.d.ts +14 -0
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/locales.js +14 -0
- package/lib/types/client/locales.js.map +1 -1
- package/lib/types/client/navigation.d.ts +45 -12
- package/lib/types/client/navigation.d.ts.map +1 -1
- package/lib/types/client/navigation.js +102 -26
- package/lib/types/client/navigation.js.map +1 -1
- package/lib/types/client/rows/Rows.d.ts.map +1 -1
- package/lib/types/client/rows/Rows.js +4 -4
- package/lib/types/client/rows/Rows.js.map +1 -1
- package/lib/types/client/rows/WorkspaceBrowser.d.ts +1 -1
- package/lib/types/client/rows/WorkspaceBrowser.d.ts.map +1 -1
- package/lib/types/client/rows/WorkspaceBrowser.js +54 -50
- package/lib/types/client/rows/WorkspaceBrowser.js.map +1 -1
- package/lib/types/client/session-actions/ArchiveSession.js +1 -1
- package/lib/types/client/session-actions/ArchiveSession.js.map +1 -1
- package/lib/types/client/session-actions/ForkSession.d.ts +5 -4
- package/lib/types/client/session-actions/ForkSession.d.ts.map +1 -1
- package/lib/types/client/session-actions/ForkSession.js +7 -4
- package/lib/types/client/session-actions/ForkSession.js.map +1 -1
- package/lib/types/client/session-actions/PinSession.js +1 -1
- package/lib/types/client/session-actions/PinSession.js.map +1 -1
- package/lib/types/client/session-actions/RowActionToast.d.ts +5 -8
- package/lib/types/client/session-actions/RowActionToast.d.ts.map +1 -1
- package/lib/types/client/session-actions/RowActionToast.js +10 -49
- package/lib/types/client/session-actions/RowActionToast.js.map +1 -1
- package/lib/types/client/session-actions/SessionId.d.ts +8 -0
- package/lib/types/client/session-actions/SessionId.d.ts.map +1 -0
- package/lib/types/client/session-actions/SessionId.js +16 -0
- package/lib/types/client/session-actions/SessionId.js.map +1 -0
- package/lib/types/client/session-watermarks.d.ts +30 -0
- package/lib/types/client/session-watermarks.d.ts.map +1 -0
- package/lib/types/client/session-watermarks.js +54 -0
- package/lib/types/client/session-watermarks.js.map +1 -0
- package/lib/types/client/shortcuts.d.ts +2 -7
- package/lib/types/client/shortcuts.d.ts.map +1 -1
- package/lib/types/client/shortcuts.js +7 -11
- package/lib/types/client/shortcuts.js.map +1 -1
- package/lib/types/client/toast/Toast.d.ts +41 -0
- package/lib/types/client/toast/Toast.d.ts.map +1 -0
- package/lib/types/client/toast/Toast.js +44 -0
- package/lib/types/client/toast/Toast.js.map +1 -0
- package/lib/types/client/toast/register.d.ts +11 -0
- package/lib/types/client/toast/register.d.ts.map +1 -0
- package/lib/types/client/toast/register.js +162 -0
- package/lib/types/client/toast/register.js.map +1 -0
- package/package.json +33 -30
- package/lib/types/client/legacy/bridge.d.ts +0 -30
- package/lib/types/client/legacy/bridge.d.ts.map +0 -1
- package/lib/types/client/legacy/bridge.js +0 -58
- package/lib/types/client/legacy/bridge.js.map +0 -1
- package/lib/types/client/legacy/register-legacy-facets.d.ts +0 -14
- package/lib/types/client/legacy/register-legacy-facets.d.ts.map +0 -1
- package/lib/types/client/legacy/register-legacy-facets.js +0 -77
- package/lib/types/client/legacy/register-legacy-facets.js.map +0 -1
- package/lib/types/client/legacy/schedule.d.ts +0 -49
- package/lib/types/client/legacy/schedule.d.ts.map +0 -1
- package/lib/types/client/legacy/schedule.js +0 -73
- package/lib/types/client/legacy/schedule.js.map +0 -1
- package/lib/types/client/legacy/store-source.d.ts +0 -78
- package/lib/types/client/legacy/store-source.d.ts.map +0 -1
- package/lib/types/client/legacy/store-source.js +0 -82
- package/lib/types/client/legacy/store-source.js.map +0 -1
- package/lib/types/client/legacy/waiting-review.d.ts +0 -85
- package/lib/types/client/legacy/waiting-review.d.ts.map +0 -1
- package/lib/types/client/legacy/waiting-review.js +0 -179
- package/lib/types/client/legacy/waiting-review.js.map +0 -1
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
/** The `shell.overlay` entry: dispatch the current Workspace notice to its keyed presentation. */
|
|
1
2
|
import type { RowToastProps } from '../contract/slots.ts';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* reason on the same hold, or a plain warning for a failed pin, an archived
|
|
7
|
-
* row that was clicked, or default Workspace creation.
|
|
8
|
-
* @param props - the notice hook, the shared viewing store, the notice dismissal, the two archived-notice actions, and the locale seat.
|
|
9
|
-
* @returns the notice on display, or null.
|
|
4
|
+
* Dispatch the current notice without interpreting its business payload.
|
|
5
|
+
* @param props - Current notice, dismissal, and the declared keyed renderer.
|
|
6
|
+
* @returns the selected notice presentation, or nothing.
|
|
10
7
|
*/
|
|
11
|
-
export declare function RowActionToast({ useToast,
|
|
8
|
+
export declare function RowActionToast({ useToast, dismissToast, renderSlot }: RowToastProps): import("react").ReactNode;
|
|
12
9
|
//# sourceMappingURL=RowActionToast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowActionToast.d.ts","sourceRoot":"","sources":["../../../../src/client/session-actions/RowActionToast.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RowActionToast.d.ts","sourceRoot":"","sources":["../../../../src/client/session-actions/RowActionToast.tsx"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,aAAa,6BAOnF"}
|
|
@@ -1,54 +1,15 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Dispatch the current notice without interpreting its business payload.
|
|
3
|
+
* @param props - Current notice, dismissal, and the declared keyed renderer.
|
|
4
|
+
* @returns the selected notice presentation, or nothing.
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* Hold for the notices that take longer to read than a one-line warning: the
|
|
10
|
-
* actionable archived notice (two buttons to react to) and a refused Session
|
|
11
|
-
* creation, which quotes the Host's reason.
|
|
12
|
-
*/
|
|
13
|
-
const LONG_TOAST_HOLD_MS = 6000;
|
|
14
|
-
/**
|
|
15
|
-
* Render the current notice: the archived and stopped-and-archived notices
|
|
16
|
-
* with their undo action — plus the show-archived action while archived rows
|
|
17
|
-
* are hidden — on a 6 s hold, a refused Session creation with the Host's
|
|
18
|
-
* reason on the same hold, or a plain warning for a failed pin, an archived
|
|
19
|
-
* row that was clicked, or default Workspace creation.
|
|
20
|
-
* @param props - the notice hook, the shared viewing store, the notice dismissal, the two archived-notice actions, and the locale seat.
|
|
21
|
-
* @returns the notice on display, or null.
|
|
22
|
-
*/
|
|
23
|
-
export function RowActionToast({ useToast, useStore, dismissToast, undoArchive, showArchived, t }) {
|
|
24
|
-
const toast = useToast(current => current);
|
|
25
|
-
const archivedRowsVisible = useStore(state => (state.archivedFilter ?? 'default') !== 'default');
|
|
26
|
-
if (toast === null)
|
|
6
|
+
export function RowActionToast({ useToast, dismissToast, renderSlot }) {
|
|
7
|
+
const notice = useToast(current => current);
|
|
8
|
+
if (notice === null)
|
|
27
9
|
return null;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
...archivedRowsVisible ? [] : [
|
|
33
|
-
{ prefix: t('toast.archivedOr'), label: t('toast.archivedFilter'), onClick: () => { dismissToast(); showArchived(); } },
|
|
34
|
-
],
|
|
35
|
-
], onDone: dismissToast }, `toast-${String(toast.seq)}`));
|
|
36
|
-
}
|
|
37
|
-
if (toast.kind === 'createFailed') {
|
|
38
|
-
return (_jsx(Toast, { text: t('toast.createFailed', { message: toast.message }), icon: _jsx(IconWarningOutlineRegular, {}), holdMs: LONG_TOAST_HOLD_MS, onDone: dismissToast }, `toast-${String(toast.seq)}`));
|
|
39
|
-
}
|
|
40
|
-
return (_jsx(Toast, { text: plainNoticeText(toast, t), icon: _jsx(IconWarningOutlineRegular, {}), onDone: dismissToast }, `toast-${String(toast.seq)}`));
|
|
41
|
-
}
|
|
42
|
-
/** The copy of one plain warning, keyed by the notice kind the union closes over. */
|
|
43
|
-
function plainNoticeText(toast, t) {
|
|
44
|
-
switch (toast.kind) {
|
|
45
|
-
case 'pinFailed': return t('toast.pinFailed');
|
|
46
|
-
case 'unpinFailed': return t('toast.unpinFailed');
|
|
47
|
-
case 'defaultWorkspaceFailed': return t('defaultWorkspace.failed');
|
|
48
|
-
case 'archivedNotOpenable': return t('toast.archivedNotOpenable');
|
|
49
|
-
/* v8 ignore next 2 -- closed-union backstop; only reached if a notice kind is forged */
|
|
50
|
-
default:
|
|
51
|
-
return assertNever(toast);
|
|
52
|
-
}
|
|
10
|
+
return renderSlot('workspace.toast', {
|
|
11
|
+
...notice,
|
|
12
|
+
dismissToast,
|
|
13
|
+
}, { entryKey: notice.kind });
|
|
53
14
|
}
|
|
54
15
|
//# sourceMappingURL=RowActionToast.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowActionToast.js","sourceRoot":"","sources":["../../../../src/client/session-actions/RowActionToast.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RowActionToast.js","sourceRoot":"","sources":["../../../../src/client/session-actions/RowActionToast.tsx"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAiB;IAClF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAC3C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,OAAO,UAAU,CAAC,iBAAiB,EAAE;QACnC,GAAG,MAAM;QACT,YAAY;KACb,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;AAC/B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SessionIdInjected, SessionMenuItemProps } from '../contract/slots.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Copy the complete ID after dismissing the row menu.
|
|
4
|
+
* @param props - row identity, menu dismissal, clipboard action, and locale.
|
|
5
|
+
* @returns the final built-in menu item.
|
|
6
|
+
*/
|
|
7
|
+
export declare function SessionIdMenuItem({ sessionId, useMenuOpenState, copySessionId, t, }: SessionMenuItemProps<SessionIdInjected>): import("react").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=SessionId.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionId.d.ts","sourceRoot":"","sources":["../../../../src/client/session-actions/SessionId.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAEnF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,GAC9C,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,+BAazC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** The copy Session ID action: one `sidebar.workspaces.session.menu.item` row. */
|
|
3
|
+
import { IconCopyOutlineRegular, MenuItemButton } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
|
+
/**
|
|
5
|
+
* Copy the complete ID after dismissing the row menu.
|
|
6
|
+
* @param props - row identity, menu dismissal, clipboard action, and locale.
|
|
7
|
+
* @returns the final built-in menu item.
|
|
8
|
+
*/
|
|
9
|
+
export function SessionIdMenuItem({ sessionId, useMenuOpenState, copySessionId, t, }) {
|
|
10
|
+
const [, setMenuOpen] = useMenuOpenState();
|
|
11
|
+
return (_jsx(MenuItemButton, { icon: _jsx(IconCopyOutlineRegular, {}), onSelect: () => {
|
|
12
|
+
setMenuOpen(false);
|
|
13
|
+
void copySessionId(sessionId);
|
|
14
|
+
}, children: t('menu.sessionId') }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=SessionId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionId.js","sourceRoot":"","sources":["../../../../src/client/session-actions/SessionId.tsx"],"names":[],"mappings":";AAAA,kFAAkF;AAClF,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AAG9F;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,GACL;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,gBAAgB,EAAE,CAAA;IAC1C,OAAO,CACL,KAAC,cAAc,IACb,IAAI,EAAE,KAAC,sBAAsB,KAAG,EAChC,QAAQ,EAAE,GAAG,EAAE;YACb,WAAW,CAAC,KAAK,CAAC,CAAA;YAClB,KAAK,aAAa,CAAC,SAAS,CAAC,CAAA;QAC/B,CAAC,YAEA,CAAC,CAAC,gBAAgB,CAAC,GACL,CAClB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Non-blank Session rows visible per Workspace while no Session raises its watermark. */
|
|
2
|
+
export declare const SESSION_WATERMARK_BASE = 5;
|
|
3
|
+
/** Highest watermark that attention-bearing Sessions raise automatically; Show more and search reveals may exceed it. */
|
|
4
|
+
export declare const SESSION_WATERMARK_AUTO_MAX = 50;
|
|
5
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
6
|
+
import type { SessionNode } from './tree.ts';
|
|
7
|
+
/** The blank row plus the first `watermark` non-blank rows, in list order. */
|
|
8
|
+
export declare function watermarkRows(sessions: readonly SessionNode[], watermark: number): {
|
|
9
|
+
/** The rows this watermark makes visible. */
|
|
10
|
+
rows: readonly SessionNode[];
|
|
11
|
+
/** Non-blank rows beyond the watermark, capped by the row list's own hidden accounting. */
|
|
12
|
+
hiddenCount: number;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Smallest watermark that covers every non-blank row within the automatic maximum that is running, has a running
|
|
16
|
+
* child, awaits the user, carries an unread completion, or is current, and the reveal target at any position.
|
|
17
|
+
* @param sessions - one group's ordered Session rows.
|
|
18
|
+
* @param current - Session retained by the main view, if the sidebar is the active surface.
|
|
19
|
+
* @param revealSessionId - Session selected from search and required to be visible.
|
|
20
|
+
* @returns the group's baseline non-blank row count.
|
|
21
|
+
*/
|
|
22
|
+
export declare function requiredWatermark(sessions: readonly SessionNode[], current: SessionId | undefined, revealSessionId: SessionId | undefined): number;
|
|
23
|
+
/**
|
|
24
|
+
* Raise each listed group's watermark to its requirement; returns `marks` itself when nothing rises.
|
|
25
|
+
* @param marks - watermarks stored by the current browser tree.
|
|
26
|
+
* @param required - required baselines, in group order.
|
|
27
|
+
* @returns either the unchanged input or a new object containing only raised groups.
|
|
28
|
+
*/
|
|
29
|
+
export declare function raiseWatermarks(marks: Readonly<Record<string, number>>, required: Iterable<readonly [string, number]>): Readonly<Record<string, number>>;
|
|
30
|
+
//# sourceMappingURL=session-watermarks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-watermarks.d.ts","sourceRoot":"","sources":["../../../src/client/session-watermarks.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,eAAO,MAAM,sBAAsB,IAAI,CAAA;AACvC,yHAAyH;AACzH,eAAO,MAAM,0BAA0B,KAAK,CAAA;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,8EAA8E;AAC9E,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,SAAS,EAAE,MAAM,GAChB;IACD,6CAA6C;IAC7C,IAAI,EAAE,SAAS,WAAW,EAAE,CAAA;IAC5B,2FAA2F;IAC3F,WAAW,EAAE,MAAM,CAAA;CACpB,CAQA;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,eAAe,EAAE,SAAS,GAAG,SAAS,GACrC,MAAM,CAYR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACvC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC5C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAQlC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Non-blank Session rows visible per Workspace while no Session raises its watermark. */
|
|
2
|
+
export const SESSION_WATERMARK_BASE = 5;
|
|
3
|
+
/** Highest watermark that attention-bearing Sessions raise automatically; Show more and search reveals may exceed it. */
|
|
4
|
+
export const SESSION_WATERMARK_AUTO_MAX = 50;
|
|
5
|
+
/** The blank row plus the first `watermark` non-blank rows, in list order. */
|
|
6
|
+
export function watermarkRows(sessions, watermark) {
|
|
7
|
+
let count = 0;
|
|
8
|
+
const rows = sessions.filter((session) => {
|
|
9
|
+
if (session.blank)
|
|
10
|
+
return true;
|
|
11
|
+
count += 1;
|
|
12
|
+
return count <= watermark;
|
|
13
|
+
});
|
|
14
|
+
return { rows, hiddenCount: sessions.length - rows.length };
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Smallest watermark that covers every non-blank row within the automatic maximum that is running, has a running
|
|
18
|
+
* child, awaits the user, carries an unread completion, or is current, and the reveal target at any position.
|
|
19
|
+
* @param sessions - one group's ordered Session rows.
|
|
20
|
+
* @param current - Session retained by the main view, if the sidebar is the active surface.
|
|
21
|
+
* @param revealSessionId - Session selected from search and required to be visible.
|
|
22
|
+
* @returns the group's baseline non-blank row count.
|
|
23
|
+
*/
|
|
24
|
+
export function requiredWatermark(sessions, current, revealSessionId) {
|
|
25
|
+
let index = 0;
|
|
26
|
+
let required = 0;
|
|
27
|
+
for (const session of sessions) {
|
|
28
|
+
if (session.blank)
|
|
29
|
+
continue;
|
|
30
|
+
index += 1;
|
|
31
|
+
if ((index <= SESSION_WATERMARK_AUTO_MAX
|
|
32
|
+
&& (session.running || session.runningSubagentCount > 0
|
|
33
|
+
|| session.pendingInteraction !== undefined || session.completed || session.id === current))
|
|
34
|
+
|| session.id === revealSessionId)
|
|
35
|
+
required = index;
|
|
36
|
+
}
|
|
37
|
+
return required;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Raise each listed group's watermark to its requirement; returns `marks` itself when nothing rises.
|
|
41
|
+
* @param marks - watermarks stored by the current browser tree.
|
|
42
|
+
* @param required - required baselines, in group order.
|
|
43
|
+
* @returns either the unchanged input or a new object containing only raised groups.
|
|
44
|
+
*/
|
|
45
|
+
export function raiseWatermarks(marks, required) {
|
|
46
|
+
let raised = marks;
|
|
47
|
+
for (const [key, watermark] of required) {
|
|
48
|
+
if (watermark > (raised[key] ?? SESSION_WATERMARK_BASE)) {
|
|
49
|
+
raised = { ...raised, [key]: watermark };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return raised;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=session-watermarks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-watermarks.js","sourceRoot":"","sources":["../../../src/client/session-watermarks.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA;AACvC,yHAAyH;AACzH,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAA;AAK5C,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAC3B,QAAgC,EAChC,SAAiB;IAOjB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QACvC,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QAC9B,KAAK,IAAI,CAAC,CAAA;QACV,OAAO,KAAK,IAAI,SAAS,CAAA;IAC3B,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgC,EAChC,OAA8B,EAC9B,eAAsC;IAEtC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK;YAAE,SAAQ;QAC3B,KAAK,IAAI,CAAC,CAAA;QACV,IAAI,CAAC,KAAK,IAAI,0BAA0B;eACnC,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,oBAAoB,GAAG,CAAC;mBAClD,OAAO,CAAC,kBAAkB,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;eAC3F,OAAO,CAAC,EAAE,KAAK,eAAe;YAAE,QAAQ,GAAG,KAAK,CAAA;IACvD,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAuC,EACvC,QAA6C;IAE7C,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC;QACxC,IAAI,SAAS,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,EAAE,CAAC;YACxD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAA;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -12,10 +12,6 @@ export interface WorkspaceShortcutState {
|
|
|
12
12
|
readonly sessionId: SessionId;
|
|
13
13
|
readonly currentTitle: string;
|
|
14
14
|
} | null;
|
|
15
|
-
readonly forkError: {
|
|
16
|
-
readonly reason: 'unavailable' | 'failed';
|
|
17
|
-
readonly seq: number;
|
|
18
|
-
} | null;
|
|
19
15
|
}
|
|
20
16
|
interface WorkspaceShortcutControls {
|
|
21
17
|
state: SnapshotStore<WorkspaceShortcutState>;
|
|
@@ -25,8 +21,6 @@ interface WorkspaceShortcutControls {
|
|
|
25
21
|
directoryBusy: (busy: boolean) => void;
|
|
26
22
|
rename: (sessionId: SessionId, currentTitle: string) => void;
|
|
27
23
|
closeRename: () => void;
|
|
28
|
-
forkFailed: (reason: 'unavailable' | 'failed') => void;
|
|
29
|
-
dismissForkError: () => void;
|
|
30
24
|
}
|
|
31
25
|
/**
|
|
32
26
|
* Create the private browser request source shared by commands and controls.
|
|
@@ -40,7 +34,8 @@ export declare function createWorkspaceShortcutControls(): WorkspaceShortcutCont
|
|
|
40
34
|
* @param navigation - session creation and forking from the pointer controls' navigation service.
|
|
41
35
|
* @param controls - browser-owned opening requests.
|
|
42
36
|
* @param archiveSession - shared archive action, including running-work confirmation and notices.
|
|
37
|
+
* @param reportForkFailure - publish a classified failure through the frame-wide notice channel.
|
|
43
38
|
*/
|
|
44
|
-
export declare function installWorkspaceShortcuts(ctx: Context, navigation: Pick<UiWorkspace, 'startSession' | 'forkSession'>, controls: ReturnType<typeof createWorkspaceShortcutControls>, archiveSession: (sessionId: SessionId) => void): void;
|
|
39
|
+
export declare function installWorkspaceShortcuts(ctx: Context, navigation: Pick<UiWorkspace, 'startSession' | 'forkSession'>, controls: ReturnType<typeof createWorkspaceShortcutControls>, archiveSession: (sessionId: SessionId) => void, reportForkFailure: (reason: 'unavailable' | 'failed') => void): void;
|
|
45
40
|
export {};
|
|
46
41
|
//# sourceMappingURL=shortcuts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcuts.d.ts","sourceRoot":"","sources":["../../../src/client/shortcuts.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,qEAAqE;AACrE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"shortcuts.d.ts","sourceRoot":"","sources":["../../../src/client/shortcuts.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,qEAAqE;AACrE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAC/F;AAED,UAAU,yBAAyB;IACjC,KAAK,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAA;IAC5C,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,GAAG,EAAE,MAAM,IAAI,CAAA;IACf,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5D,WAAW,EAAE,MAAM,IAAI,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,yBAAyB,CAe3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,aAAa,CAAC,EAC7D,QAAQ,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,EAC5D,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,EAC9C,iBAAiB,EAAE,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,KAAK,IAAI,GAC5D,IAAI,CAsDN"}
|
|
@@ -5,9 +5,8 @@ import { createSnapshotStore } from '@deepseek-ai/dsh-client-store';
|
|
|
5
5
|
*/
|
|
6
6
|
export function createWorkspaceShortcutControls() {
|
|
7
7
|
const state = createSnapshotStore({
|
|
8
|
-
searchRequest: 0, addRequested: false, directoryBusy: false, renameTarget: null,
|
|
8
|
+
searchRequest: 0, addRequested: false, directoryBusy: false, renameTarget: null,
|
|
9
9
|
});
|
|
10
|
-
let forkErrorSeq = 0;
|
|
11
10
|
return {
|
|
12
11
|
state,
|
|
13
12
|
search: () => { state.set({ ...state.getSnapshot(), searchRequest: state.getSnapshot().searchRequest + 1 }); },
|
|
@@ -18,11 +17,6 @@ export function createWorkspaceShortcutControls() {
|
|
|
18
17
|
state.set({ ...state.getSnapshot(), renameTarget: { sessionId, currentTitle } });
|
|
19
18
|
},
|
|
20
19
|
closeRename: () => { state.set({ ...state.getSnapshot(), renameTarget: null }); },
|
|
21
|
-
forkFailed: (reason) => {
|
|
22
|
-
forkErrorSeq += 1;
|
|
23
|
-
state.set({ ...state.getSnapshot(), forkError: { reason, seq: forkErrorSeq } });
|
|
24
|
-
},
|
|
25
|
-
dismissForkError: () => { state.set({ ...state.getSnapshot(), forkError: null }); },
|
|
26
20
|
};
|
|
27
21
|
}
|
|
28
22
|
/**
|
|
@@ -32,8 +26,9 @@ export function createWorkspaceShortcutControls() {
|
|
|
32
26
|
* @param navigation - session creation and forking from the pointer controls' navigation service.
|
|
33
27
|
* @param controls - browser-owned opening requests.
|
|
34
28
|
* @param archiveSession - shared archive action, including running-work confirmation and notices.
|
|
29
|
+
* @param reportForkFailure - publish a classified failure through the frame-wide notice channel.
|
|
35
30
|
*/
|
|
36
|
-
export function installWorkspaceShortcuts(ctx, navigation, controls, archiveSession) {
|
|
31
|
+
export function installWorkspaceShortcuts(ctx, navigation, controls, archiveSession, reportForkFailure) {
|
|
37
32
|
const t = ctx.locale.bind('workspace');
|
|
38
33
|
const current = () => Object.values(ctx.sessions.list.getSnapshot().byId)
|
|
39
34
|
.find(row => (row.retainedBy.mainView ?? 0) > 0);
|
|
@@ -70,9 +65,10 @@ export function installWorkspaceShortcuts(ctx, navigation, controls, archiveSess
|
|
|
70
65
|
return { status: 'handled', run: () => {
|
|
71
66
|
void navigation.forkSession(target.id).catch((error) => {
|
|
72
67
|
// Client plugin bundles do not share error-class identity.
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
68
|
+
const forkError = error instanceof Error && error.name === 'SessionForkError'
|
|
69
|
+
? error : undefined;
|
|
70
|
+
const unavailable = forkError?.rpcError.code === 'session/fork-unavailable';
|
|
71
|
+
reportForkFailure(unavailable ? 'unavailable' : 'failed');
|
|
76
72
|
if (!unavailable)
|
|
77
73
|
console.warn('session fork rejected:', error);
|
|
78
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../src/client/shortcuts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"shortcuts.js","sourceRoot":"","sources":["../../../src/client/shortcuts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAwBnE;;;GAGG;AACH,MAAM,UAAU,+BAA+B;IAC7C,MAAM,KAAK,GAAG,mBAAmB,CAAyB;QACxD,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI;KAChF,CAAC,CAAA;IACF,OAAO;QACL,KAAK;QACL,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC;QAC7G,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;QAClI,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA,CAAC,CAAC;QAC9E,aAAa,EAAE,CAAC,IAAa,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;QAChG,MAAM,EAAE,CAAC,SAAoB,EAAE,YAAoB,EAAE,EAAE;YACrD,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,CAAA;QAClF,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;KACjF,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,GAAY,EACZ,UAA6D,EAC7D,QAA4D,EAC5D,cAA8C,EAC9C,iBAA6D;IAE7D,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;SACtE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAClD,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,MAAM,KAAK,CAAC;QACxF,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACxB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACnF,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,KAAmB,EAAE,OAAiB,EAAE,IAAY,EAChF,SAA0C,EAAE,YAA6C,EAAE,OAAmC,EAAQ,EAAE;QACxI,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;YACtC,EAAE,EAAE,EAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;gBACrD,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClH,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE;aACjG;YACD,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO;SACnD,CAAC,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAA;IACD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAClH,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,YAAY,EAAE,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EACtH,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACtD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAC3H,GAAG,EAAE;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IACnG,CAAC,CAAC,CAAA;IACJ,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE;QAC1I,MAAM,MAAM,GAAG,OAAO,EAAE,CAAA;QACxB,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,aAAa,KAAK,IAAI;YAChI,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,oBAAoB,CAAC,EAAE;YACxD,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC,EAAE,CAAA;IAClG,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE;QACtH,MAAM,MAAM,GAAG,OAAO,EAAE,CAAA;QACxB,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAA;QACvF,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,0BAA0B,CAAC,EAAE,CAAA;QACrF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE;gBACpC,KAAK,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBAC9D,2DAA2D;oBAC3D,MAAM,SAAS,GAAG,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB;wBAC3E,CAAC,CAAC,KAAyB,CAAC,CAAC,CAAC,SAAS,CAAA;oBACzC,MAAM,WAAW,GAAG,SAAS,EAAE,QAAQ,CAAC,IAAI,KAAK,0BAA0B,CAAA;oBAC3E,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;oBACzD,IAAI,CAAC,WAAW;wBAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAA;gBACjE,CAAC,CAAC,CAAA;YACJ,CAAC,EAAE,CAAA;IACL,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE;QACtI,MAAM,MAAM,GAAG,OAAO,EAAE,CAAA;QACxB,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,oBAAoB,CAAC,EAAE;YAClF,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE;oBAC/B,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBAC3B,CAAC,EAAE,CAAA;IACP,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ToastDisplay, ToastOccurrence } from '../contract/toast.ts';
|
|
2
|
+
import type { PropsLocale } from '@deepseek-ai/dsh-client-ui-slots';
|
|
3
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types';
|
|
4
|
+
type Translate = PropsLocale<'workspace'>['t'];
|
|
5
|
+
/** Shape read by the plain keyed entries. */
|
|
6
|
+
interface ToastEntryShape {
|
|
7
|
+
dismissToast: () => void;
|
|
8
|
+
display: (notice: never, t: Translate, dismiss: () => void) => ToastDisplay;
|
|
9
|
+
t: Translate;
|
|
10
|
+
renderFactorySlot: (name: 'workspace.toast.content', props: ToastOccurrence) => unknown;
|
|
11
|
+
seq: number;
|
|
12
|
+
kind: string;
|
|
13
|
+
}
|
|
14
|
+
/** Shape read by the archive keyed entries. */
|
|
15
|
+
interface ArchiveToastShape extends ToastEntryShape {
|
|
16
|
+
sessionId: SessionId;
|
|
17
|
+
useStore: <T>(selector: (state: {
|
|
18
|
+
archivedFilter?: 'default' | 'show' | 'only';
|
|
19
|
+
}) => T) => T;
|
|
20
|
+
filterAction: (t: Translate, dismiss: () => void) => NonNullable<ToastDisplay['actions']>[number];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Render one notice using the shared Factory.
|
|
24
|
+
* @param props - keyed payload, injected display mapping, locale, and Factory renderer.
|
|
25
|
+
* @returns the shared Toast occurrence.
|
|
26
|
+
*/
|
|
27
|
+
export declare function ToastEntry(props: ToastEntryShape): unknown;
|
|
28
|
+
/**
|
|
29
|
+
* Keep the archive filter action reactive without subscribing unrelated notices.
|
|
30
|
+
* @param props - archive notice, display mapping, and the existing viewing store.
|
|
31
|
+
* @returns the shared Toast occurrence with its current actions.
|
|
32
|
+
*/
|
|
33
|
+
export declare function ArchiveToastEntry(props: ArchiveToastShape): unknown;
|
|
34
|
+
/**
|
|
35
|
+
* Present plain display data with the shared primitive's timing and portal.
|
|
36
|
+
* @param props - localized display fields, display identity, and dismissal.
|
|
37
|
+
* @returns one Toast, remounted only for a new display identity.
|
|
38
|
+
*/
|
|
39
|
+
export declare function WorkspaceToast({ seq, text, tone, holdMs, actions, onDone }: ToastOccurrence): import("react").JSX.Element;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=Toast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../src/client/toast/Toast.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EAAE,eAAe,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE/D,KAAK,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAA;AAE9C,6CAA6C;AAC7C,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,YAAY,CAAA;IAC3E,CAAC,EAAE,SAAS,CAAA;IACZ,iBAAiB,EAAE,CAAC,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,eAAe,KAAK,OAAO,CAAA;IACvF,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb;AAED,+CAA+C;AAC/C,UAAU,iBAAkB,SAAQ,eAAe;IACjD,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,cAAc,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5F,YAAY,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;CAClG;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,WAahD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,WAUzD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,eAAe,+BAY3F"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Shared Workspace notice presentation and keyed business adapters. */
|
|
3
|
+
import { Toast, IconWarningOutlineRegular } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
|
+
/**
|
|
5
|
+
* Render one notice using the shared Factory.
|
|
6
|
+
* @param props - keyed payload, injected display mapping, locale, and Factory renderer.
|
|
7
|
+
* @returns the shared Toast occurrence.
|
|
8
|
+
*/
|
|
9
|
+
export function ToastEntry(props) {
|
|
10
|
+
const { dismissToast, display, t, renderFactorySlot, seq } = props;
|
|
11
|
+
const displayFields = display(
|
|
12
|
+
// The keyed dispatcher has already selected this registration by `props.kind`.
|
|
13
|
+
{ ...props }, t, dismissToast);
|
|
14
|
+
return renderFactorySlot('workspace.toast.content', {
|
|
15
|
+
...displayFields,
|
|
16
|
+
seq,
|
|
17
|
+
onDone: dismissToast,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Keep the archive filter action reactive without subscribing unrelated notices.
|
|
22
|
+
* @param props - archive notice, display mapping, and the existing viewing store.
|
|
23
|
+
* @returns the shared Toast occurrence with its current actions.
|
|
24
|
+
*/
|
|
25
|
+
export function ArchiveToastEntry(props) {
|
|
26
|
+
const { dismissToast, display, filterAction, useStore, t, renderFactorySlot, seq } = props;
|
|
27
|
+
const archivedVisible = useStore(state => (state.archivedFilter ?? 'default') !== 'default');
|
|
28
|
+
const fields = display({ ...props }, t, dismissToast);
|
|
29
|
+
return renderFactorySlot('workspace.toast.content', {
|
|
30
|
+
...fields,
|
|
31
|
+
actions: [...fields.actions ?? [], ...(archivedVisible ? [] : [filterAction(t, dismissToast)])],
|
|
32
|
+
seq,
|
|
33
|
+
onDone: dismissToast,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Present plain display data with the shared primitive's timing and portal.
|
|
38
|
+
* @param props - localized display fields, display identity, and dismissal.
|
|
39
|
+
* @returns one Toast, remounted only for a new display identity.
|
|
40
|
+
*/
|
|
41
|
+
export function WorkspaceToast({ seq, text, tone, holdMs, actions, onDone }) {
|
|
42
|
+
return (_jsx(Toast, { text: text, onDone: onDone, ...tone === 'success' ? { tone: 'success' } : {}, ...tone === 'warning' ? { icon: _jsx(IconWarningOutlineRegular, {}) } : {}, ...holdMs === undefined ? {} : { holdMs }, ...actions === undefined ? {} : { actions } }, seq));
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=Toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../../src/client/toast/Toast.tsx"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AA0BxF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;IAClE,MAAM,aAAa,GAAG,OAAO;IAC3B,+EAA+E;IAC/E,EAAE,GAAG,KAAK,EAAW,EACrB,CAAC,EACD,YAAY,CACb,CAAA;IACD,OAAO,iBAAiB,CAAC,yBAAyB,EAAE;QAClD,GAAG,aAAa;QAChB,GAAG;QACH,MAAM,EAAE,YAAY;KACrB,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAwB;IACxD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;IAC1F,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;IAC5F,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,KAAK,EAAW,EAAE,CAAC,EAAE,YAAY,CAAC,CAAA;IAC9D,OAAO,iBAAiB,CAAC,yBAAyB,EAAE;QAClD,GAAG,MAAM;QACT,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/F,GAAG;QACH,MAAM,EAAE,YAAY;KACrB,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAmB;IAC1F,OAAO,CACL,KAAC,KAAK,IAEJ,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,KACV,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAC7C,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAC,yBAAyB,KAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KACjE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KACtC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IANvC,GAAG,CAOR,CACH,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Business-owned mappings into the keyed Workspace Toast slot. */
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
+
import type { RowToastActions, WorkspaceViewStoreHandle } from '../contract/slots.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Register notice presentations with their business-owned display fields and actions.
|
|
6
|
+
* @param ctx - workspace plugin context.
|
|
7
|
+
* @param viewStore - viewing store, read only by archive notices.
|
|
8
|
+
* @param actions - archive and source-opening callbacks.
|
|
9
|
+
*/
|
|
10
|
+
export declare function registerToasts(ctx: Context, viewStore: WorkspaceViewStoreHandle, actions: Pick<RowToastActions, 'undoArchive' | 'showArchived' | 'openForkSource'>): void;
|
|
11
|
+
//# sourceMappingURL=register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/client/toast/register.tsx"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAarF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,wBAAwB,EACnC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,aAAa,GAAG,cAAc,GAAG,gBAAgB,CAAC,GAChF,IAAI,CAgKN"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { ArchiveToastEntry, ToastEntry, WorkspaceToast } from "./Toast.js";
|
|
2
|
+
/** Wrap a business display mapping without making the slot component generic. */
|
|
3
|
+
function plainToast(display) {
|
|
4
|
+
return () => ({ display });
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Register notice presentations with their business-owned display fields and actions.
|
|
8
|
+
* @param ctx - workspace plugin context.
|
|
9
|
+
* @param viewStore - viewing store, read only by archive notices.
|
|
10
|
+
* @param actions - archive and source-opening callbacks.
|
|
11
|
+
*/
|
|
12
|
+
export function registerToasts(ctx, viewStore, actions) {
|
|
13
|
+
const toastEntry = ToastEntry;
|
|
14
|
+
const archiveToastEntry = ArchiveToastEntry;
|
|
15
|
+
const archiveFilterAction = (t, dismiss) => ({
|
|
16
|
+
prefix: t('toast.archivedOr'),
|
|
17
|
+
label: t('toast.archivedFilter'),
|
|
18
|
+
onClick: () => {
|
|
19
|
+
dismiss();
|
|
20
|
+
actions.showArchived();
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
ctx.slots.registerFactory({
|
|
24
|
+
name: 'workspace.toast.content',
|
|
25
|
+
scope: 'root',
|
|
26
|
+
}, WorkspaceToast);
|
|
27
|
+
ctx.slots.inject('workspace.toast', function* () {
|
|
28
|
+
yield ctx.slots.register({
|
|
29
|
+
name: 'workspace.toast',
|
|
30
|
+
key: 'sessionIdCopied',
|
|
31
|
+
locale: 'workspace',
|
|
32
|
+
inject: plainToast((_notice, t) => ({
|
|
33
|
+
text: t('toast.sessionIdCopied'),
|
|
34
|
+
tone: 'success',
|
|
35
|
+
})),
|
|
36
|
+
}, toastEntry);
|
|
37
|
+
yield ctx.slots.register({
|
|
38
|
+
name: 'workspace.toast',
|
|
39
|
+
key: 'sessionIdCopyFailed',
|
|
40
|
+
locale: 'workspace',
|
|
41
|
+
inject: plainToast((_notice, t) => ({
|
|
42
|
+
text: t('toast.sessionIdCopyFailed'),
|
|
43
|
+
tone: 'warning',
|
|
44
|
+
})),
|
|
45
|
+
}, toastEntry);
|
|
46
|
+
yield ctx.slots.register({
|
|
47
|
+
name: 'workspace.toast',
|
|
48
|
+
key: 'pinFailed',
|
|
49
|
+
locale: 'workspace',
|
|
50
|
+
inject: plainToast((_notice, t) => ({
|
|
51
|
+
text: t('toast.pinFailed'),
|
|
52
|
+
tone: 'warning',
|
|
53
|
+
})),
|
|
54
|
+
}, toastEntry);
|
|
55
|
+
yield ctx.slots.register({
|
|
56
|
+
name: 'workspace.toast',
|
|
57
|
+
key: 'unpinFailed',
|
|
58
|
+
locale: 'workspace',
|
|
59
|
+
inject: plainToast((_notice, t) => ({
|
|
60
|
+
text: t('toast.unpinFailed'),
|
|
61
|
+
tone: 'warning',
|
|
62
|
+
})),
|
|
63
|
+
}, toastEntry);
|
|
64
|
+
yield ctx.slots.register({
|
|
65
|
+
name: 'workspace.toast',
|
|
66
|
+
key: 'archivedNotOpenable',
|
|
67
|
+
locale: 'workspace',
|
|
68
|
+
inject: plainToast((_notice, t) => ({
|
|
69
|
+
text: t('toast.archivedNotOpenable'),
|
|
70
|
+
tone: 'warning',
|
|
71
|
+
})),
|
|
72
|
+
}, toastEntry);
|
|
73
|
+
yield ctx.slots.register({
|
|
74
|
+
name: 'workspace.toast',
|
|
75
|
+
key: 'defaultWorkspaceFailed',
|
|
76
|
+
locale: 'workspace',
|
|
77
|
+
inject: plainToast((_notice, t) => ({
|
|
78
|
+
text: t('defaultWorkspace.failed'),
|
|
79
|
+
tone: 'warning',
|
|
80
|
+
})),
|
|
81
|
+
}, toastEntry);
|
|
82
|
+
yield ctx.slots.register({
|
|
83
|
+
name: 'workspace.toast',
|
|
84
|
+
key: 'shortcutForkFailed',
|
|
85
|
+
locale: 'workspace',
|
|
86
|
+
inject: plainToast((notice, t) => ({
|
|
87
|
+
text: t(notice.reason === 'unavailable' ? 'shortcut.noCompletedTurn' : 'shortcut.forkFailed'),
|
|
88
|
+
tone: 'plain',
|
|
89
|
+
})),
|
|
90
|
+
}, toastEntry);
|
|
91
|
+
yield ctx.slots.register({
|
|
92
|
+
name: 'workspace.toast',
|
|
93
|
+
key: 'createFailed',
|
|
94
|
+
locale: 'workspace',
|
|
95
|
+
inject: plainToast((notice, t) => ({
|
|
96
|
+
text: t('toast.createFailed', { message: notice.message }),
|
|
97
|
+
tone: 'warning',
|
|
98
|
+
holdMs: 6000,
|
|
99
|
+
})),
|
|
100
|
+
}, toastEntry);
|
|
101
|
+
yield ctx.slots.register({
|
|
102
|
+
name: 'workspace.toast',
|
|
103
|
+
key: 'forkRequiresOpen',
|
|
104
|
+
locale: 'workspace',
|
|
105
|
+
inject: plainToast((notice, t, dismiss) => ({
|
|
106
|
+
text: t('toast.forkRequiresOpen'),
|
|
107
|
+
tone: 'warning',
|
|
108
|
+
holdMs: 6000,
|
|
109
|
+
actions: [{
|
|
110
|
+
label: t('toast.openForkSource'),
|
|
111
|
+
onClick: () => {
|
|
112
|
+
dismiss();
|
|
113
|
+
actions.openForkSource(notice.sessionId);
|
|
114
|
+
},
|
|
115
|
+
}],
|
|
116
|
+
})),
|
|
117
|
+
}, toastEntry);
|
|
118
|
+
yield ctx.slots.register({
|
|
119
|
+
name: 'workspace.toast',
|
|
120
|
+
key: 'archived',
|
|
121
|
+
locale: 'workspace',
|
|
122
|
+
store: viewStore,
|
|
123
|
+
inject: () => ({
|
|
124
|
+
display: (notice, t, dismiss) => ({
|
|
125
|
+
text: t('toast.archived'),
|
|
126
|
+
tone: 'success',
|
|
127
|
+
holdMs: 6000,
|
|
128
|
+
actions: [{
|
|
129
|
+
label: t('toast.archivedUndo'),
|
|
130
|
+
onClick: () => {
|
|
131
|
+
dismiss();
|
|
132
|
+
actions.undoArchive(notice.sessionId);
|
|
133
|
+
},
|
|
134
|
+
}],
|
|
135
|
+
}),
|
|
136
|
+
filterAction: archiveFilterAction,
|
|
137
|
+
}),
|
|
138
|
+
}, archiveToastEntry);
|
|
139
|
+
yield ctx.slots.register({
|
|
140
|
+
name: 'workspace.toast',
|
|
141
|
+
key: 'stoppedAndArchived',
|
|
142
|
+
locale: 'workspace',
|
|
143
|
+
store: viewStore,
|
|
144
|
+
inject: () => ({
|
|
145
|
+
display: (notice, t, dismiss) => ({
|
|
146
|
+
text: t('toast.stoppedAndArchived'),
|
|
147
|
+
tone: 'success',
|
|
148
|
+
holdMs: 6000,
|
|
149
|
+
actions: [{
|
|
150
|
+
label: t('toast.archivedUndo'),
|
|
151
|
+
onClick: () => {
|
|
152
|
+
dismiss();
|
|
153
|
+
actions.undoArchive(notice.sessionId);
|
|
154
|
+
},
|
|
155
|
+
}],
|
|
156
|
+
}),
|
|
157
|
+
filterAction: archiveFilterAction,
|
|
158
|
+
}),
|
|
159
|
+
}, archiveToastEntry);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=register.js.map
|