dsh-ui-tweaks 0.17.3 → 0.18.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/README.en.md +18 -12
- package/README.md +14 -11
- package/lib/config.js +25 -20
- package/lib/config.js.map +1 -1
- package/lib/index.js +43 -22
- package/lib/index.js.map +1 -1
- package/lib/types/config.d.ts +48 -3
- package/lib/types/config.d.ts.map +1 -1
- package/lib/types/index.d.ts +18 -5
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/turn-outcome.d.ts +1 -1
- package/lib/types/turn-outcome.d.ts.map +1 -1
- package/package.json +45 -45
package/README.en.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# dsh-ui-tweaks
|
|
2
2
|
|
|
3
|
-
> **Dependency**: currently targets **DSH v0.1.
|
|
3
|
+
> **Dependency**: currently targets **DSH v0.1.7-rc.1**.
|
|
4
4
|
|
|
5
5
|
A [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/) (DSH) web plugin that live-tunes the conversation UI from the Settings panel.
|
|
6
6
|
|
|
@@ -39,17 +39,20 @@ A [DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/) (DSH)
|
|
|
39
39
|
- "Only when hidden" defaults on (no nagging while you watch the page); the first snapshot only arms the baseline (a page reload never fires a burst); events fire on transitions with a 2s per-session+kind cooldown (reconnect flicker absorbed); subagent child rows are skipped (the parent carries the turn). A **Test** button in Settings previews permission and channels in one click.
|
|
40
40
|
- **Precise cache hit (toggleable, off by default)** — DSH's stats line shows the cache-hit share as a bare integer ("Cache hit 96%"). When enabled, the figure is rewritten to two decimals ("Cache hit 96.35%") and computed from the raw token buckets — cache reads ÷ billed input (uncached input + cache reads + cache writes) — the same source as the stock number, just unrounded; a full hit shows 100.00%, and with no billed input the group is absent anyway. The toggle lives in the Layout settings group; turning it off restores the stock figure.
|
|
41
41
|
|
|
42
|
-
All changes apply **live** — no reload needed. The same values can be hand-edited in the settings
|
|
42
|
+
All changes apply **live** — no reload needed. The same values can be hand-edited in the profile's `cordis.patch.yml` (the document the Settings page writes; `settings.yaml` was retired in DSH 0.1.7):
|
|
43
43
|
|
|
44
44
|
```yaml
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
# $DSH_HOME/profiles/<profile>/cordis.patch.yml
|
|
46
|
+
- id: ui-tweaks
|
|
47
|
+
name: dsh-ui-tweaks
|
|
48
|
+
config:
|
|
49
|
+
timelineStyle: web # defaults to native (DSH's built-in turn rail); web is the classic web timeline
|
|
50
|
+
themeStyle: minimal # defaults to default (DSH's stock look); minimal tints markdown inline code Anthropic red (#c15f3c light / #d97757 dark), neon-lime is the neon-poster skin
|
|
51
|
+
gitBarEnabled: true # defaults to false (off); set true to enable GitBar
|
|
52
|
+
archiveManagerEnabled: true # defaults to false (off); set true to show the Archive page
|
|
53
|
+
initCommandEnabled: true # defaults to false (off); set true to register the /init slash command
|
|
54
|
+
preciseCacheHitEnabled: true # defaults to false (off); set true to enable the two-decimal cache-hit figure
|
|
55
|
+
notificationsEnabled: true # defaults to false (off); set true to enable task alerts (event filters & channels are per-item toggles in Settings)
|
|
53
56
|
```
|
|
54
57
|
|
|
55
58
|
Settings entry: **Settings → UI Tweaks**.
|
|
@@ -104,8 +107,11 @@ npx -y @deepseek-ai/dsh plugin --profile web add . # bundle install from
|
|
|
104
107
|
|
|
105
108
|
## How it works
|
|
106
109
|
|
|
107
|
-
- **Server** (`src/index.ts`)
|
|
108
|
-
|
|
110
|
+
- **Server** (`src/index.ts`) exports the `Config` settings schema — since DSH
|
|
111
|
+
0.1.7 the Settings form is derived from a plugin's exported `Config`
|
|
112
|
+
(the old `settings.register()` is gone) and `configure({ auto: false })`
|
|
113
|
+
suppresses the auto-generated page in favor of the client's own sections —
|
|
114
|
+
and mounts a same-origin route (`/_dsh/ui-tweaks/settings`) — the Web settings
|
|
109
115
|
RPC only exposes a fixed allowlist of namespaces since rc.6, so a custom route
|
|
110
116
|
is how a plugin owns a configuration page.
|
|
111
117
|
- **Browser** (`src/client/index.tsx`) reads/writes that route, renders the
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# dsh-ui-tweaks
|
|
2
2
|
|
|
3
|
-
> **依赖版本**:当前依赖 **DSH v0.1.
|
|
3
|
+
> **依赖版本**:当前依赖 **DSH v0.1.7-rc.1**。
|
|
4
4
|
|
|
5
5
|
[DeepSeek Harness](https://deepseek-harness.github.io/deepseek-harness/)(DSH)Web UI 插件:在设置面板中实时调整对话界面——代码字号、**主题皮肤**(简约 / 荧光海报)、**时间线切换**(原生回合导航轨 / 经典网页时间线)、**GitBar**(会话头部的分支胶囊 + 右侧边栏里的代码差异标签页),可开关的**归档管理**(设置中的「归档」页面:查看、恢复或彻底删除已归档会话),可开关的**任务提醒**(会话完成或需要交互时,通过标签页标题闪烁 / 系统通知 / 提示音把你唤回来),以及**缓存命中率两位小数**(把输入框下方统计条的缓存命中百分比改写为精确值)。
|
|
6
6
|
|
|
@@ -42,17 +42,20 @@
|
|
|
42
42
|
- 「仅页面不可见时」默认开启(正盯着页面时不打扰);首帧快照只武装不触发(刷新页面不刷屏);只在跳变沿触发 + 同会话同类事件 2 秒冷却(防重连抖动);子代理子会话不计(父会话承载整轮)。设置里有「测试」按钮,一键预览权限申请与通道效果。
|
|
43
43
|
- **缓存命中率两位小数(可开关,默认关闭)**:DSH 原生统计条里的缓存命中只显示整数百分比(如「缓存命中 96%」)。开启后改写为两位小数(如「缓存命中 96.35%」),且**直接用原始 token 数计算**——缓存读取 ÷ 计费输入(未缓存输入 + 缓存读取 + 缓存写入),与原生数字同源、但不再取整;完全命中显示 100.00%,无计费输入时该组本就不显示。开关位于设置的「布局」区,关闭即恢复原样。
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
所有修改**即时生效**,无需刷新。同一份配置也可以直接手改——DSH 0.1.7 起 `settings.yaml` 已退役,配置写在 profile 的 `cordis.patch.yml`(设置页保存时写入的就是这份文件):
|
|
46
46
|
|
|
47
47
|
```yaml
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
# $DSH_HOME/profiles/<profile>/cordis.patch.yml
|
|
49
|
+
- id: ui-tweaks
|
|
50
|
+
name: dsh-ui-tweaks
|
|
51
|
+
config:
|
|
52
|
+
timelineStyle: web # 默认 native(DSH 自带回合导航轨),web 为经典网页时间线
|
|
53
|
+
themeStyle: minimal # 默认 default(DSH 原生外观),minimal 只把行内代码染成 Anthropic 红(浅色 #c15f3c / 深色 #d97757),neon-lime 为荧光海报皮肤
|
|
54
|
+
gitBarEnabled: true # 默认 false(关闭),设为 true 开启 GitBar
|
|
55
|
+
archiveManagerEnabled: true # 默认 false(关闭),设为 true 开启「归档」页面
|
|
56
|
+
initCommandEnabled: true # 默认 false(关闭),设为 true 开启 /init 斜杠命令
|
|
57
|
+
preciseCacheHitEnabled: true # 默认 false(关闭),设为 true 开启缓存命中率两位小数
|
|
58
|
+
notificationsEnabled: true # 默认 false(关闭),设为 true 开启任务提醒(事件过滤与三个通道在设置里逐项开关)
|
|
56
59
|
```
|
|
57
60
|
|
|
58
61
|
设置入口:**设置 → 界面调整**。
|
|
@@ -104,7 +107,7 @@ npx -y @deepseek-ai/dsh plugin --profile web add . # 从本目录作为 b
|
|
|
104
107
|
|
|
105
108
|
## 工作原理
|
|
106
109
|
|
|
107
|
-
- **服务端**(`src/index.ts
|
|
110
|
+
- **服务端**(`src/index.ts`):导出 `Config` 设置 schema——0.1.7 起设置表单由宿主从插件导出的 `Config` 自动派生(旧的 `settings.register()` 已移除),插件再以 `configure({ auto: false })` 抑制自动生成页、由客户端各分区接管展示;并挂载同源路由 `/_dsh/ui-tweaks/settings`——自 rc.6 起,Web 设置 RPC 只暴露固定白名单命名空间,因此自定义路由是插件拥有配置页的方式。
|
|
108
111
|
- **Git 后端**(`src/git.ts` + `src/git-web.ts`):通过 `ctx.get('sessions')`(可选服务)解析会话 header 的 `cwd` 作为“当前项目”,用 `child_process.execFile('git', …)`(无 shell、cwd 固定、超时 + 中止传播)执行只读/写操作;同源路由 `/_dsh/ui-tweaks/git/*` 提供 status / branches / diff(hunk 或完整文件,含绝对行号)/ graph(结构化提交行,含父哈希,供前端排布分支 lane)/ commit / push / pull(仅快进)/ checkout / create / branch-delete / remote-delete。
|
|
109
112
|
- **浏览器端**(`src/client/index.tsx`):读写该路由、渲染设置页,并通过运行时 `<style>` 元素实时应用样式,覆盖稳定的 DSH 锚点(`body` 上的 markdown 代码字体 token 与主题变量、`[data-slot="conversation.chat.node"]` 内的代码块 / 表头)。
|
|
110
113
|
- **GitBar**(`src/client/gitbar.tsx`):分支胶囊挂在 `conversation.session.header.actions`(会话标题旁),代码差异则注册为右侧边栏原生标签页(page 类型:`ctx.sidebarRightTabs` 注册类型与指南入口,`sidebar.right.pane.tab` 按类型 id 注册内容,代码差异另注册标题席位在页签上补未提交改动的小黄点,随 `gitBarEnabled` 开关按需挂载)。视图是全高 flex 列:文件列表 / diff / 提交区三段高度分配采用「只给被拖的那一段显式高度、diff 段 `flex:1` 吃掉余量」的方式,配合 45% 上限,拖动永远不会撑破视图。提交保留在代码差异页底部的提交区。在外部应用中打开项目是 DSH 自带的 open-in-app 按钮,本插件的 `/open` 路由与 `openFolder` 后端已随之移除。提交图谱对话框的 lane 布局与 SVG 渲染拆在 `src/client/graphlayout.ts`(纯函数模块:父哈希 → 每行 lane / 边段,经典 first-parent 路由——第一父提交沿用原 lane 让线性历史始终一条线,合并与 fork 画贝塞尔弧线;`parents` 字段可选,兼容宿主里尚未重载的旧服务端)。
|
package/lib/config.js
CHANGED
|
@@ -50,27 +50,32 @@ export const DEFAULT_NOTIFY_ON_INTERACTION = true;
|
|
|
50
50
|
export const DEFAULT_NOTIFY_TITLE_FLASH = true;
|
|
51
51
|
export const DEFAULT_NOTIFY_SYSTEM_NOTIFICATION = true;
|
|
52
52
|
export const DEFAULT_NOTIFY_SOUND = false;
|
|
53
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Configuration schema with documented defaults. Every field is marked
|
|
55
|
+
* `.volatile()` (schemastery ≥3.18.3): since DSH 0.1.7 the Settings panel
|
|
56
|
+
* derives each plugin's form from its exported `Config` schema, and only
|
|
57
|
+
* volatile fields appear in the form (and stay editable without a remount).
|
|
58
|
+
*/
|
|
54
59
|
export const Config = z.object({
|
|
55
|
-
codeFontScale: z.number().min(MIN_CODE_FONT_SCALE).max(MAX_CODE_FONT_SCALE).default(DEFAULT_CODE_FONT_SCALE),
|
|
56
|
-
codeFontSize: z.number().min(MIN_CODE_FONT_SIZE).max(MAX_CODE_FONT_SIZE),
|
|
57
|
-
timelineStyle: z.union(['native', 'web']).default(DEFAULT_TIMELINE_STYLE),
|
|
58
|
-
themeStyle: z.union(['default', 'minimal', 'neon-lime']).default(DEFAULT_THEME_STYLE),
|
|
59
|
-
searchEnabled: z.boolean().default(DEFAULT_SEARCH_ENABLED),
|
|
60
|
-
searchEngine: z.union(['bing', 'ddg', 'exa', 'tavily', 'keenable', 'perplexity', 'deepseek']).default(DEFAULT_SEARCH_ENGINE),
|
|
61
|
-
bingMarket: z.union(BING_MARKET_OPTIONS).default(DEFAULT_BING_MARKET),
|
|
62
|
-
gitBarEnabled: z.boolean().default(DEFAULT_GITBAR_ENABLED),
|
|
63
|
-
archiveManagerEnabled: z.boolean().default(DEFAULT_ARCHIVE_MANAGER_ENABLED),
|
|
64
|
-
mcpManagerEnabled: z.boolean().default(DEFAULT_MCP_MANAGER_ENABLED),
|
|
65
|
-
initCommandEnabled: z.boolean().default(DEFAULT_INIT_COMMAND_ENABLED),
|
|
66
|
-
preciseCacheHitEnabled: z.boolean().default(DEFAULT_PRECISE_CACHE_HIT_ENABLED),
|
|
67
|
-
notificationsEnabled: z.boolean().default(DEFAULT_NOTIFICATIONS_ENABLED),
|
|
68
|
-
notifyOnlyWhenHidden: z.boolean().default(DEFAULT_NOTIFY_ONLY_WHEN_HIDDEN),
|
|
69
|
-
notifyOnComplete: z.boolean().default(DEFAULT_NOTIFY_ON_COMPLETE),
|
|
70
|
-
notifyOnInteraction: z.boolean().default(DEFAULT_NOTIFY_ON_INTERACTION),
|
|
71
|
-
notifyTitleFlash: z.boolean().default(DEFAULT_NOTIFY_TITLE_FLASH),
|
|
72
|
-
notifySystemNotification: z.boolean().default(DEFAULT_NOTIFY_SYSTEM_NOTIFICATION),
|
|
73
|
-
notifySound: z.boolean().default(DEFAULT_NOTIFY_SOUND),
|
|
60
|
+
codeFontScale: z.number().min(MIN_CODE_FONT_SCALE).max(MAX_CODE_FONT_SCALE).default(DEFAULT_CODE_FONT_SCALE).volatile(),
|
|
61
|
+
codeFontSize: z.number().min(MIN_CODE_FONT_SIZE).max(MAX_CODE_FONT_SIZE).volatile(),
|
|
62
|
+
timelineStyle: z.union(['native', 'web']).default(DEFAULT_TIMELINE_STYLE).volatile(),
|
|
63
|
+
themeStyle: z.union(['default', 'minimal', 'neon-lime']).default(DEFAULT_THEME_STYLE).volatile(),
|
|
64
|
+
searchEnabled: z.boolean().default(DEFAULT_SEARCH_ENABLED).volatile(),
|
|
65
|
+
searchEngine: z.union(['bing', 'ddg', 'exa', 'tavily', 'keenable', 'perplexity', 'deepseek']).default(DEFAULT_SEARCH_ENGINE).volatile(),
|
|
66
|
+
bingMarket: z.union(BING_MARKET_OPTIONS).default(DEFAULT_BING_MARKET).volatile(),
|
|
67
|
+
gitBarEnabled: z.boolean().default(DEFAULT_GITBAR_ENABLED).volatile(),
|
|
68
|
+
archiveManagerEnabled: z.boolean().default(DEFAULT_ARCHIVE_MANAGER_ENABLED).volatile(),
|
|
69
|
+
mcpManagerEnabled: z.boolean().default(DEFAULT_MCP_MANAGER_ENABLED).volatile(),
|
|
70
|
+
initCommandEnabled: z.boolean().default(DEFAULT_INIT_COMMAND_ENABLED).volatile(),
|
|
71
|
+
preciseCacheHitEnabled: z.boolean().default(DEFAULT_PRECISE_CACHE_HIT_ENABLED).volatile(),
|
|
72
|
+
notificationsEnabled: z.boolean().default(DEFAULT_NOTIFICATIONS_ENABLED).volatile(),
|
|
73
|
+
notifyOnlyWhenHidden: z.boolean().default(DEFAULT_NOTIFY_ONLY_WHEN_HIDDEN).volatile(),
|
|
74
|
+
notifyOnComplete: z.boolean().default(DEFAULT_NOTIFY_ON_COMPLETE).volatile(),
|
|
75
|
+
notifyOnInteraction: z.boolean().default(DEFAULT_NOTIFY_ON_INTERACTION).volatile(),
|
|
76
|
+
notifyTitleFlash: z.boolean().default(DEFAULT_NOTIFY_TITLE_FLASH).volatile(),
|
|
77
|
+
notifySystemNotification: z.boolean().default(DEFAULT_NOTIFY_SYSTEM_NOTIFICATION).volatile(),
|
|
78
|
+
notifySound: z.boolean().default(DEFAULT_NOTIFY_SOUND).volatile(),
|
|
74
79
|
});
|
|
75
80
|
/** Resolve a partial config into a fully defaulted value. */
|
|
76
81
|
export function resolveConfig(config = {}) {
|
package/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,CAAC,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dsh-ui-tweaks — server half.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Owns the `ui-tweaks` settings namespace so users can tune the conversation
|
|
5
|
+
* UI either from the Settings panel or by editing the profile patch
|
|
6
|
+
* (`cordis.patch.yml` `ui-tweaks` entry; settings.yaml was retired in DSH
|
|
7
|
+
* 0.1.7, which migrated its sections there). Since 0.1.7 the Settings panel
|
|
8
|
+
* derives each form from the plugin's exported `Config` schema — there is no
|
|
9
|
+
* explicit `settings.register()` anymore — so this module re-exports
|
|
10
|
+
* `Config` and opts out of the auto-generated form page (the browser half
|
|
11
|
+
* owns its sections through the `settings.section` slot). All rendering work
|
|
7
12
|
* happens in the browser bundle (`src/client`), which reads and writes this
|
|
8
13
|
* namespace through the same-origin route mounted here — the Web settings RPC
|
|
9
|
-
* only exposes a fixed allowlist of namespaces since rc.6, so a custom route
|
|
10
|
-
* the supported way for a plugin to own a configuration page.
|
|
14
|
+
* only exposes a fixed allowlist of namespaces since rc.6, so a custom route
|
|
15
|
+
* is the supported way for a plugin to own a configuration page.
|
|
11
16
|
* @module dsh-ui-tweaks
|
|
12
17
|
*/
|
|
13
18
|
import { UI_TWEAKS_SETTINGS_NAMESPACE, Config, } from "./config.js";
|
|
@@ -21,14 +26,23 @@ import { McpBackend, installMcpWeb } from "./mcp.js";
|
|
|
21
26
|
import { SearchBackend, installSearchWeb } from "./search-web.js";
|
|
22
27
|
import { createSearchProvider } from "./search.js";
|
|
23
28
|
export const name = 'dsh-ui-tweaks';
|
|
29
|
+
/**
|
|
30
|
+
* Re-export the Config schema so the Cordis loader attaches it to this
|
|
31
|
+
* plugin's runtime: since DSH 0.1.7 `SettingsForms` reads
|
|
32
|
+
* `entry.fiber.runtime.Config` to derive the settings form (the old
|
|
33
|
+
* `ctx.settings.register()` call no longer exists).
|
|
34
|
+
*/
|
|
35
|
+
export { Config };
|
|
24
36
|
/** Required services: the settings seam is the whole server-side surface. */
|
|
25
37
|
export const inject = ['settings', 'web'];
|
|
26
38
|
export function apply(ctx) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
39
|
+
// The Settings form is derived from the exported `Config` schema (DSH
|
|
40
|
+
// 0.1.7+). This client owns its Settings sections through the
|
|
41
|
+
// `settings.section` slot, so opt the instance out of the auto-generated
|
|
42
|
+
// form page instead of registering a namespace by hand.
|
|
43
|
+
ctx.effect(() => ctx.settings.configure({ auto: false }, ctx.fiber));
|
|
30
44
|
// The task notifier classifies turn endings (completed / aborted / failed)
|
|
31
|
-
// through this session projection (
|
|
45
|
+
// through this session projection (registered when present).
|
|
32
46
|
installTurnOutcomeProjection(ctx);
|
|
33
47
|
// The conversation timeline rail enumerates user messages through this
|
|
34
48
|
// session projection (registered when the projection service is present).
|
|
@@ -54,7 +68,7 @@ export function apply(ctx) {
|
|
|
54
68
|
installSearchWeb(ctx, searchBackend);
|
|
55
69
|
// Free web search: registering a provider into the web seam makes the
|
|
56
70
|
// harness's built-in `web_search` tool use it. The preferred engine and
|
|
57
|
-
// Bing market come live from the ui-tweaks settings
|
|
71
|
+
// Bing market come live from the ui-tweaks settings form; engine API
|
|
58
72
|
// keys resolve through the credentials center (~/.dsh/.credentials.yaml)
|
|
59
73
|
// first, then the process environment.
|
|
60
74
|
const web = ctx;
|
|
@@ -62,7 +76,8 @@ export function apply(ctx) {
|
|
|
62
76
|
const row = ctx.settings.describe().find(candidate => candidate.ns === UI_TWEAKS_SETTINGS_NAMESPACE);
|
|
63
77
|
return (row?.value?.searchEnabled) === true;
|
|
64
78
|
};
|
|
65
|
-
|
|
79
|
+
const seam = web.web;
|
|
80
|
+
if (seam) {
|
|
66
81
|
const readConfig = () => {
|
|
67
82
|
const row = ctx.settings.describe().find(candidate => candidate.ns === UI_TWEAKS_SETTINGS_NAMESPACE);
|
|
68
83
|
const value = row?.value;
|
|
@@ -87,23 +102,29 @@ export function apply(ctx) {
|
|
|
87
102
|
return process.env[envName];
|
|
88
103
|
};
|
|
89
104
|
const provider = createSearchProvider({ readConfig, resolveApiKey });
|
|
90
|
-
|
|
91
|
-
//
|
|
92
|
-
//
|
|
105
|
+
seam.registerSearchProvider(provider);
|
|
106
|
+
// Startup reconcile — deferred until this fiber is ACTIVE: since DSH
|
|
107
|
+
// 0.1.7 `settings.describe()` only lists ACTIVE entries, and inside
|
|
108
|
+
// apply() our own fiber is still LOADING, so a synchronous read here
|
|
109
|
+
// would always see "off" and `syncSearchPatch(false)` would write that
|
|
110
|
+
// back over the user's enabled patch entry on every boot. Takeover only
|
|
111
|
+
// happens while the feature is enabled; runtime availability still
|
|
93
112
|
// re-reads the setting live, so turning it off always wins.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
113
|
+
void ctx.fiber.await().then(() => {
|
|
114
|
+
if (searchEnabledNow() && !seam.searchProviderId) {
|
|
115
|
+
seam.searchProviderId = provider.id;
|
|
116
|
+
}
|
|
117
|
+
// Mirror the toggle into the profile patch so the harness's built-in
|
|
118
|
+
// web_search is activated / restored even if the setting was changed
|
|
119
|
+
// by hand between restarts.
|
|
120
|
+
return searchBackend.syncSearchPatch(searchEnabledNow());
|
|
121
|
+
}).catch((error) => {
|
|
101
122
|
ctx.logger.warn('[dsh-ui-tweaks] search patch sync failed: %s', error instanceof Error ? error.message : String(error));
|
|
102
123
|
});
|
|
103
124
|
}
|
|
104
125
|
else {
|
|
105
126
|
ctx.logger.warn('[dsh-ui-tweaks] web seam not found; built-in web_search stays on the stock backend');
|
|
106
127
|
}
|
|
107
|
-
ctx.logger.info('[dsh-ui-tweaks] settings
|
|
128
|
+
ctx.logger.info('[dsh-ui-tweaks] settings schema exported and Web routes mounted');
|
|
108
129
|
}
|
|
109
130
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/types/config.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* hand-edited settings document and the Settings panel stay consistent.
|
|
5
5
|
* @module dsh-ui-tweaks/config
|
|
6
6
|
*/
|
|
7
|
-
import
|
|
7
|
+
import z from '@deepseek-ai/schemastery';
|
|
8
8
|
/** Settings document namespace owned by this plugin. */
|
|
9
9
|
export declare const UI_TWEAKS_SETTINGS_NAMESPACE = "ui-tweaks";
|
|
10
10
|
/** Raw user-facing configuration (partial inputs receive schema defaults). */
|
|
@@ -151,8 +151,53 @@ export declare const DEFAULT_NOTIFY_ON_INTERACTION = true;
|
|
|
151
151
|
export declare const DEFAULT_NOTIFY_TITLE_FLASH = true;
|
|
152
152
|
export declare const DEFAULT_NOTIFY_SYSTEM_NOTIFICATION = true;
|
|
153
153
|
export declare const DEFAULT_NOTIFY_SOUND = false;
|
|
154
|
-
/**
|
|
155
|
-
|
|
154
|
+
/**
|
|
155
|
+
* Configuration schema with documented defaults. Every field is marked
|
|
156
|
+
* `.volatile()` (schemastery ≥3.18.3): since DSH 0.1.7 the Settings panel
|
|
157
|
+
* derives each plugin's form from its exported `Config` schema, and only
|
|
158
|
+
* volatile fields appear in the form (and stay editable without a remount).
|
|
159
|
+
*/
|
|
160
|
+
export declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
161
|
+
codeFontScale: z<number, number, "volatile-defined">;
|
|
162
|
+
codeFontSize: z<number, number, "volatile">;
|
|
163
|
+
timelineStyle: z<"native" | "web", "native" | "web", "volatile-defined">;
|
|
164
|
+
themeStyle: z<"default" | "minimal" | "neon-lime", "default" | "minimal" | "neon-lime", "volatile-defined">;
|
|
165
|
+
searchEnabled: z<boolean, boolean, "volatile-defined">;
|
|
166
|
+
searchEngine: z<"bing" | "ddg" | "exa" | "tavily" | "keenable" | "perplexity" | "deepseek", "bing" | "ddg" | "exa" | "tavily" | "keenable" | "perplexity" | "deepseek", "volatile-defined">;
|
|
167
|
+
bingMarket: z<"zh-CN" | "zh-HK" | "zh-TW" | "ja-JP" | "en-US" | "en-GB", "zh-CN" | "zh-HK" | "zh-TW" | "ja-JP" | "en-US" | "en-GB", "volatile-defined">;
|
|
168
|
+
gitBarEnabled: z<boolean, boolean, "volatile-defined">;
|
|
169
|
+
archiveManagerEnabled: z<boolean, boolean, "volatile-defined">;
|
|
170
|
+
mcpManagerEnabled: z<boolean, boolean, "volatile-defined">;
|
|
171
|
+
initCommandEnabled: z<boolean, boolean, "volatile-defined">;
|
|
172
|
+
preciseCacheHitEnabled: z<boolean, boolean, "volatile-defined">;
|
|
173
|
+
notificationsEnabled: z<boolean, boolean, "volatile-defined">;
|
|
174
|
+
notifyOnlyWhenHidden: z<boolean, boolean, "volatile-defined">;
|
|
175
|
+
notifyOnComplete: z<boolean, boolean, "volatile-defined">;
|
|
176
|
+
notifyOnInteraction: z<boolean, boolean, "volatile-defined">;
|
|
177
|
+
notifyTitleFlash: z<boolean, boolean, "volatile-defined">;
|
|
178
|
+
notifySystemNotification: z<boolean, boolean, "volatile-defined">;
|
|
179
|
+
notifySound: z<boolean, boolean, "volatile-defined">;
|
|
180
|
+
}>>, Schemastery.ObjectT<NoInfer<{
|
|
181
|
+
codeFontScale: z<number, number, "volatile-defined">;
|
|
182
|
+
codeFontSize: z<number, number, "volatile">;
|
|
183
|
+
timelineStyle: z<"native" | "web", "native" | "web", "volatile-defined">;
|
|
184
|
+
themeStyle: z<"default" | "minimal" | "neon-lime", "default" | "minimal" | "neon-lime", "volatile-defined">;
|
|
185
|
+
searchEnabled: z<boolean, boolean, "volatile-defined">;
|
|
186
|
+
searchEngine: z<"bing" | "ddg" | "exa" | "tavily" | "keenable" | "perplexity" | "deepseek", "bing" | "ddg" | "exa" | "tavily" | "keenable" | "perplexity" | "deepseek", "volatile-defined">;
|
|
187
|
+
bingMarket: z<"zh-CN" | "zh-HK" | "zh-TW" | "ja-JP" | "en-US" | "en-GB", "zh-CN" | "zh-HK" | "zh-TW" | "ja-JP" | "en-US" | "en-GB", "volatile-defined">;
|
|
188
|
+
gitBarEnabled: z<boolean, boolean, "volatile-defined">;
|
|
189
|
+
archiveManagerEnabled: z<boolean, boolean, "volatile-defined">;
|
|
190
|
+
mcpManagerEnabled: z<boolean, boolean, "volatile-defined">;
|
|
191
|
+
initCommandEnabled: z<boolean, boolean, "volatile-defined">;
|
|
192
|
+
preciseCacheHitEnabled: z<boolean, boolean, "volatile-defined">;
|
|
193
|
+
notificationsEnabled: z<boolean, boolean, "volatile-defined">;
|
|
194
|
+
notifyOnlyWhenHidden: z<boolean, boolean, "volatile-defined">;
|
|
195
|
+
notifyOnComplete: z<boolean, boolean, "volatile-defined">;
|
|
196
|
+
notifyOnInteraction: z<boolean, boolean, "volatile-defined">;
|
|
197
|
+
notifyTitleFlash: z<boolean, boolean, "volatile-defined">;
|
|
198
|
+
notifySystemNotification: z<boolean, boolean, "volatile-defined">;
|
|
199
|
+
notifySound: z<boolean, boolean, "volatile-defined">;
|
|
200
|
+
}>>, "plain">;
|
|
156
201
|
/** Configuration after static validation, with every default materialized. */
|
|
157
202
|
export interface ResolvedUITweaksConfig {
|
|
158
203
|
/** Code font size as a percentage of the stock message font size (legacy input). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dsh-ui-tweaks — server half.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Owns the `ui-tweaks` settings namespace so users can tune the conversation
|
|
5
|
+
* UI either from the Settings panel or by editing the profile patch
|
|
6
|
+
* (`cordis.patch.yml` `ui-tweaks` entry; settings.yaml was retired in DSH
|
|
7
|
+
* 0.1.7, which migrated its sections there). Since 0.1.7 the Settings panel
|
|
8
|
+
* derives each form from the plugin's exported `Config` schema — there is no
|
|
9
|
+
* explicit `settings.register()` anymore — so this module re-exports
|
|
10
|
+
* `Config` and opts out of the auto-generated form page (the browser half
|
|
11
|
+
* owns its sections through the `settings.section` slot). All rendering work
|
|
7
12
|
* happens in the browser bundle (`src/client`), which reads and writes this
|
|
8
13
|
* namespace through the same-origin route mounted here — the Web settings RPC
|
|
9
|
-
* only exposes a fixed allowlist of namespaces since rc.6, so a custom route
|
|
10
|
-
* the supported way for a plugin to own a configuration page.
|
|
14
|
+
* only exposes a fixed allowlist of namespaces since rc.6, so a custom route
|
|
15
|
+
* is the supported way for a plugin to own a configuration page.
|
|
11
16
|
* @module dsh-ui-tweaks
|
|
12
17
|
*/
|
|
13
18
|
import type { Context } from '@deepseek-ai/cordis';
|
|
19
|
+
import { Config } from './config.ts';
|
|
14
20
|
export declare const name = "dsh-ui-tweaks";
|
|
21
|
+
/**
|
|
22
|
+
* Re-export the Config schema so the Cordis loader attaches it to this
|
|
23
|
+
* plugin's runtime: since DSH 0.1.7 `SettingsForms` reads
|
|
24
|
+
* `entry.fiber.runtime.Config` to derive the settings form (the old
|
|
25
|
+
* `ctx.settings.register()` call no longer exists).
|
|
26
|
+
*/
|
|
27
|
+
export { Config };
|
|
15
28
|
/** Required services: the settings seam is the whole server-side surface. */
|
|
16
29
|
export declare const inject: string[];
|
|
17
30
|
export declare function apply(ctx: Context): void;
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAEL,MAAM,EACP,MAAM,aAAa,CAAA;AAWpB,eAAO,MAAM,IAAI,kBAAkB,CAAA;AAEnC;;;;;GAKG;AACH,OAAO,EAAE,MAAM,EAAE,CAAA;AAEjB,6EAA6E;AAC7E,eAAO,MAAM,MAAM,UAAsB,CAAA;AAEzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAmGxC"}
|
|
@@ -21,7 +21,7 @@ import type { ProjectionDefinition } from '@deepseek-ai/dsh-session-projection';
|
|
|
21
21
|
/** Projection key the browser notifier reads through list-row `projectionValues`. */
|
|
22
22
|
export declare const TURN_OUTCOME_PROJECTION_KEY = "dshTurnOutcome";
|
|
23
23
|
/** The stock `TurnEndReason` kinds (the map is merge-extensible upstream). */
|
|
24
|
-
export type TurnOutcomeKind = 'completed' | 'aborted' | 'blocked' | 'error' | 'max-tokens' | 'interrupted';
|
|
24
|
+
export type TurnOutcomeKind = 'completed' | 'aborted' | 'blocked' | 'error' | 'max-tokens' | 'interrupted' | 'forked';
|
|
25
25
|
/** Whole projection value: why the latest turn ended. */
|
|
26
26
|
export interface TurnOutcomeValue {
|
|
27
27
|
kind: TurnOutcomeKind;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-outcome.d.ts","sourceRoot":"","sources":["../../src/turn-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAG/E,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,mBAAmB,CAAA;AAE3D,8EAA8E;AAC9E,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"turn-outcome.d.ts","sourceRoot":"","sources":["../../src/turn-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAG/E,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,mBAAmB,CAAA;AAE3D,8EAA8E;AAC9E,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAAA;AAErH,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAA;IACrB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAaD,OAAO,QAAQ,2CAA2C,CAAC;IACzD,UAAU,oBAAoB;QAC5B,uFAAuF;QACvF,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAA;KACxC;IACD,UAAU,yBAAyB;QACjC,+EAA+E;QAC/E,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAA;KACxC;CACF;AAED,qFAAqF;AACrF,KAAK,yBAAyB,GAAG,IAAI,CACnC,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC,EAC/D,MAAM,CACP,GAAG;IACF,IAAI,EAAE,WAAW,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;CAC3F,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,+BAA+B,EAAE,yBAsB7C,CAAA;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAI/D"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-ui-tweaks",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "DSH web plugin: live-tune the conversation UI — code font size (px input), a timeline switch (DSH's native turn rail, or the classic v0.11 web rail: hover to preview, click to jump; native by default), a theme switch with two skins (a minimal one that only tints markdown inline code with the Anthropic red, and a neon poster skin with light/dark schemes), a GitBar (branch chip in the session header with branch management, plus a code-diff tab in the native right sidebar with per-file diff and commit & push), task alerts that call you back via tab-title flash / system notification / chime when any session finishes its turn or starts waiting for your approval, plan review or answer, an /init slash command that submits an AGENTS.md bootstrap prompt (Chinese or English) into the current session, and a precise cache-hit readout that keeps two decimal places on the stats line's cache-hit figure under the input box — from the Settings panel. Requires DSH v0.1.
|
|
3
|
+
"version": "0.18.0",
|
|
4
|
+
"description": "DSH web plugin: live-tune the conversation UI — code font size (px input), a timeline switch (DSH's native turn rail, or the classic v0.11 web rail: hover to preview, click to jump; native by default), a theme switch with two skins (a minimal one that only tints markdown inline code with the Anthropic red, and a neon poster skin with light/dark schemes), a GitBar (branch chip in the session header with branch management, plus a code-diff tab in the native right sidebar with per-file diff and commit & push), task alerts that call you back via tab-title flash / system notification / chime when any session finishes its turn or starts waiting for your approval, plan review or answer, an /init slash command that submits an AGENTS.md bootstrap prompt (Chinese or English) into the current session, and a precise cache-hit readout that keeps two decimal places on the stats line's cache-hit figure under the input box — from the Settings panel. Requires DSH v0.1.7-rc.1+ (the conversation timeline and dialog width are now native to DSH; the task notifier follows the alpha.2 session-status API).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
7
7
|
"deepseek-harness",
|
|
@@ -74,27 +74,27 @@
|
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
78
|
-
"@deepseek-ai/dsh-api-session-controller": "^0.1.
|
|
79
|
-
"@deepseek-ai/dsh-api-workspace-controller": "^0.1.
|
|
80
|
-
"@deepseek-ai/dsh-client-locale": "^0.1.
|
|
81
|
-
"@deepseek-ai/dsh-client-store": "^0.1.
|
|
82
|
-
"@deepseek-ai/dsh-client-ui-commands": "^0.1.
|
|
83
|
-
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.
|
|
84
|
-
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.
|
|
85
|
-
"@deepseek-ai/dsh-client-ui-session": "^0.1.
|
|
86
|
-
"@deepseek-ai/dsh-client-ui-settings": "^0.1.
|
|
87
|
-
"@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.
|
|
88
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.1.
|
|
89
|
-
"@deepseek-ai/dsh-client-ui-workspace": "^0.1.
|
|
90
|
-
"@deepseek-ai/dsh-host-webserver": "^0.1.
|
|
91
|
-
"@deepseek-ai/dsh-session": "^0.1.
|
|
92
|
-
"@deepseek-ai/dsh-session-projection": "^0.1.
|
|
93
|
-
"@deepseek-ai/dsh-settings": "^0.1.
|
|
94
|
-
"@deepseek-ai/dsh-storage-domain": "^0.1.
|
|
95
|
-
"@deepseek-ai/dsh-token-meter": "^0.1.
|
|
96
|
-
"@deepseek-ai/dsh-workspace": "^0.1.
|
|
97
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
77
|
+
"@deepseek-ai/cordis": "^4.0.4",
|
|
78
|
+
"@deepseek-ai/dsh-api-session-controller": "^0.1.7-rc.1",
|
|
79
|
+
"@deepseek-ai/dsh-api-workspace-controller": "^0.1.7-rc.1",
|
|
80
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.7-rc.1",
|
|
81
|
+
"@deepseek-ai/dsh-client-store": "^0.1.7-rc.1",
|
|
82
|
+
"@deepseek-ai/dsh-client-ui-commands": "^0.1.7-rc.1",
|
|
83
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-rc.1",
|
|
84
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-rc.1",
|
|
85
|
+
"@deepseek-ai/dsh-client-ui-session": "^0.1.7-rc.1",
|
|
86
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.1.7-rc.1",
|
|
87
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.7-rc.1",
|
|
88
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.7-rc.1",
|
|
89
|
+
"@deepseek-ai/dsh-client-ui-workspace": "^0.1.7-rc.1",
|
|
90
|
+
"@deepseek-ai/dsh-host-webserver": "^0.1.7-rc.1",
|
|
91
|
+
"@deepseek-ai/dsh-session": "^0.1.7-rc.1",
|
|
92
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.7-rc.1",
|
|
93
|
+
"@deepseek-ai/dsh-settings": "^0.1.7-rc.1",
|
|
94
|
+
"@deepseek-ai/dsh-storage-domain": "^0.1.7-rc.1",
|
|
95
|
+
"@deepseek-ai/dsh-token-meter": "^0.1.7-rc.1",
|
|
96
|
+
"@deepseek-ai/dsh-workspace": "^0.1.7-rc.1",
|
|
97
|
+
"@deepseek-ai/schemastery": "^3.18.4",
|
|
98
98
|
"react": "^18.2.0",
|
|
99
99
|
"react-dom": "^18.2.0"
|
|
100
100
|
},
|
|
@@ -104,28 +104,28 @@
|
|
|
104
104
|
}
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
108
|
-
"@deepseek-ai/dsh-api-session-controller": "0.1.
|
|
109
|
-
"@deepseek-ai/dsh-api-workspace-controller": "0.1.
|
|
110
|
-
"@deepseek-ai/dsh-client-locale": "0.1.
|
|
111
|
-
"@deepseek-ai/dsh-client-store": "0.1.
|
|
112
|
-
"@deepseek-ai/dsh-client-ui-commands": "0.1.
|
|
113
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.1.
|
|
114
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.1.
|
|
115
|
-
"@deepseek-ai/dsh-client-ui-session": "0.1.
|
|
116
|
-
"@deepseek-ai/dsh-client-ui-settings": "0.1.
|
|
117
|
-
"@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.
|
|
118
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.
|
|
119
|
-
"@deepseek-ai/dsh-client-ui-workspace": "0.1.
|
|
120
|
-
"@deepseek-ai/dsh-host-webserver": "0.1.
|
|
121
|
-
"@deepseek-ai/dsh-session": "0.1.
|
|
122
|
-
"@deepseek-ai/dsh-session-persistence": "0.1.
|
|
123
|
-
"@deepseek-ai/dsh-session-projection": "0.1.
|
|
124
|
-
"@deepseek-ai/dsh-settings": "0.1.
|
|
125
|
-
"@deepseek-ai/dsh-storage-domain": "0.1.
|
|
126
|
-
"@deepseek-ai/dsh-token-meter": "0.1.
|
|
127
|
-
"@deepseek-ai/dsh-workspace": "0.1.
|
|
128
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
107
|
+
"@deepseek-ai/cordis": "^4.0.4",
|
|
108
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.1",
|
|
109
|
+
"@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.1",
|
|
110
|
+
"@deepseek-ai/dsh-client-locale": "0.1.7-rc.1",
|
|
111
|
+
"@deepseek-ai/dsh-client-store": "0.1.7-rc.1",
|
|
112
|
+
"@deepseek-ai/dsh-client-ui-commands": "0.1.7-rc.1",
|
|
113
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.1",
|
|
114
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.1",
|
|
115
|
+
"@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.1",
|
|
116
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right": "0.1.7-rc.1",
|
|
118
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-client-ui-workspace": "0.1.7-rc.1",
|
|
120
|
+
"@deepseek-ai/dsh-host-webserver": "0.1.7-rc.1",
|
|
121
|
+
"@deepseek-ai/dsh-session": "0.1.7-rc.1",
|
|
122
|
+
"@deepseek-ai/dsh-session-persistence": "0.1.7-rc.1",
|
|
123
|
+
"@deepseek-ai/dsh-session-projection": "0.1.7-rc.1",
|
|
124
|
+
"@deepseek-ai/dsh-settings": "0.1.7-rc.1",
|
|
125
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.7-rc.1",
|
|
126
|
+
"@deepseek-ai/dsh-token-meter": "0.1.7-rc.1",
|
|
127
|
+
"@deepseek-ai/dsh-workspace": "0.1.7-rc.1",
|
|
128
|
+
"@deepseek-ai/schemastery": "^3.18.4",
|
|
129
129
|
"@types/node": "^24.0.0",
|
|
130
130
|
"@types/react": "~18.3.1",
|
|
131
131
|
"@types/react-dom": "~18.3.1",
|