dsh-more 0.1.1 → 0.1.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 (30) hide show
  1. package/README.md +23 -6
  2. package/README.zh-CN.md +36 -6
  3. package/cordis.patch.yml +2 -0
  4. package/dist/client.js +380 -16
  5. package/dist/fast-mode.js +34 -0
  6. package/dist/index.js +222 -57
  7. package/dist/types/generated/host-settings-schema.d.ts +23 -19
  8. package/dist/types/generated/patch-catalog.d.ts +16 -0
  9. package/dist/types/kernel/client/activation.d.ts +2 -2
  10. package/dist/types/kernel/host/settings.d.ts +7 -3
  11. package/dist/types/patches/fast-mode/host/settings.d.ts +6 -0
  12. package/dist/types/patches/model-capabilities/client/index.d.ts +1 -1
  13. package/dist/types/patches/projectless-tasks/client/groups.d.ts +1 -1
  14. package/dist/types/patches/terminal-clipboard/client/clipboard.d.ts +5 -0
  15. package/dist/types/patches/terminal-clipboard/client/index.d.ts +2 -0
  16. package/dist/types/patches/terminal-clipboard/client/terminal.d.ts +17 -0
  17. package/dist/types/patches/terminal-clipboard/host/index.d.ts +2 -0
  18. package/dist/types/patches/terminal-clipboard/shared.d.ts +1 -0
  19. package/dist/types/patches/terminal-host-stats/client/bar.d.ts +5 -0
  20. package/dist/types/patches/terminal-host-stats/client/index.d.ts +2 -0
  21. package/dist/types/patches/terminal-host-stats/client/monitor.d.ts +2 -0
  22. package/dist/types/patches/terminal-host-stats/host/disks.d.ts +8 -0
  23. package/dist/types/patches/terminal-host-stats/host/index.d.ts +2 -0
  24. package/dist/types/patches/terminal-host-stats/host/sample.d.ts +16 -0
  25. package/dist/types/patches/terminal-host-stats/shared.d.ts +16 -0
  26. package/dist/types/platform/dsh/client/runtime.d.ts +5 -2
  27. package/dist/types/platform/dsh/client/settings.d.ts +15 -1
  28. package/docs/desktop-compatibility.md +82 -0
  29. package/dsh.plugin.json +2 -2
  30. package/package.json +70 -61
@@ -0,0 +1,17 @@
1
+ /** Only the public xterm surface is used after locating the native React ref. */
2
+ export interface TerminalHandle {
3
+ element: HTMLElement;
4
+ textarea: HTMLTextAreaElement;
5
+ options: {
6
+ disableStdin?: boolean;
7
+ };
8
+ getSelection(): string;
9
+ paste(text: string): void;
10
+ focus(): void;
11
+ }
12
+ /**
13
+ * DSH's TerminalScreen keeps xterm in a useRef but exposes no terminal API.
14
+ * Isolate the version-sensitive lookup here, bound every walk, and fail closed.
15
+ * Never mutate React internals, xterm prototypes, or the native key handler.
16
+ */
17
+ export declare function resolveTerminal(root: HTMLElement): TerminalHandle | undefined;
@@ -0,0 +1,2 @@
1
+ import type { HostPatch } from '../../../kernel/host/patch.js';
2
+ export declare const hostPatch: HostPatch;
@@ -0,0 +1 @@
1
+ export declare const TERMINAL_CLIPBOARD_PATCH_ID = "terminal-clipboard";
@@ -0,0 +1,5 @@
1
+ import type { HostStats } from '../shared.js';
2
+ export declare function createBar(doc: Document): {
3
+ node: HTMLDivElement;
4
+ render: (stats: HostStats | null, failed?: boolean) => void;
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { ClientPatch } from '../../../kernel/client/patch.js';
2
+ export declare const clientPatch: ClientPatch;
@@ -0,0 +1,2 @@
1
+ import type { HostStats } from '../shared.js';
2
+ export declare function installMonitor(doc: Document, sample: () => Promise<HostStats>): () => void;
@@ -0,0 +1,8 @@
1
+ export type Counters = Map<string, {
2
+ read: number;
3
+ write: number;
4
+ }>;
5
+ export declare function linuxCounters(source: string, wholeDisks: ReadonlySet<string>): Counters;
6
+ export declare function macCounters(source: string): Counters;
7
+ export declare function windowsCounters(source: string): Counters;
8
+ export declare function readDiskCounters(): Promise<Counters>;
@@ -0,0 +1,2 @@
1
+ import type { HostPatch } from '../../../kernel/host/patch.js';
2
+ export declare const hostPatch: HostPatch;
@@ -0,0 +1,16 @@
1
+ import type { HostStats } from '../shared.js';
2
+ import { type Counters } from './disks.js';
3
+ interface Reading {
4
+ at: number;
5
+ cpu: {
6
+ count: number;
7
+ idle: number;
8
+ total: number;
9
+ };
10
+ memory: HostStats['memory'];
11
+ disk: HostStats['disk'];
12
+ counters: Counters;
13
+ }
14
+ declare function readHost(): Promise<Reading>;
15
+ export declare function createSampler(collect?: typeof readHost): () => Promise<HostStats>;
16
+ export {};
@@ -0,0 +1,16 @@
1
+ export declare const TERMINAL_HOST_STATS_ID = "terminal-host-stats";
2
+ export interface HostStats {
3
+ cpuPercent: number | null;
4
+ memory: {
5
+ used: number;
6
+ total: number;
7
+ } | null;
8
+ disk: {
9
+ available: number;
10
+ total: number;
11
+ } | null;
12
+ io: {
13
+ read: number;
14
+ write: number;
15
+ } | null;
16
+ }
@@ -2,7 +2,9 @@ import type { Context } from '@deepseek-ai/cordis';
2
2
  import type { ISessions, SessionListState } from '@deepseek-ai/dsh-api-session-controller/client';
3
3
  import type { IWorkspaces } from '@deepseek-ai/dsh-api-workspace-controller/client';
4
4
  import type { SessionId } from '@deepseek-ai/dsh-session/types';
5
- export interface RefreshableSessions extends Pick<ISessions, 'list' | 'open'> {
5
+ export type OpenSession = (id: SessionId | undefined) => void;
6
+ export interface RefreshableSessions extends Pick<ISessions, 'list'> {
7
+ open: OpenSession;
6
8
  refresh(): Promise<void>;
7
9
  }
8
10
  export interface RefreshableWorkspaces extends IWorkspaces {
@@ -12,7 +14,8 @@ export interface SessionReference {
12
14
  ready: Promise<unknown>;
13
15
  release(): void;
14
16
  }
15
- export interface TaskSessionActions extends Pick<ISessions, 'create' | 'open'> {
17
+ export interface TaskSessionActions extends Pick<ISessions, 'create'> {
18
+ open: OpenSession;
16
19
  retain?(id: SessionId): SessionReference;
17
20
  }
18
21
  /** 0.1.7 moved view selection out of the catalog and exposes reference owners. */
@@ -1,5 +1,19 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
- import type { SettingsScope, SettingsScopeSpec } from '@deepseek-ai/dsh-client-ui-settings/client';
2
+ import type { ConfigForm as NativeConfigForm, ConfigFormSnapshot } from '@deepseek-ai/dsh-client-ui-settings/client';
3
+ /** Plugin-owned facade: old scopes throw on refusal; native forms return a boolean. */
4
+ export interface SettingsScopeSnapshot<T> extends ConfigFormSnapshot<T> {
5
+ mode?: 'host' | 'local';
6
+ }
7
+ export interface SettingsScopeSpec<T> {
8
+ namespace: string;
9
+ decode?(value: unknown): T | undefined;
10
+ }
11
+ export interface SettingsScope<T> extends Omit<NativeConfigForm<T>, 'set' | 'unset' | 'mutate'> {
12
+ getSnapshot(): SettingsScopeSnapshot<T>;
13
+ set(field: string, value: unknown): Promise<void>;
14
+ unset(field: string): Promise<void>;
15
+ mutate(...args: Parameters<NativeConfigForm<T>['mutate']>): Promise<void>;
16
+ }
3
17
  /** Keep feature consumers stable across the settingsScope -> configForms service rename. */
4
18
  export declare function bindSettings<T>(ctx: Context, spec: SettingsScopeSpec<T>): SettingsScope<T>;
5
19
  /** Each supported DSH release provides one of these settings services. */
@@ -1,5 +1,87 @@
1
1
  # 桌面端兼容记录
2
2
 
3
+ ## 2026-10-22:DSH 0.2.1-rc.2 与 Windows 适配
4
+
5
+ 本次保留原有全部功能及工作区已有修改,没有使用 `allow-version` 或关闭补丁来绕过兼容问题。开发 SDK 和锁文件已固定到 `0.2.1-rc.2`,Cordis 4.0.5、Schemastery 3.18.5;既有 `^0.2.1-alpha.5` peer 本身覆盖同版本基线的 RC,不需另加不安全豁免。
6
+
7
+ ### 已发现的问题
8
+
9
+ | 问题 | 处理 |
10
+ | --- | --- |
11
+ | 构建将 `URL.pathname` 作为 esbuild 工作目录,Windows 盘符以及包含空格、中文、`#`、`%` 的路径会错误 | 统一使用 `fileURLToPath`;在特殊字符目录从不同 cwd 执行真实构建回归 |
12
+ | release 直接 spawn npm,Windows 的 `npm.cmd` 不能作为普通可执行程序启动 | 找到 `npm-cli.js` 后交给 Node 执行;不使用 shell,避免参数中的 `%s`、引号和符号被解释 |
13
+ | Desktop 验收硬编码 macOS 路径,默认 symlink 在 Windows 受权限限制 | 增加 Windows 安装目录/exe 查找与显式路径;目录链接使用 junction;清理重试处理临时文件锁 |
14
+ | Markdown 下载使用 Windows 保留设备名(CON、AUX、COM1 等) | 安全前缀并处理截断后的尾随点,保留普通文件名 |
15
+ | 加速设置缺少配置入口,保存失败前提前改变内存状态 | 补齐原生 Config entry,保存成功后生效;保留会话开关与自定义参数 |
16
+ | 加速拦截器把网络失败也当作准备失败,再发一次原请求;`/fast` 忽略补丁开关 | 网络和取消错误不重复发送;命令可用性和执行均检查实时开关 |
17
+
18
+ 这些是代码中确认的问题;由于没有用户 Windows 报错日志,不能断言每一项都是该机器本次无法使用的直接原因。Web 与 Desktop profile 分离,装到 `web` 不会加载到桌面端,也必须核对。
19
+
20
+ ### 验证与边界
21
+
22
+ - macOS 上使用 Node **24.22.1** 完成 `npm run check`:清单、peer、类型、**46 个测试文件 / 359 项测试**、**11 项脚本回归**和构建全部通过,无跳过。
23
+ - npm SDK Host 和本机实际安装的 Desktop Host 均为 **0.2.1-rc.2**,隔离验收通过。除历史功能外,新增原生加速设置保存、读取、启停和 loopback HTTP 请求验证,确认发出 `service_tier: priority` 与自定义请求头,关闭补丁时不加速。
24
+ - 隔离 Desktop profile 仍出现上游 telemetry `serviceVersion` 缺失及 analytics 等待警告;插件断言全部通过。原生 UI fixture 图标警告不计作真实窗口验收。
25
+ - 目标 RC 的真实 SDK Host 使用临时 DSH_HOME 和本地模型替身;不读取用户历史或使用模型密钥。检查 bundle 没有被跳过、受认证 Fetch registry、未登录请求 401。
26
+ - Windows 路径语义测试覆盖盘符、UNC、长路径、中文空格、独立任务识别、精确会话目录删除和危险路径拒绝。
27
+ - CI 扩展为 Linux / Windows / macOS × Node 22.19 / 24,并在 Node 24 上跑 SDK Host。**配置 CI 不等于已执行远端 Windows CI;本轮无 Windows 实机逐项验收。**
28
+ - 工作区同期新增的 `terminal-clipboard` 也保留在构建和全量测试中;本次不覆盖其实现。
29
+
30
+ ### Windows 重跑和安装
31
+
32
+ ```powershell
33
+ pnpm install --frozen-lockfile
34
+ pnpm run check
35
+ pnpm run test:runtime
36
+ # 可选:检查这台机器实际安装的 Desktop,不是 npm SDK
37
+ $env:DSH_MORE_DESKTOP_APP = "C:\实际安装目录\DeepSeek Harness.exe"
38
+ pnpm run test:desktop
39
+ npm pack
40
+ ```
41
+
42
+ 把生成的包安装到**实际使用的 profile**;桌面端需先完整退出,并使用 Desktop 自带 `dsh`(不是 npm 通用 CLI):
43
+
44
+ ```powershell
45
+ Get-Command dsh | Select-Object Source
46
+ dsh --version
47
+ dsh plugin --profile desktop add "C:\Downloads\dsh-more-0.1.1.tgz"
48
+ dsh plugin --profile desktop list dsh-more --depth 0
49
+ ```
50
+
51
+ 重新打开 Desktop 后,在设置里确认所有补丁开关,再用测试会话验收:编辑续跑、用户/助手消息删除、冷/实时会话永久删除、模型能力保存、加速及 `/fast`、Markdown 下载、自动标题、独立任务和手动归组;检查源会话历史保留,开关关闭/恢复和重启后的配置持久化。终端复制粘贴按其当前工作区功能单独验证。
52
+
53
+ 本次修复尚未发布 npm;不能用 `dsh-more@latest` 代替这里的本地修复包。没有重启或修改用户正在运行的 DSH,也没有提交/推送代码。
54
+
55
+ ## 2026-10-16:适配 DSH 0.2.1-alpha.5
56
+
57
+ npm 的 `alpha` 标签在本轮查询时为 `0.2.1-alpha.5`。本轮修改:
58
+
59
+ - 宿主 DSH peer 保留既有 RC 分支,并增加 `^0.2.1-alpha.5`;Cordis/Schemastery 也显式允许对应 alpha。开发 SDK 与锁文件统一固定在已验证的 alpha,不用全量预发布豁免。
60
+ - 移除已被 alpha 删除的 `webRuntime` 强注入,避免插件永久等待服务;Host 与插件清单的注入声明保持一致,并等待 `connection` 就绪。
61
+ - 预设类型依赖从已停止发布的 `dsh-agent-presets` 迁到 `dsh-agent-preset-registry`,保留原有 `agentPresets.composeFrom` 的精确代际继承。
62
+ - 设置、会话导航、旧菜单插槽统一收敛到适配层;内容 Factory 改用正式 `ConversationContentProps`,不再借用已变窄的 shell props。
63
+ - 导出兼容 alpha 的一等工具结果消息及旧版包裹内容,正确保留失败标记;续跑上下文同时识别新版 `runtime-context` 来源与旧版插件来源。
64
+ - 测试改用真实 SettingsForms(仅配置文档 IO 为内存替身),原生 SlotRegistry/renderer/ConversationContent 默认读取固定 SDK;不再因没有 Desktop 安装包而跳过。
65
+
66
+ 验证范围:
67
+
68
+ - 类型检查、全量 Vitest **41 个文件、296 项测试通过,无跳过**,包含原生 alpha 客户端模块。
69
+ - 隔离 alpha Host 与本机 Desktop `0.2.0-rc.2` 均通过导出、编辑续跑、删除重建、原历史保留、归组持久化、永久删除、补丁开关、模型能力保存/冲突及标题中间件验收;同时断言 bundle 未被跳过、路由进入认证 Fetch registry、未登录请求返回 401。
70
+ - 两种 Host 验收只用临时 DSH_HOME 和模型替身;未使用用户密钥或修改用户会话。隔离 desktop composition 仍会报告上游 telemetry serviceVersion 缺失及 analytics 等待警告,与插件断言无关。
71
+ - 原生内容测试的图标替身有 React 属性警告,不影响功能断言。现有 RC 安装包的原生客户端两项回归也通过。
72
+ - `pnpm run check`、peer 检查、构建、`npm pack --dry-run` 和 diff 空白检查均通过。本机最终源码验证使用现有 Node.js 26.3.0;已配置 Node 22/24 CI,但本轮未执行远端 CI。宿主自带的签名 Node 24 因 macOS 库验证拒载 npm 的 rolldown 原生绑定,未通过修改签名或关闭安全检查绕过。
73
+
74
+ 重跑:
75
+
76
+ ```sh
77
+ pnpm install --frozen-lockfile
78
+ pnpm run check
79
+ pnpm run test:runtime # 固定 npm alpha Host;已加入 CI Node 24
80
+ pnpm run test:desktop # 本机 Desktop 安装包
81
+ ```
82
+
83
+ 本轮没有替换或重启用户的 DSH,没有 alpha 真实窗口逐项点击验收,也未发布 npm、提交或推送。已有本地链接安装需重启 DSH 并刷新页面,让新 peer、Host 与 Client 一起加载。
84
+
3
85
  ## 2026-10-15:适配 Desktop 0.2.0-rc.2
4
86
 
5
87
  本次确认并修复两层失效,未使用版本豁免绕过 DSH 的兼容检查:
package/dsh.plugin.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "dsh-more",
3
3
  "description": "Practical patches for missing DSH Web context and history controls",
4
- "version": "0.1.1",
4
+ "version": "0.1.3",
5
5
  "entry": {
6
6
  "name": "dsh-more",
7
7
  "inject": [
8
8
  "webServer",
9
- "webRuntime",
10
9
  "agents",
11
10
  "sessions",
11
+ "connection",
12
12
  "sessionPersistence",
13
13
  "sessionProjections",
14
14
  "workspaceRegistry",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-more",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Practical patches for missing DeepSeek Harness Web context and history controls.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -41,7 +41,11 @@
41
41
  "types": "./dist/types/patches/projectless-tasks/host/settings.d.ts",
42
42
  "default": "./dist/session-groups.js"
43
43
  },
44
- "./package.json": "./package.json"
44
+ "./package.json": "./package.json",
45
+ "./fast-mode": {
46
+ "types": "./dist/types/patches/fast-mode/host/settings.d.ts",
47
+ "default": "./dist/fast-mode.js"
48
+ }
45
49
  },
46
50
  "files": [
47
51
  "dist",
@@ -81,8 +85,10 @@
81
85
  "build": "node build.mjs",
82
86
  "typecheck": "npm run generate && tsc --noEmit",
83
87
  "test": "npm run generate && vitest run",
88
+ "test:scripts": "node --test scripts/platform-regression.mjs",
89
+ "test:runtime": "npm run build && node scripts/check-desktop-runtime.mjs --sdk",
84
90
  "test:desktop": "npm run build && node scripts/check-desktop-runtime.mjs",
85
- "check": "npm run validate:package && npm run peers:check && npm run typecheck && npm run test && npm run build",
91
+ "check": "npm run validate:package && npm run peers:check && npm run typecheck && npm run test:scripts && npm run test && npm run build",
86
92
  "package": "npm pack",
87
93
  "package:check": "npm pack --dry-run",
88
94
  "release": "node scripts/release.mjs",
@@ -94,59 +100,58 @@
94
100
  "prepack": "npm run check"
95
101
  },
96
102
  "peerDependencies": {
97
- "@deepseek-ai/cordis": "^4.0.2",
98
- "@deepseek-ai/dsh-agent": "^0.1.5-rc.2 || ^0.2.0-rc.2",
99
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.2 || ^0.2.0-rc.2",
100
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.2 || ^0.2.0-rc.2",
101
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.2 || ^0.2.0-rc.2",
102
- "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.5-rc.2 || ^0.2.0-rc.2",
103
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.2 || ^0.2.0-rc.2",
104
- "@deepseek-ai/dsh-compaction": "^0.1.5-rc.2 || ^0.2.0-rc.2",
105
- "@deepseek-ai/dsh-agent-presets": "^0.1.5-rc.2 || ^0.2.0-rc.2",
106
- "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.2 || ^0.2.0-rc.2",
107
- "@deepseek-ai/dsh-llm": "^0.1.5-rc.2 || ^0.2.0-rc.2",
108
- "@deepseek-ai/dsh-session": "^0.1.5-rc.2 || ^0.2.0-rc.2",
109
- "@deepseek-ai/dsh-session-persistence": "^0.1.5-rc.2 || ^0.2.0-rc.2",
110
- "@deepseek-ai/dsh-session-projection": "^0.1.5-rc.2 || ^0.2.0-rc.2",
111
- "@deepseek-ai/dsh-settings": "^0.1.5-rc.2 || ^0.2.0-rc.2",
112
- "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.2 || ^0.2.0-rc.2",
113
- "@deepseek-ai/dsh-workspace": "^0.1.5-rc.2 || ^0.2.0-rc.2",
114
- "@deepseek-ai/dsh-web-app": "^0.1.5-rc.2 || ^0.2.0-rc.2",
115
- "@deepseek-ai/schemastery": "^3.18.2",
103
+ "@deepseek-ai/cordis": "^4.0.2 || ^4.0.5-alpha.2",
104
+ "@deepseek-ai/dsh-agent": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
105
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
106
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
107
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
108
+ "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
109
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
110
+ "@deepseek-ai/dsh-compaction": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
111
+ "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
112
+ "@deepseek-ai/dsh-llm": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
113
+ "@deepseek-ai/dsh-session": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
114
+ "@deepseek-ai/dsh-session-persistence": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
115
+ "@deepseek-ai/dsh-session-projection": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
116
+ "@deepseek-ai/dsh-settings": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
117
+ "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
118
+ "@deepseek-ai/dsh-workspace": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
119
+ "@deepseek-ai/dsh-web-app": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
120
+ "@deepseek-ai/schemastery": "^3.18.2 || ^3.18.5-alpha.2",
116
121
  "react": "^18.2.0",
117
122
  "react-dom": "^18.2.0",
118
123
  "zod": "^4.4.3",
119
- "@deepseek-ai/dsh-api-session-controller": "^0.1.5-rc.2 || ^0.2.0-rc.2",
120
- "@deepseek-ai/dsh-api-workspace-controller": "^0.1.5-rc.2 || ^0.2.0-rc.2",
121
- "@deepseek-ai/dsh-client-ui-chat": "^0.1.5-rc.2 || ^0.2.0-rc.2",
122
- "@deepseek-ai/dsh-client-ui-session": "^0.1.5-rc.2 || ^0.2.0-rc.2",
123
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.2 || ^0.2.0-rc.2",
124
- "@deepseek-ai/dsh-client-store": "^0.1.5-rc.2 || ^0.2.0-rc.2",
125
- "@deepseek-ai/dsh-llm-retry": "^0.1.5-rc.2 || ^0.2.0-rc.2",
126
- "@deepseek-ai/dsh-session-title": "^0.1.5-rc.2 || ^0.2.0-rc.2",
127
- "@deepseek-ai/dsh-client-ui-layout": "^0.1.5-rc.2 || ^0.2.0-rc.2"
124
+ "@deepseek-ai/dsh-api-session-controller": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
125
+ "@deepseek-ai/dsh-api-workspace-controller": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
126
+ "@deepseek-ai/dsh-client-ui-chat": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
127
+ "@deepseek-ai/dsh-client-ui-session": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
128
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
129
+ "@deepseek-ai/dsh-client-store": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
130
+ "@deepseek-ai/dsh-llm-retry": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
131
+ "@deepseek-ai/dsh-session-title": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5",
132
+ "@deepseek-ai/dsh-client-ui-layout": "^0.1.5-rc.2 || ^0.2.0-rc.2 || ^0.2.1-alpha.5"
128
133
  },
129
134
  "devDependencies": {
130
- "@deepseek-ai/cordis": "^4.0.2",
131
- "@deepseek-ai/dsh-agent": "^0.1.5-rc.2",
132
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.2",
133
- "@deepseek-ai/dsh-client-ui-layout": "^0.1.5-rc.2",
134
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.2",
135
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.2",
136
- "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.5-rc.2",
137
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.5-rc.2",
138
- "@deepseek-ai/dsh-compaction": "^0.1.5-rc.2",
139
- "@deepseek-ai/dsh-agent-presets": "^0.1.5-rc.2",
140
- "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.2",
141
- "@deepseek-ai/dsh-llm": "^0.1.5-rc.2",
142
- "@deepseek-ai/dsh-session": "^0.1.5-rc.2",
143
- "@deepseek-ai/dsh-session-persistence": "^0.1.5-rc.2",
144
- "@deepseek-ai/dsh-session-projection": "^0.1.5-rc.2",
145
- "@deepseek-ai/dsh-settings": "^0.1.5-rc.2",
146
- "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.2",
147
- "@deepseek-ai/dsh-workspace": "^0.1.5-rc.2",
148
- "@deepseek-ai/dsh-web-app": "^0.1.5-rc.2",
149
- "@deepseek-ai/schemastery": "^3.18.2",
135
+ "@deepseek-ai/dsh": "0.2.1-rc.2",
136
+ "@deepseek-ai/cordis": "4.0.5",
137
+ "@deepseek-ai/dsh-agent": "0.2.1-rc.2",
138
+ "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.2",
139
+ "@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.2",
140
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.2",
141
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.2",
142
+ "@deepseek-ai/dsh-client-ui-settings-plugins": "0.2.1-rc.2",
143
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.2",
144
+ "@deepseek-ai/dsh-compaction": "0.2.1-rc.2",
145
+ "@deepseek-ai/dsh-host-webserver": "0.2.1-rc.2",
146
+ "@deepseek-ai/dsh-llm": "0.2.1-rc.2",
147
+ "@deepseek-ai/dsh-session": "0.2.1-rc.2",
148
+ "@deepseek-ai/dsh-session-persistence": "0.2.1-rc.2",
149
+ "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2",
150
+ "@deepseek-ai/dsh-settings": "0.2.1-rc.2",
151
+ "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2",
152
+ "@deepseek-ai/dsh-workspace": "0.2.1-rc.2",
153
+ "@deepseek-ai/dsh-web-app": "0.2.1-rc.2",
154
+ "@deepseek-ai/schemastery": "3.18.5",
150
155
  "@types/node": "^24.0.0",
151
156
  "@types/react": "^18.3.0",
152
157
  "@types/react-dom": "^18.3.0",
@@ -155,16 +160,20 @@
155
160
  "react-dom": "^18.3.1",
156
161
  "typescript": "^5.9.2",
157
162
  "vitest": "^4.0.0",
158
- "zod": "^4.4.3",
159
- "@deepseek-ai/dsh-api-session-controller": "^0.1.5-rc.2",
160
- "@deepseek-ai/dsh-api-workspace-controller": "^0.1.5-rc.2",
161
- "@deepseek-ai/dsh-client-ui-chat": "^0.1.5-rc.2",
162
- "@deepseek-ai/dsh-client-ui-session": "^0.1.5-rc.2",
163
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.2",
164
- "@deepseek-ai/dsh-client-store": "^0.1.5-rc.2",
165
- "@deepseek-ai/dsh-llm-retry": "^0.1.5-rc.2",
163
+ "zod": "4.4.3",
164
+ "@deepseek-ai/dsh-api-session-controller": "0.2.1-rc.2",
165
+ "@deepseek-ai/dsh-api-workspace-controller": "0.2.1-rc.2",
166
+ "@deepseek-ai/dsh-client-ui-chat": "0.2.1-rc.2",
167
+ "@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.2",
168
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.2",
169
+ "@deepseek-ai/dsh-client-store": "0.2.1-rc.2",
170
+ "@deepseek-ai/dsh-llm-retry": "0.2.1-rc.2",
166
171
  "happy-dom": "^20.14.0",
167
- "@deepseek-ai/dsh-session-title": "^0.1.5-rc.2",
168
- "@deepseek-ai/dsh-session-persistence-jsonl": "^0.1.5-rc.2"
172
+ "@deepseek-ai/dsh-session-title": "0.2.1-rc.2",
173
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-rc.2",
174
+ "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-rc.2",
175
+ "@deepseek-ai/cordis-plugin-include": "1.0.10",
176
+ "@deepseek-ai/cordis-plugin-loader": "1.0.6",
177
+ "@deepseek-ai/cordis-plugin-group": "1.0.5"
169
178
  }
170
179
  }