@chatcode/chatcode-cli 3.0.4-rc.1 → 3.0.4-rc.3

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 (136) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +2 -0
  3. package/README.zh.md +2 -0
  4. package/lib/{command-errors-BkCHTQHj.js → command-errors-BJ_ZWzUU.js} +12 -12
  5. package/lib/{command-trees-5HFyC5sI.js → command-trees-C9b7-bci.js} +2 -2
  6. package/lib/{component-identity-De91VHwW.js → component-identity-Jb1DYjke.js} +3 -3
  7. package/lib/{dist-CsDWUvQ4.js → dist-w_sIm4VD.js} +231 -231
  8. package/lib/{extension-events-CdYCRP0o.js → extension-events-DKX4LXOd.js} +26 -26
  9. package/lib/{frames-DOX-Jgk8.js → frames-B89znn_0.js} +4 -4
  10. package/lib/{host-access-Bk4xps5E.js → host-access-CMg6rsWt.js} +1 -1
  11. package/lib/{keymap-CJ1kvLR2.js → keymap-CrC4pSNH.js} +2 -2
  12. package/lib/{plugin-XR7ncbnW.js → plugin-CmyMCGfb.js} +1651 -1365
  13. package/lib/{scenes-CAmWncZD.js → scenes-Cil9RnwU.js} +3 -3
  14. package/lib/{settings-sections-CakcvBv9.js → settings-sections-jVCqXwdH.js} +3 -3
  15. package/lib/{statusBarSettings-BPPS_Usm.js → statusBarSettings-DNoBH3Cq.js} +3 -3
  16. package/lib/{supports-color-DyChQwlI.js → supports-color-CcW-FGjr.js} +2 -2
  17. package/lib/{themes-OjcUpZzw.js → themes-BdgeY3It.js} +12 -12
  18. package/lib/tui-compat-command-trees.js +1 -1
  19. package/lib/tui-compat-extensions.js +3 -3
  20. package/lib/tui-compat-plugin-host.js +5 -5
  21. package/lib/tui-compat-scenes.js +1 -1
  22. package/lib/tui-compat-settings-sections.js +1 -1
  23. package/lib/tui-compat-working-activity.js +4 -4
  24. package/lib/tui-compat-workspaces.js +1 -1
  25. package/lib/tui-compat.js +5 -5
  26. package/lib/{workspaces-XY7UdfXp.js → workspaces-DOatJRYr.js} +2 -2
  27. package/package.json +30 -29
  28. package/runtime/manifest.json +2 -2
  29. package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/index.js +118 -22
  30. package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/types/index.d.ts +20 -3
  31. package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js +113 -39
  32. package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/index.js +4 -0
  33. package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/types/remote-events.d.ts +3 -0
  34. package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/types/remote-events.js +1 -0
  35. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/index.js +173 -34
  36. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js +48 -28
  37. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js +24 -19
  38. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/agent.d.ts +9 -1
  39. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/agent.js +36 -6
  40. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/archived-session-gate.js +1 -1
  41. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/catalog.js +4 -1
  42. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.d.ts +1 -1
  43. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/commands.d.ts +2 -2
  44. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/commands.js +24 -8
  45. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/index.d.ts +4 -3
  46. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/index.js +31 -14
  47. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/list.d.ts +6 -0
  48. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/list.js +89 -4
  49. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/remote-events.d.ts +1 -1
  50. package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/types.d.ts +18 -1
  51. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/client.js +30 -0
  52. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/index.js +83 -2
  53. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/typert.host.js +104 -11
  54. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/typert.remote-client.d.ts +5 -1
  55. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/typert.remote-client.js +78 -11
  56. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/client/model.d.ts +14 -1
  57. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/client/model.js +17 -0
  58. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/client/service.d.ts +15 -0
  59. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/client/service.js +12 -0
  60. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/commands.d.ts +13 -1
  61. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/commands.js +44 -2
  62. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/index.d.ts +13 -1
  63. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/index.js +22 -0
  64. package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/types.d.ts +17 -0
  65. package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +2 -1
  66. package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/index.js +167 -44
  67. package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/index.d.ts +14 -6
  68. package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/linux-lock.d.ts +18 -0
  69. package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/windows-lock.d.ts +7 -0
  70. package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/client.js +931 -7
  71. package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/index.js +57 -19
  72. package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/types/client/index.d.ts +5 -2
  73. package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/types/config.d.ts +12 -0
  74. package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/types/events.d.ts +4 -4
  75. package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/types/index.d.ts +3 -8
  76. package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/package.json +6 -2
  77. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-commands/lib/client.js +10 -0
  78. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/types/client/present-open.d.ts +1 -1
  79. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +8 -4
  80. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +2 -2
  81. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
  82. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
  83. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +1917 -206
  84. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/ArchivedSessions.d.ts +13 -0
  85. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/contract/slots.d.ts +4 -0
  86. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts +40 -0
  87. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/recent.d.ts +11 -0
  88. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/rows/RecentList.d.ts +15 -0
  89. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/rows/Rows.d.ts +6 -1
  90. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/session-actions/DeleteSession.d.ts +24 -0
  91. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/stores.d.ts +2 -2
  92. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/tree.d.ts +15 -13
  93. package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/package.json +3 -1
  94. package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/index.js +16 -0
  95. package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/typert.host.js +7 -3
  96. package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/typert.remote-client.js +6 -2
  97. package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/types/index.js +20 -0
  98. package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/types/types.d.ts +5 -0
  99. package/runtime/node_modules/@deepseek-ai/dsh-cordis-client-runner/lib/client.js +5 -2
  100. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/adapter.d.ts +1 -1
  101. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/config.d.ts +3 -3
  102. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek-account/lib/types/config.d.ts +2 -2
  103. package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek-api-key/lib/types/config.d.ts +2 -2
  104. package/runtime/node_modules/@deepseek-ai/dsh-schedule/lib/index.js +4 -0
  105. package/runtime/node_modules/@deepseek-ai/dsh-schedule/lib/typert.host.js +5 -5
  106. package/runtime/node_modules/@deepseek-ai/dsh-schedule/lib/typert.remote-client.js +5 -5
  107. package/runtime/node_modules/@deepseek-ai/dsh-schedule/lib/types/index.js +5 -0
  108. package/runtime/node_modules/@deepseek-ai/dsh-session/lib/types/index.d.ts +21 -0
  109. package/runtime/node_modules/@deepseek-ai/dsh-session-persistence/lib/index.js +12 -0
  110. package/runtime/node_modules/@deepseek-ai/dsh-session-persistence/lib/types/index.d.ts +15 -0
  111. package/runtime/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/lib/index.js +95 -2
  112. package/runtime/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/lib/types/index.d.ts +3 -1
  113. package/runtime/node_modules/@deepseek-ai/dsh-session-projection-cache/lib/index.js +25 -1
  114. package/runtime/node_modules/@deepseek-ai/dsh-session-projection-cache/lib/types/index.d.ts +1 -0
  115. package/runtime/node_modules/@deepseek-ai/dsh-session-projection-cache/package.json +2 -1
  116. package/runtime/node_modules/@deepseek-ai/dsh-session-query/lib/index.js +13 -0
  117. package/runtime/node_modules/@deepseek-ai/dsh-session-query/lib/types/observation.d.ts +5 -0
  118. package/runtime/node_modules/@deepseek-ai/dsh-session-query-sqlite/lib/index.js +26 -0
  119. package/runtime/node_modules/@deepseek-ai/dsh-session-query-sqlite/package.json +2 -1
  120. package/runtime/node_modules/@deepseek-ai/dsh-storage-domain/lib/index.js +5 -1
  121. package/runtime/node_modules/@deepseek-ai/dsh-storage-domain/lib/types/domain.d.ts +2 -2
  122. package/runtime/node_modules/@deepseek-ai/dsh-subagent/lib/types/control.d.ts +1 -1
  123. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/index.js +106 -56
  124. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/config.d.ts +2 -2
  125. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/index.d.ts +2 -1
  126. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/config.d.ts +4 -2
  127. package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/tools.d.ts +2 -2
  128. package/runtime/node_modules/@deepseek-ai/dsh-tianti/package.json +2 -0
  129. package/runtime/node_modules/@deepseek-ai/dsh-tool-cordis/lib/types/api-catalog.js +104 -13
  130. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/index.js +215 -4
  131. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/invariant.js +6 -1
  132. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.d.ts +31 -0
  133. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.js +219 -2
  134. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/spec.d.ts +4 -0
  135. package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/spec.js +4 -0
  136. package/scripts/launch.mjs +8 -0
@@ -0,0 +1,13 @@
1
+ import type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
2
+ import type { SessionId } from '@deepseek-ai/dsh-session/types';
3
+ /** Host operations shared with the TUI; no history is opened to list archived Sessions. */
4
+ export interface ArchivedSessionsInjected {
5
+ requestDelete: (id: SessionId) => Promise<void>;
6
+ restore: (id: SessionId) => Promise<void>;
7
+ failureText: (error: unknown) => string;
8
+ }
9
+ type Props = PropsRuntime<'settings.section'> & PropsLocale<'workspace'> & InjectFace<ArchivedSessionsInjected>;
10
+ /** Archived roots, including archived empty Sessions, with one global search and bounded DOM. */
11
+ export declare function ArchivedSessions({ useSessions, useWorkspaces, requestDelete, restore, failureText, t }: Props): import("react").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=ArchivedSessions.d.ts.map
@@ -281,6 +281,10 @@ export type SessionMenuItemProps<Injected extends object = object> = PropsRuntim
281
281
  export type SessionRowActionProps<Injected extends object = object> = PropsRuntime<'sidebar.workspaces.session.row.action'> & PropsLocale<'workspace'> & InjectFace<Injected>;
282
282
  /** One transient Workspace notice rendered by the overlay toast entry. */
283
283
  export type RowToast = {
284
+ kind: 'sessionOperation';
285
+ message: string;
286
+ success: boolean;
287
+ } | {
284
288
  kind: 'archived';
285
289
  sessionId: SessionId;
286
290
  } | {
@@ -5,6 +5,25 @@
5
5
  */
6
6
  /** Simplified Chinese dictionary (the key-set source of truth). */
7
7
  export declare const zh: {
8
+ 'archive.manager.title': string;
9
+ 'archive.manager.description': string;
10
+ 'archive.manager.search': string;
11
+ 'archive.manager.restoreAria': string;
12
+ 'archive.manager.deleteAria': string;
13
+ 'archive.manager.restore': string;
14
+ 'archive.manager.delete': string;
15
+ 'archive.manager.previous': string;
16
+ 'archive.manager.next': string;
17
+ 'archive.manager.page': string;
18
+ 'archive.manager.confirmTitle': string;
19
+ 'archive.manager.confirmDescription': string;
20
+ 'archive.manager.deleting': string;
21
+ 'archive.manager.busy': string;
22
+ 'archive.manager.notArchived': string;
23
+ 'archive.manager.scopeChanged': string;
24
+ 'archive.manager.deleted': string;
25
+ 'archive.manager.restored': string;
26
+ 'archive.manager.failed': string;
8
27
  'defaultWorkspace.failed': string;
9
28
  'group.ungrouped': string;
10
29
  'session.new': string;
@@ -15,6 +34,7 @@ export declare const zh: {
15
34
  'shortcut.forkFailed': string;
16
35
  'section.workspaces': string;
17
36
  'section.sessions': string;
37
+ 'section.recent': string;
18
38
  'viewOptions.label': string;
19
39
  'groupBy.label': string;
20
40
  'groupBy.workspace': string;
@@ -122,6 +142,25 @@ export declare const zh: {
122
142
  export type WorkspaceKey = keyof typeof zh;
123
143
  /** English dictionary, checked complete against the zh key set. */
124
144
  export declare const en: {
145
+ 'archive.manager.title': string;
146
+ 'archive.manager.description': string;
147
+ 'archive.manager.search': string;
148
+ 'archive.manager.restoreAria': string;
149
+ 'archive.manager.deleteAria': string;
150
+ 'archive.manager.restore': string;
151
+ 'archive.manager.delete': string;
152
+ 'archive.manager.previous': string;
153
+ 'archive.manager.next': string;
154
+ 'archive.manager.page': string;
155
+ 'archive.manager.confirmTitle': string;
156
+ 'archive.manager.confirmDescription': string;
157
+ 'archive.manager.deleting': string;
158
+ 'archive.manager.busy': string;
159
+ 'archive.manager.notArchived': string;
160
+ 'archive.manager.scopeChanged': string;
161
+ 'archive.manager.deleted': string;
162
+ 'archive.manager.restored': string;
163
+ 'archive.manager.failed': string;
125
164
  'defaultWorkspace.failed': string;
126
165
  'group.ungrouped': string;
127
166
  'session.new': string;
@@ -132,6 +171,7 @@ export declare const en: {
132
171
  'shortcut.forkFailed': string;
133
172
  'section.workspaces': string;
134
173
  'section.sessions': string;
174
+ 'section.recent': string;
135
175
  'viewOptions.label': string;
136
176
  'groupBy.label': string;
137
177
  'groupBy.workspace': string;
@@ -0,0 +1,11 @@
1
+ /** Metadata-only recency projection, independent of Workspace and pin order. */
2
+ import type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client';
3
+ import type { SessionId } from '@deepseek-ai/dsh-session/types';
4
+ import { type SessionRowState } from './tree.ts';
5
+ /**
6
+ * Cache chronological membership across status, title, selection, and projection updates.
7
+ * @param rowState - archive visibility for this selector's lifetime.
8
+ * @returns a selector that sorts only when membership or activity timestamps change.
9
+ */
10
+ export declare function createRecentSessionSelector(rowState: Pick<SessionRowState, 'archivedSessionIds' | 'archivedFilter'>): (list: SessionListState) => readonly SessionId[];
11
+ //# sourceMappingURL=recent.d.ts.map
@@ -0,0 +1,15 @@
1
+ import type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client';
2
+ import type { SessionId } from '@deepseek-ai/dsh-session/types';
3
+ import type { WorkspaceBrowserProps } from '../contract/slots.ts';
4
+ import { type SessionRowState } from '../tree.ts';
5
+ type RecentListProps = Pick<WorkspaceBrowserProps, 'usePanelInfo' | 'useSessionStatus' | 'open' | 'requestSessionRename' | 'renderSlot' | 't'> & {
6
+ list: SessionListState;
7
+ rowState: SessionRowState;
8
+ revealSessionId: SessionId | undefined;
9
+ onSessionRevealed: (id: SessionId) => void;
10
+ onLeaveArchivedOnly: () => void;
11
+ };
12
+ /** Project status and mount row extensions only for the viewport and a small overscan. */
13
+ export declare function RecentList({ list, rowState, useSessionStatus, usePanelInfo, open, requestSessionRename, renderSlot, t, revealSessionId, onSessionRevealed, onLeaveArchivedOnly, }: RecentListProps): import("react").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=RecentList.d.ts.map
@@ -95,7 +95,7 @@ export declare function SearchResultItem({ result, currentId, onOpen, onUnarchiv
95
95
  * @param props.t - the browser root's locale seat.
96
96
  * @returns the session row.
97
97
  */
98
- export declare function SessionNodeItem({ node, currentId, now, onOpen, onRenameRequest, renderSlot, onReveal, drag, t, }: {
98
+ export declare function SessionNodeItem({ node, currentId, now, onOpen, onRenameRequest, renderSlot, onReveal, drag, position, t, }: {
99
99
  node: SessionNode;
100
100
  currentId: string | undefined;
101
101
  now: number;
@@ -106,6 +106,11 @@ export declare function SessionNodeItem({ node, currentId, now, onOpen, onRename
106
106
  onReveal?: (() => void) | undefined;
107
107
  /** Present on reorderable-list rows so every row can remain a drop target. */
108
108
  drag?: RowDragProps | undefined;
109
+ /** Logical position within a virtualized tree, independent of mounted rows. */
110
+ position?: {
111
+ index: number;
112
+ total: number;
113
+ } | undefined;
109
114
  t: RowTranslate;
110
115
  } & PropsRenderSlots<'sidebar.workspaces.session.menu.item' | 'sidebar.workspaces.session.row.action' | 'sidebar.session.row.leading' | 'sidebar.session.row.hover'>): import("react").JSX.Element;
111
116
  export {};
@@ -0,0 +1,24 @@
1
+ import type { HostObservable, InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
2
+ import type { SessionId } from '@deepseek-ai/dsh-session/types';
3
+ import type { ArchiveSessionInjected, SessionMenuItemProps } from '../contract/slots.ts';
4
+ export interface DeleteRequest {
5
+ id: SessionId;
6
+ title: string;
7
+ scope: readonly SessionId[];
8
+ }
9
+ export interface DeleteSessionInjected {
10
+ hooks: {
11
+ request: HostObservable<DeleteRequest | null>;
12
+ };
13
+ dismiss: () => void;
14
+ remove: (id: SessionId, scope: readonly SessionId[]) => Promise<void>;
15
+ failureText: (error: unknown) => string;
16
+ }
17
+ export type DeleteMenuInjected = Pick<ArchiveSessionInjected, 'hooks'> & {
18
+ requestDelete: (id: SessionId) => void;
19
+ };
20
+ /** Permanent deletion is offered only for archived rows. */
21
+ export declare function DeleteSessionMenuItem({ sessionId, useArchived, useMenuOpenState, requestDelete, t, }: SessionMenuItemProps<DeleteMenuInjected>): import("react").JSX.Element | null;
22
+ /** The dialog outlives the menu or settings page that raised it. */
23
+ export declare function SessionDeleteDialog(props: PropsRuntime<'shell.overlay'> & PropsLocale<'workspace'> & InjectFace<DeleteSessionInjected>): import("react").JSX.Element | null;
24
+ //# sourceMappingURL=DeleteSession.d.ts.map
@@ -11,8 +11,8 @@ import type { SessionId } from '@deepseek-ai/dsh-session/types';
11
11
  import { type ArchivedFilter, type SessionRowState } from './tree.ts';
12
12
  /** Browser-local order account for the hierarchy-free flat Session list. */
13
13
  export declare const FLAT_SESSION_ORDER_KEY = "__flat_session_order__";
14
- /** Session-list grouping mode: sibling Workspace sections, a Workspace tree, or one flat list. */
15
- export type SessionGroupBy = 'workspace' | 'workspace-tree' | 'flat';
14
+ /** Session-list view: Workspace sections, a Workspace tree, a reorderable list, or a recent timeline. */
15
+ export type SessionGroupBy = 'workspace' | 'workspace-tree' | 'flat' | 'recent';
16
16
  /** Session order: saved manual positions or current recency. */
17
17
  export type SessionOrderBy = 'manual' | 'updated';
18
18
  /** Workspace browser viewing state persisted across surface remounts and reloads. */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Derives the workspace browser tree from caller-projected Workspace and
3
- * Session order. Unassigned Sessions trail under Ungrouped; only the selected
4
- * blank Session remains visible.
3
+ * Session order. Unassigned Sessions trail under Ungrouped; sessions without
4
+ * user input remain hidden, including the selected provisional Session.
5
5
  */
6
6
  import { type SessionListState, type SessionSearchResultItem } from '@deepseek-ai/dsh-api-session-controller/client';
7
7
  import type { WorkspaceId, WorkspaceView } from '@deepseek-ai/dsh-api-workspace-controller/client';
@@ -110,13 +110,6 @@ export declare function orderByRecency(sessionIds: readonly SessionId[], summari
110
110
  * @returns saved relative positions plus missing members ordered by pin, fork source, recency, and archive status.
111
111
  */
112
112
  export declare function reconcileManualOrder(memberIds: readonly SessionId[], savedOrder: readonly string[] | undefined, summaries: SessionListState['byId'], rowState?: Pick<SessionRowState, 'pinnedSessionIds' | 'archivedSessionIds'>): SessionId[];
113
- /**
114
- * Keep the selected provisional New Session ahead of either base order.
115
- * @param order - recency or reconciled manual order.
116
- * @param currentBlank - selected blank Session in this account, when present.
117
- * @returns a copy with the selected blank first and no duplicate slot.
118
- */
119
- export declare function pinCurrentBlank(order: readonly SessionId[], currentBlank: SessionId | undefined): SessionId[];
120
113
  /**
121
114
  * Archived-row visibility choice: the default hides archived rows, `show`
122
115
  * mixes them into their kept slots, and `only` restricts the view (and
@@ -137,8 +130,8 @@ export interface SessionRowState {
137
130
  *
138
131
  * Every group shows, except that the archived-only filter drops groups
139
132
  * without visible members; sessions populate under expanded groups with
140
- * pinned rows leading in the selected local order. Blank sessions are
141
- * excluded except for the selected provisional New Session row; archived
133
+ * pinned rows leading in the selected local order. Sessions without user
134
+ * input are excluded, including the selected empty Session; archived
142
135
  * sessions keep their slots and appear per the archived filter. Content
143
136
  * search lives outside this derivation (see {@link deriveSearchResults}).
144
137
  * @param list - sessions list snapshot (`mainView` retention feeds containsCurrent).
@@ -152,7 +145,7 @@ export declare function deriveGroups(list: SessionListState, workspaces: readonl
152
145
  /**
153
146
  * Select complete flat-list membership, independently of archive visibility.
154
147
  * @param list - sessions list snapshot.
155
- * @returns known ordinary Session ids, including archives and only the current blank.
148
+ * @returns known ordinary conversations, including archives but excluding empty Sessions.
156
149
  */
157
150
  export declare function sessionMemberIds(list: SessionListState): SessionId[];
158
151
  /**
@@ -160,7 +153,7 @@ export declare function sessionMemberIds(list: SessionListState): SessionId[];
160
153
  * @param list - sessions list snapshot.
161
154
  * @param archivedSessionIds - registry-global archive set.
162
155
  * @param archivedFilter - archived-row visibility choice.
163
- * @returns known visible Session ids in list order, including ordinary forks and only the current blank.
156
+ * @returns visible conversation ids in list order, including ordinary forks.
164
157
  */
165
158
  export declare function visibleSessionIds(list: SessionListState, archivedSessionIds: readonly SessionId[], archivedFilter: ArchivedFilter): SessionId[];
166
159
  /**
@@ -173,6 +166,15 @@ export declare function visibleSessionIds(list: SessionListState, archivedSessio
173
166
  * @returns flat rows in sectioned order with current status indicators.
174
167
  */
175
168
  export declare function deriveFlat(list: SessionListState, sessionIds: readonly SessionId[], rowState: SessionRowState, statuses: SessionStatuses): SessionNode[];
169
+ /**
170
+ * Project only mounted recent rows, preserving the supplied chronological order.
171
+ * @param list - metadata snapshot; no Session history is opened.
172
+ * @param sessionIds - the visible window of the recency projection.
173
+ * @param rowState - pin decoration and archive visibility.
174
+ * @param statuses - unified UI status by Session.
175
+ * @returns rows without moving pinned or archived members ahead of newer Sessions.
176
+ */
177
+ export declare function deriveRecentRows(list: SessionListState, sessionIds: readonly SessionId[], rowState: SessionRowState, statuses: SessionStatuses): SessionNode[];
176
178
  /**
177
179
  * Merge immediate title/Workspace substring matches with ranked Host content
178
180
  * matches. Local rows lead newest-first, content-only rows retain backend
@@ -75,10 +75,12 @@
75
75
  "@deepseek-ai/dsh-typert-protocol": "workspace:*",
76
76
  "@deepseek-ai/dsh-util-values": "workspace:*",
77
77
  "@deepseek-ai/dsh-util-workspace-path": "workspace:*",
78
+ "@tanstack/react-virtual": "^3.14.9",
78
79
  "@types/react": "~18.3.1",
79
80
  "clsx": "^2.0.0",
80
81
  "react": "^18.2.0",
81
- "@deepseek-ai/dsh-client-shortcuts": "workspace:*"
82
+ "@deepseek-ai/dsh-client-shortcuts": "workspace:*",
83
+ "@deepseek-ai/dsh-client-ui-settings": "workspace:*"
82
84
  },
83
85
  "files": [
84
86
  "lib/index.js",
@@ -157,8 +157,24 @@ function normalizeDefinition(definition) {
157
157
  if (typeof rawInput !== "object" || rawInput === null || !("hint" in rawInput) || typeof rawInput.hint !== "string") throw new TypeError(`command "${definition.name}" input hint must be a string`);
158
158
  if (rawInput.hint.trim().length === 0) throw new TypeError(`command "${definition.name}" input hint must not be empty`);
159
159
  if ("attachments" in rawInput && rawInput.attachments !== void 0 && typeof rawInput.attachments !== "boolean") throw new TypeError(`command "${definition.name}" input attachments flag must be a boolean`);
160
+ let suggestions;
161
+ if ("suggestions" in rawInput && rawInput.suggestions !== void 0) {
162
+ if (!Array.isArray(rawInput.suggestions)) throw new TypeError(`command "${definition.name}" input suggestions must be an array`);
163
+ const seen = /* @__PURE__ */ new Set();
164
+ suggestions = Object.freeze(rawInput.suggestions.map((entry) => {
165
+ if (typeof entry !== "object" || entry === null || !("value" in entry) || typeof entry.value !== "string" || !/^[a-z0-9_.:\/-]+$/iu.test(entry.value) || !("description" in entry) || typeof entry.description !== "string" || !entry.description.trim()) throw new TypeError(`command "${definition.name}" input suggestions require a token value and description`);
166
+ const key = entry.value.toLowerCase();
167
+ if (seen.has(key)) throw new TypeError(`command "${definition.name}" input suggestions repeat "${entry.value}"`);
168
+ seen.add(key);
169
+ return Object.freeze({
170
+ value: entry.value,
171
+ description: entry.description
172
+ });
173
+ }));
174
+ }
160
175
  input = Object.freeze({
161
176
  hint: rawInput.hint,
177
+ ...suggestions === void 0 ? {} : { suggestions },
162
178
  ..."attachments" in rawInput && rawInput.attachments === true ? { attachments: true } : {}
163
179
  });
164
180
  }
@@ -37,6 +37,10 @@ const _deepseek_ai_dsh_commands_commands_list_result$schema = () => (_deepseek_a
37
37
  'description': z.string().readonly(),
38
38
  'input': z.object({
39
39
  'hint': z.string().readonly(),
40
+ 'suggestions': z.array(z.object({
41
+ 'value': z.string().readonly(),
42
+ 'description': z.string().readonly(),
43
+ })).readonly().optional(),
40
44
  'attachments': z.boolean().readonly().optional(),
41
45
  }).readonly().optional(),
42
46
  })))
@@ -96,7 +100,7 @@ export const TYPERT = {
96
100
  typeSymbol: '@deepseek-ai/dsh-commands#commands/execute:result',
97
101
  create: _deepseek_ai_dsh_commands_commands_execute_result$schema,
98
102
  },
99
- sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":361,"column":9},
103
+ sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":380,"column":9},
100
104
  },
101
105
  {
102
106
  id: '@deepseek-ai/dsh-commands#commands/list',
@@ -126,7 +130,7 @@ export const TYPERT = {
126
130
  typeSymbol: '@deepseek-ai/dsh-commands#commands/list:result',
127
131
  create: _deepseek_ai_dsh_commands_commands_list_result$schema,
128
132
  },
129
- sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":315,"column":3},
133
+ sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":334,"column":3},
130
134
  },
131
135
  ],
132
136
  model: {
@@ -270,7 +274,7 @@ export const TYPERT = {
270
274
  },
271
275
  {
272
276
  "name": "CommandInputDescriptor",
273
- "declaration": "export interface CommandInputDescriptor {\n readonly hint: string;\n readonly attachments?: boolean;\n}"
277
+ "declaration": "export interface CommandInputDescriptor {\n readonly hint: string;\n readonly suggestions?: readonly { readonly value: string; readonly description: string; }[];\n readonly attachments?: boolean;\n}"
274
278
  },
275
279
  {
276
280
  "name": "CommandInvocation",
@@ -37,6 +37,10 @@ const _deepseek_ai_dsh_commands_commands_list_result$schema = () => (_deepseek_a
37
37
  'description': z.string().readonly(),
38
38
  'input': z.object({
39
39
  'hint': z.string().readonly(),
40
+ 'suggestions': z.array(z.object({
41
+ 'value': z.string().readonly(),
42
+ 'description': z.string().readonly(),
43
+ })).readonly().optional(),
40
44
  'attachments': z.boolean().readonly().optional(),
41
45
  }).readonly().optional(),
42
46
  })))
@@ -93,7 +97,7 @@ export const TYPERT_REMOTE = {
93
97
  typeSymbol: '@deepseek-ai/dsh-commands#commands/execute:result',
94
98
  create: _deepseek_ai_dsh_commands_commands_execute_result$schema,
95
99
  },
96
- sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":361,"column":9},
100
+ sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":380,"column":9},
97
101
  },
98
102
  {
99
103
  id: '@deepseek-ai/dsh-commands#commands/list',
@@ -123,7 +127,7 @@ export const TYPERT_REMOTE = {
123
127
  typeSymbol: '@deepseek-ai/dsh-commands#commands/list:result',
124
128
  create: _deepseek_ai_dsh_commands_commands_list_result$schema,
125
129
  },
126
- sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":315,"column":3},
130
+ sourceLocation: {"file":"packages/interaction/commands/src/index.ts","line":334,"column":3},
127
131
  },
128
132
  ],
129
133
  }
@@ -147,8 +147,28 @@ function normalizeDefinition(definition) {
147
147
  if ('attachments' in rawInput && rawInput.attachments !== undefined && typeof rawInput.attachments !== 'boolean') {
148
148
  throw new TypeError(`command "${definition.name}" input attachments flag must be a boolean`);
149
149
  }
150
+ let suggestions;
151
+ if ('suggestions' in rawInput && rawInput.suggestions !== undefined) {
152
+ if (!Array.isArray(rawInput.suggestions)) {
153
+ throw new TypeError(`command "${definition.name}" input suggestions must be an array`);
154
+ }
155
+ const seen = new Set();
156
+ suggestions = Object.freeze(rawInput.suggestions.map((entry) => {
157
+ if (typeof entry !== 'object' || entry === null
158
+ || !('value' in entry) || typeof entry.value !== 'string' || !/^[a-z0-9_.:\/-]+$/iu.test(entry.value)
159
+ || !('description' in entry) || typeof entry.description !== 'string' || !entry.description.trim()) {
160
+ throw new TypeError(`command "${definition.name}" input suggestions require a token value and description`);
161
+ }
162
+ const key = entry.value.toLowerCase();
163
+ if (seen.has(key))
164
+ throw new TypeError(`command "${definition.name}" input suggestions repeat "${entry.value}"`);
165
+ seen.add(key);
166
+ return Object.freeze({ value: entry.value, description: entry.description });
167
+ }));
168
+ }
150
169
  input = Object.freeze({
151
170
  hint: rawInput.hint,
171
+ ...suggestions === undefined ? {} : { suggestions },
152
172
  ...('attachments' in rawInput && rawInput.attachments === true) ? { attachments: true } : {},
153
173
  });
154
174
  }
@@ -20,6 +20,11 @@ export type CommandSubmitAttachment = ({
20
20
  export interface CommandInputDescriptor {
21
21
  /** Placeholder shown before the user supplies free-form input. */
22
22
  readonly hint: string;
23
+ /** Advisory first-argument completions; handlers still own the full input grammar. */
24
+ readonly suggestions?: readonly {
25
+ readonly value: string;
26
+ readonly description: string;
27
+ }[];
23
28
  /**
24
29
  * Whether composer attachments may accompany an invocation. Absent or
25
30
  * false = the executor rejects an invocation carrying attachments and capable
@@ -4747,7 +4747,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4747
4747
  "client-ui-settings-account AccountSection id 'account'",
4748
4748
  "client-ui-settings-general GeneralSection id 'general'",
4749
4749
  "client-ui-settings-models ModelsSection id 'models'",
4750
- "client-ui-settings-plugins PluginsSettingsSection id 'plugins'"
4750
+ "client-ui-settings-plugins PluginsSettingsSection id 'plugins'",
4751
+ "client-ui-workspace ArchivedSessions id 'archived-sessions'"
4751
4752
  ],
4752
4753
  replaceRisk: "none",
4753
4754
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.section', () => ctx.slots.register(\n { name: 'settings.section', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
@@ -4854,6 +4855,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4854
4855
  "client-ui-settings-account DesktopOnboardingEntry id 'desktop-onboarding'",
4855
4856
  "client-ui-settings-account AccountPlatformHost id 'account.platform-page'",
4856
4857
  "client-ui-shortcuts ShortcutReference id 'shortcuts'",
4858
+ "client-ui-workspace SessionDeleteDialog id 'workspace.session-delete'",
4857
4859
  "client-ui-workspace SessionRenameDialog id 'workspace.session-rename'",
4858
4860
  "client-ui-workspace SessionArchiveConfirmDialog id 'workspace.session-archive'",
4859
4861
  "client-ui-workspace RowActionToast id 'workspace.row-toast'"
@@ -5816,7 +5818,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5816
5818
  "client-ui-workspace PinSessionMenuItem id 'pin'",
5817
5819
  "client-ui-workspace RenameSessionMenuItem id 'rename'",
5818
5820
  "client-ui-workspace ForkSessionMenuItem id 'fork'",
5819
- "client-ui-workspace ArchiveSessionMenuItem id 'archive'"
5821
+ "client-ui-workspace ArchiveSessionMenuItem id 'archive'",
5822
+ "client-ui-workspace DeleteSessionMenuItem id 'delete'"
5820
5823
  ],
5821
5824
  replaceRisk: "none",
5822
5825
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n const copyLabel = 'Copy Session ID' // Localize in the contributing package.\n ctx.slots.inject('sidebar.workspaces.session.menu.item', () => ctx.slots.register(\n { name: 'sidebar.workspaces.session.menu.item', id: 'copy-session-id', order: 500 },\n ({ sessionId, useMenuOpenState }) => {\n const [, setMenuOpen] = useMenuOpenState()\n return React.createElement(\n 'button',\n { type: 'button', role: 'menuitem', onClick: () => { setMenuOpen(false); void navigator.clipboard.writeText(sessionId) } },\n copyLabel,\n )\n },\n ))\n },\n}",
@@ -13,7 +13,7 @@ export declare class DeepSeekAdapter<C extends Connection = Connection> extends
13
13
  name: string;
14
14
  };
15
15
  providerRetryPolicy(_provider: string): import("@deepseek-ai/dsh-llm").ResolvedRetryPolicy;
16
- listModels(provider: string): Promise<import("@deepseek-ai/dsh-llm").LlmModelInfo[] | never[]>;
16
+ listModels(provider: string): Promise<never[] | import("@deepseek-ai/dsh-llm").LlmModelInfo[]>;
17
17
  resolveModel(provider: string, model: string, _signal?: AbortSignal): Promise<import("@deepseek-ai/dsh-llm").LlmResolvedModelInfo>;
18
18
  imageRequestPricing(_provider: string, model: string): import("@deepseek-ai/dsh-llm").LlmImageRequestPricing;
19
19
  prepareCall(provider: string, model: string, _signal?: AbortSignal): Promise<PreparedAdapterCall>;
@@ -56,7 +56,7 @@ export declare function plainOptions(config: Config): Options;
56
56
  export declare const deepSeekConfigFields: {
57
57
  baseURL: z<string, string, "volatile">;
58
58
  thinking: z<"enabled" | "disabled", "enabled" | "disabled", "volatile">;
59
- reasoningEffort: z<"off" | "low" | "high" | "max", "off" | "low" | "high" | "max", "volatile">;
59
+ reasoningEffort: z<"low" | "off" | "high" | "max", "low" | "off" | "high" | "max", "volatile">;
60
60
  maxTokens: z<number, number, "volatile-defined">;
61
61
  defaultContextWindow: z<number, number, "volatile-defined">;
62
62
  models: z<NoInfer<DeepSeekCatalogModel[]>, NoInfer<DeepSeekCatalogModel[]>, "volatile-defined">;
@@ -76,7 +76,7 @@ export declare const deepSeekConfigFields: {
76
76
  export declare const Config: z<Schemastery.ObjectS<NoInfer<{
77
77
  baseURL: z<string, string, "volatile">;
78
78
  thinking: z<"enabled" | "disabled", "enabled" | "disabled", "volatile">;
79
- reasoningEffort: z<"off" | "low" | "high" | "max", "off" | "low" | "high" | "max", "volatile">;
79
+ reasoningEffort: z<"low" | "off" | "high" | "max", "low" | "off" | "high" | "max", "volatile">;
80
80
  maxTokens: z<number, number, "volatile-defined">;
81
81
  defaultContextWindow: z<number, number, "volatile-defined">;
82
82
  models: z<NoInfer<DeepSeekCatalogModel[]>, NoInfer<DeepSeekCatalogModel[]>, "volatile-defined">;
@@ -95,7 +95,7 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
95
95
  }>>, Schemastery.ObjectT<NoInfer<{
96
96
  baseURL: z<string, string, "volatile">;
97
97
  thinking: z<"enabled" | "disabled", "enabled" | "disabled", "volatile">;
98
- reasoningEffort: z<"off" | "low" | "high" | "max", "off" | "low" | "high" | "max", "volatile">;
98
+ reasoningEffort: z<"low" | "off" | "high" | "max", "low" | "off" | "high" | "max", "volatile">;
99
99
  maxTokens: z<number, number, "volatile-defined">;
100
100
  defaultContextWindow: z<number, number, "volatile-defined">;
101
101
  models: z<NoInfer<DeepSeekCatalogModel[]>, NoInfer<DeepSeekCatalogModel[]>, "volatile-defined">;
@@ -5,7 +5,7 @@ export type Config = ProtocolConfig;
5
5
  export declare const Config: import("@deepseek-ai/schemastery").default<Schemastery.ObjectS<NoInfer<{
6
6
  baseURL: import("@deepseek-ai/schemastery").default<string, string, "volatile">;
7
7
  thinking: import("@deepseek-ai/schemastery").default<"enabled" | "disabled", "enabled" | "disabled", "volatile">;
8
- reasoningEffort: import("@deepseek-ai/schemastery").default<"off" | "low" | "high" | "max", "off" | "low" | "high" | "max", "volatile">;
8
+ reasoningEffort: import("@deepseek-ai/schemastery").default<"low" | "off" | "high" | "max", "low" | "off" | "high" | "max", "volatile">;
9
9
  maxTokens: import("@deepseek-ai/schemastery").default<number, number, "volatile-defined">;
10
10
  defaultContextWindow: import("@deepseek-ai/schemastery").default<number, number, "volatile-defined">;
11
11
  models: import("@deepseek-ai/schemastery").default<NoInfer<import("@deepseek-ai/dsh-llm-deepseek").DeepSeekCatalogModel[]>, NoInfer<import("@deepseek-ai/dsh-llm-deepseek").DeepSeekCatalogModel[]>, "volatile-defined">;
@@ -24,7 +24,7 @@ export declare const Config: import("@deepseek-ai/schemastery").default<Schemast
24
24
  }>>, Schemastery.ObjectT<NoInfer<{
25
25
  baseURL: import("@deepseek-ai/schemastery").default<string, string, "volatile">;
26
26
  thinking: import("@deepseek-ai/schemastery").default<"enabled" | "disabled", "enabled" | "disabled", "volatile">;
27
- reasoningEffort: import("@deepseek-ai/schemastery").default<"off" | "low" | "high" | "max", "off" | "low" | "high" | "max", "volatile">;
27
+ reasoningEffort: import("@deepseek-ai/schemastery").default<"low" | "off" | "high" | "max", "low" | "off" | "high" | "max", "volatile">;
28
28
  maxTokens: import("@deepseek-ai/schemastery").default<number, number, "volatile-defined">;
29
29
  defaultContextWindow: import("@deepseek-ai/schemastery").default<number, number, "volatile-defined">;
30
30
  models: import("@deepseek-ai/schemastery").default<NoInfer<import("@deepseek-ai/dsh-llm-deepseek").DeepSeekCatalogModel[]>, NoInfer<import("@deepseek-ai/dsh-llm-deepseek").DeepSeekCatalogModel[]>, "volatile-defined">;
@@ -14,7 +14,7 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
14
14
  apiKeyEnv: z<string, string, "volatile-defined">;
15
15
  baseURL: z<string, string, "volatile">;
16
16
  thinking: z<"enabled" | "disabled", "enabled" | "disabled", "volatile">;
17
- reasoningEffort: z<"off" | "low" | "high" | "max", "off" | "low" | "high" | "max", "volatile">;
17
+ reasoningEffort: z<"low" | "off" | "high" | "max", "low" | "off" | "high" | "max", "volatile">;
18
18
  maxTokens: z<number, number, "volatile-defined">;
19
19
  defaultContextWindow: z<number, number, "volatile-defined">;
20
20
  models: z<NoInfer<import("@deepseek-ai/dsh-llm-deepseek").DeepSeekCatalogModel[]>, NoInfer<import("@deepseek-ai/dsh-llm-deepseek").DeepSeekCatalogModel[]>, "volatile-defined">;
@@ -34,7 +34,7 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
34
34
  apiKeyEnv: z<string, string, "volatile-defined">;
35
35
  baseURL: z<string, string, "volatile">;
36
36
  thinking: z<"enabled" | "disabled", "enabled" | "disabled", "volatile">;
37
- reasoningEffort: z<"off" | "low" | "high" | "max", "off" | "low" | "high" | "max", "volatile">;
37
+ reasoningEffort: z<"low" | "off" | "high" | "max", "low" | "off" | "high" | "max", "volatile">;
38
38
  maxTokens: z<number, number, "volatile-defined">;
39
39
  defaultContextWindow: z<number, number, "volatile-defined">;
40
40
  models: z<NoInfer<import("@deepseek-ai/dsh-llm-deepseek").DeepSeekCatalogModel[]>, NoInfer<import("@deepseek-ai/dsh-llm-deepseek").DeepSeekCatalogModel[]>, "volatile-defined">;
@@ -2692,7 +2692,11 @@ let ScheduleService = (() => {
2692
2692
  const stop = ctx.on("workspace/session-stop", async ({ sessionId }) => {
2693
2693
  await this.stopSessionTasks(sessionId);
2694
2694
  });
2695
+ const deleted = ctx.on("session/deleting", async ({ sessionIds }) => {
2696
+ for (const sessionId of sessionIds) await this.stopSessionTasks(sessionId);
2697
+ });
2695
2698
  return () => {
2699
+ deleted();
2696
2700
  stop();
2697
2701
  activity();
2698
2702
  };
@@ -370,7 +370,7 @@ export const TYPERT = {
370
370
  typeSymbol: '@deepseek-ai/dsh-schedule#schedule/catalog:result',
371
371
  create: _deepseek_ai_dsh_schedule_schedule_catalog_result$schema,
372
372
  },
373
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":304,"column":9},
373
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":308,"column":9},
374
374
  },
375
375
  {
376
376
  id: '@deepseek-ai/dsh-schedule#schedule/delete',
@@ -396,7 +396,7 @@ export const TYPERT = {
396
396
  typeSymbol: '@deepseek-ai/dsh-schedule/client#ScheduleDeleteResult',
397
397
  create: _deepseek_ai_dsh_schedule_schedule_delete_result$schema,
398
398
  },
399
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":343,"column":9},
399
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":347,"column":9},
400
400
  },
401
401
  {
402
402
  id: '@deepseek-ai/dsh-schedule#schedule/history',
@@ -421,7 +421,7 @@ export const TYPERT = {
421
421
  typeSymbol: '@deepseek-ai/dsh-schedule/client#ScheduleDeliveryHistoryResult',
422
422
  create: _deepseek_ai_dsh_schedule_schedule_history_result$schema,
423
423
  },
424
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":322,"column":9},
424
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":326,"column":9},
425
425
  },
426
426
  {
427
427
  id: '@deepseek-ai/dsh-schedule#schedule/list',
@@ -446,7 +446,7 @@ export const TYPERT = {
446
446
  typeSymbol: '@deepseek-ai/dsh-schedule#schedule/list:result',
447
447
  create: _deepseek_ai_dsh_schedule_schedule_list_result$schema,
448
448
  },
449
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":290,"column":9},
449
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":294,"column":9},
450
450
  },
451
451
  {
452
452
  id: '@deepseek-ai/dsh-schedule#schedule/update',
@@ -472,7 +472,7 @@ export const TYPERT = {
472
472
  typeSymbol: '@deepseek-ai/dsh-schedule/client#ScheduleUpdateResult',
473
473
  create: _deepseek_ai_dsh_schedule_schedule_update_result$schema,
474
474
  },
475
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":370,"column":9},
475
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":374,"column":9},
476
476
  },
477
477
  ],
478
478
  model: {
@@ -367,7 +367,7 @@ export const TYPERT_REMOTE = {
367
367
  typeSymbol: '@deepseek-ai/dsh-schedule#schedule/catalog:result',
368
368
  create: _deepseek_ai_dsh_schedule_schedule_catalog_result$schema,
369
369
  },
370
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":304,"column":9},
370
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":308,"column":9},
371
371
  },
372
372
  {
373
373
  id: '@deepseek-ai/dsh-schedule#schedule/delete',
@@ -393,7 +393,7 @@ export const TYPERT_REMOTE = {
393
393
  typeSymbol: '@deepseek-ai/dsh-schedule/client#ScheduleDeleteResult',
394
394
  create: _deepseek_ai_dsh_schedule_schedule_delete_result$schema,
395
395
  },
396
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":343,"column":9},
396
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":347,"column":9},
397
397
  },
398
398
  {
399
399
  id: '@deepseek-ai/dsh-schedule#schedule/history',
@@ -418,7 +418,7 @@ export const TYPERT_REMOTE = {
418
418
  typeSymbol: '@deepseek-ai/dsh-schedule/client#ScheduleDeliveryHistoryResult',
419
419
  create: _deepseek_ai_dsh_schedule_schedule_history_result$schema,
420
420
  },
421
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":322,"column":9},
421
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":326,"column":9},
422
422
  },
423
423
  {
424
424
  id: '@deepseek-ai/dsh-schedule#schedule/list',
@@ -443,7 +443,7 @@ export const TYPERT_REMOTE = {
443
443
  typeSymbol: '@deepseek-ai/dsh-schedule#schedule/list:result',
444
444
  create: _deepseek_ai_dsh_schedule_schedule_list_result$schema,
445
445
  },
446
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":290,"column":9},
446
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":294,"column":9},
447
447
  },
448
448
  {
449
449
  id: '@deepseek-ai/dsh-schedule#schedule/update',
@@ -469,7 +469,7 @@ export const TYPERT_REMOTE = {
469
469
  typeSymbol: '@deepseek-ai/dsh-schedule/client#ScheduleUpdateResult',
470
470
  create: _deepseek_ai_dsh_schedule_schedule_update_result$schema,
471
471
  },
472
- sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":370,"column":9},
472
+ sourceLocation: {"file":"packages/schedule/schedule/src/index.ts","line":374,"column":9},
473
473
  },
474
474
  ],
475
475
  }