@dsh-xhl/dsh-file-explorer 0.1.9 → 0.2.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.md +19 -1
- package/lib/client.js +35 -15
- package/lib/types/context-types.d.ts +1 -0
- package/package.json +114 -113
package/README.md
CHANGED
|
@@ -43,9 +43,27 @@ src/
|
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
45
|
pnpm install
|
|
46
|
-
pnpm build # lib/index.js(host)+ lib/client.js(client bundle,CodeMirror
|
|
46
|
+
pnpm build # lib/index.js(host)+ lib/client.js(client bundle,CodeMirror 内联)+ 图标校验
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
> **图标命名陷阱(务必先读)**:宿主 `@deepseek-ai/dsh-client-ui-primitives`
|
|
50
|
+
> 的图标导出已从**尺寸后缀**(`Icon*16` / `Icon*14`)改为**字重后缀**
|
|
51
|
+
> (`Icon*Regular` / `Icon*Medium`),旧名在宿主里**一个都不存在**。
|
|
52
|
+
>
|
|
53
|
+
> 这个失败模式极其隐蔽:客户端 bundle 通过冻结的模块表解析原语,缺失的名字
|
|
54
|
+
> 拿到的是 `undefined`,React 在渲染时抛 "Element type is invalid",而槽位的
|
|
55
|
+
> 错误边界会**静默退位(abdicate)**——插件看起来已安装、已注册,却什么都不渲染。
|
|
56
|
+
>
|
|
57
|
+
> 曾经的坑在于开发依赖停留在 `0.1.0-rc.6`(仍是旧命名),于是 `tsc` 放行、
|
|
58
|
+
> 构建成功,只有运行时才炸。现在 `pnpm build` 末尾的
|
|
59
|
+
> [`scripts/check-icons.mjs`](scripts/check-icons.mjs) 会把产物引用的图标与
|
|
60
|
+
> **宿主真实导出**逐一比对,对不上直接构建失败。
|
|
61
|
+
>
|
|
62
|
+
> 若 `pnpm typecheck` 报某图标不存在,多半是本地 `node_modules` 里的原语包
|
|
63
|
+
> 落后于宿主:把 `node_modules/@deepseek-ai/dsh-client-ui-primitives` 指向
|
|
64
|
+
> 宿主实际安装的那份(`$env:LOCALAPPDATA\Volta\tools\image\packages\@deepseek-ai\dsh\node_modules\@deepseek-ai\dsh\node_modules\@deepseek-ai\dsh-client-ui-primitives`)
|
|
65
|
+
> 再重试。
|
|
66
|
+
|
|
49
67
|
> 构建采用**原地覆盖**(不再先删除 `lib/`)。宿主半在进程启动时载入内存,而 profile
|
|
50
68
|
> 若 link 到本工作区则会直读磁盘:构建中途清空目录会让 HMR 读到空 bundle,导致
|
|
51
69
|
> `/filex` 路由与客户端 import 瞬时失败(表现为 `unknown filex API method ...`)。
|
package/lib/client.js
CHANGED
|
@@ -36902,7 +36902,7 @@ window.__ModuleLoader__.load({
|
|
|
36902
36902
|
children: ctxMenu.empty ? "请先在编辑器中选中文本" : reference(ctxMenu)
|
|
36903
36903
|
})]
|
|
36904
36904
|
}),
|
|
36905
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
36905
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, {}),
|
|
36906
36906
|
disabled: ctxMenu.empty
|
|
36907
36907
|
}, {
|
|
36908
36908
|
id: "insertFile",
|
|
@@ -36913,7 +36913,7 @@ window.__ModuleLoader__.load({
|
|
|
36913
36913
|
children: reference()
|
|
36914
36914
|
})]
|
|
36915
36915
|
}),
|
|
36916
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
36916
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, {})
|
|
36917
36917
|
}] : [];
|
|
36918
36918
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
36919
36919
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -36993,7 +36993,7 @@ window.__ModuleLoader__.load({
|
|
|
36993
36993
|
}),
|
|
36994
36994
|
insertError !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
|
|
36995
36995
|
text: `插入聊天框失败:${insertError}`,
|
|
36996
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
36996
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {}),
|
|
36997
36997
|
onDone: () => setInsertError("")
|
|
36998
36998
|
}, toastKey)
|
|
36999
36999
|
] });
|
|
@@ -37290,7 +37290,7 @@ window.__ModuleLoader__.load({
|
|
|
37290
37290
|
onContextMenu(node.relPath, e.clientX, e.clientY);
|
|
37291
37291
|
},
|
|
37292
37292
|
children: [
|
|
37293
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
37293
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, { className: "filex-chev" }),
|
|
37294
37294
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileIcon, {
|
|
37295
37295
|
kind: "dir",
|
|
37296
37296
|
name: node.name,
|
|
@@ -37553,7 +37553,7 @@ window.__ModuleLoader__.load({
|
|
|
37553
37553
|
children: `@file:${sideMenu.relPath} lines:${sideMenu.line}`
|
|
37554
37554
|
})]
|
|
37555
37555
|
}),
|
|
37556
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
37556
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, {})
|
|
37557
37557
|
}] : [], {
|
|
37558
37558
|
id: "insertFile",
|
|
37559
37559
|
label: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
@@ -37563,7 +37563,7 @@ window.__ModuleLoader__.load({
|
|
|
37563
37563
|
children: `@file:${sideMenu.relPath}`
|
|
37564
37564
|
})]
|
|
37565
37565
|
}),
|
|
37566
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
37566
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, {})
|
|
37567
37567
|
}] : [];
|
|
37568
37568
|
let sideContent;
|
|
37569
37569
|
if (searchMode === "name") {
|
|
@@ -37756,7 +37756,7 @@ window.__ModuleLoader__.load({
|
|
|
37756
37756
|
type: "button",
|
|
37757
37757
|
size: "sm",
|
|
37758
37758
|
variant: "ghost",
|
|
37759
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
37759
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconFullscreenOutlineRegular, { className: fullscreen ? "filex-fs-on" : void 0 }),
|
|
37760
37760
|
title: fullscreen ? "退出全屏" : "全屏",
|
|
37761
37761
|
"aria-label": fullscreen ? "退出全屏" : "全屏",
|
|
37762
37762
|
onClick: () => setFullscreen((v) => !v)
|
|
@@ -37765,7 +37765,7 @@ window.__ModuleLoader__.load({
|
|
|
37765
37765
|
type: "button",
|
|
37766
37766
|
size: "sm",
|
|
37767
37767
|
variant: "ghost",
|
|
37768
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
37768
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCloseOutlineRegular, {}),
|
|
37769
37769
|
title: "关闭(Esc)",
|
|
37770
37770
|
"aria-label": "关闭",
|
|
37771
37771
|
onClick: handleClose
|
|
@@ -37803,7 +37803,7 @@ window.__ModuleLoader__.load({
|
|
|
37803
37803
|
type: "button",
|
|
37804
37804
|
size: "sm",
|
|
37805
37805
|
variant: "outline",
|
|
37806
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
37806
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, {}),
|
|
37807
37807
|
disabled: loading,
|
|
37808
37808
|
onClick: () => void refresh(),
|
|
37809
37809
|
title: "刷新文件列表",
|
|
@@ -37964,7 +37964,7 @@ window.__ModuleLoader__.load({
|
|
|
37964
37964
|
}),
|
|
37965
37965
|
sideToast !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Toast, {
|
|
37966
37966
|
text: `插入聊天框失败:${sideToast}`,
|
|
37967
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
37967
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {}),
|
|
37968
37968
|
onDone: () => setSideToast("")
|
|
37969
37969
|
}, toastKey)
|
|
37970
37970
|
] });
|
|
@@ -38072,6 +38072,25 @@ window.__ModuleLoader__.load({
|
|
|
38072
38072
|
* the framework-resolved sessionId; Ctrl+P falls back to the currently
|
|
38073
38073
|
* selected session (`useSessions` → `state.current`).
|
|
38074
38074
|
*/
|
|
38075
|
+
/**
|
|
38076
|
+
* Icon primitives are resolved through the host's frozen module table, so a
|
|
38077
|
+
* name the host no longer exports arrives as `undefined` and React throws
|
|
38078
|
+
* "Element type is invalid" at render time. Inside a slot that throw is
|
|
38079
|
+
* swallowed by the slot error boundary, which silently abdicates the seat —
|
|
38080
|
+
* the plugin looks installed and registered while rendering nothing. Fail
|
|
38081
|
+
* loudly at load instead, where the message is still visible.
|
|
38082
|
+
*/
|
|
38083
|
+
function assertPrimitives() {
|
|
38084
|
+
const missing = Object.entries({
|
|
38085
|
+
Button: _deepseek_ai_dsh_client_ui_primitives.Button,
|
|
38086
|
+
Menu: _deepseek_ai_dsh_client_ui_primitives.Menu,
|
|
38087
|
+
Tooltip: _deepseek_ai_dsh_client_ui_primitives.Tooltip,
|
|
38088
|
+
IconChevronDownOutlineRegular: _deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular,
|
|
38089
|
+
IconEditOutlineRegular: _deepseek_ai_dsh_client_ui_primitives.IconEditOutlineRegular,
|
|
38090
|
+
IconFolderOpenRegular: _deepseek_ai_dsh_client_ui_primitives.IconFolderOpenRegular
|
|
38091
|
+
}).filter(([, v]) => v === void 0).map(([k]) => k);
|
|
38092
|
+
if (missing.length > 0) throw new Error(`[dsh-file-explorer] 宿主 @deepseek-ai/dsh-client-ui-primitives 缺少: ${missing.join(", ")}。图标导出命名已从尺寸后缀(16/14)改为字重后缀(Regular/Medium),请同步更新源码引用。`);
|
|
38093
|
+
}
|
|
38075
38094
|
/** Services required before mounting. */
|
|
38076
38095
|
const inject = [
|
|
38077
38096
|
"slots",
|
|
@@ -38292,12 +38311,12 @@ window.__ModuleLoader__.load({
|
|
|
38292
38311
|
{
|
|
38293
38312
|
id: "editor",
|
|
38294
38313
|
label: "编辑器",
|
|
38295
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
38314
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEditOutlineRegular, {})
|
|
38296
38315
|
},
|
|
38297
38316
|
{
|
|
38298
38317
|
id: "folder",
|
|
38299
38318
|
label: "文件夹",
|
|
38300
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
38319
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconFolderOpenRegular, {})
|
|
38301
38320
|
},
|
|
38302
38321
|
{
|
|
38303
38322
|
id: "vscode",
|
|
@@ -38317,7 +38336,7 @@ window.__ModuleLoader__.load({
|
|
|
38317
38336
|
className: "filex-header-btn",
|
|
38318
38337
|
size: "sm",
|
|
38319
38338
|
variant: "outline",
|
|
38320
|
-
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
38339
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEditOutlineRegular, {}),
|
|
38321
38340
|
title,
|
|
38322
38341
|
"aria-label": "文件预览 / 编辑",
|
|
38323
38342
|
onClick: (e) => {
|
|
@@ -38346,7 +38365,7 @@ window.__ModuleLoader__.load({
|
|
|
38346
38365
|
const sessionCwd = useSessions((s) => sessionId !== void 0 ? s.byId?.[sessionId]?.cwd : void 0);
|
|
38347
38366
|
const mode = state.mode;
|
|
38348
38367
|
const items = state.vscode ? MODE_ITEMS : MODE_ITEMS.filter((item) => item.id !== "vscode");
|
|
38349
|
-
const mainIcon = mode === "folder" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
38368
|
+
const mainIcon = mode === "folder" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconFolderOpenRegular, {}) : mode === "vscode" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VscodeIcon, {}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEditOutlineRegular, {});
|
|
38350
38369
|
const mainTitle = mode === "folder" ? "打开系统文件夹" : mode === "vscode" ? "用 VSCode 打开工作区" : "文件预览 / 编辑(Ctrl+P)";
|
|
38351
38370
|
const onMainClick = (e) => {
|
|
38352
38371
|
e.stopPropagation();
|
|
@@ -38396,7 +38415,7 @@ window.__ModuleLoader__.load({
|
|
|
38396
38415
|
e.stopPropagation();
|
|
38397
38416
|
setMenuOpen((v) => !v);
|
|
38398
38417
|
},
|
|
38399
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
38418
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {})
|
|
38400
38419
|
})]
|
|
38401
38420
|
})
|
|
38402
38421
|
})
|
|
@@ -38456,6 +38475,7 @@ window.__ModuleLoader__.load({
|
|
|
38456
38475
|
} catch {}
|
|
38457
38476
|
};
|
|
38458
38477
|
try {
|
|
38478
|
+
assertPrimitives();
|
|
38459
38479
|
const tagId = "dsh-file-explorer/styles";
|
|
38460
38480
|
ctx.effect(() => {
|
|
38461
38481
|
const dark = detectDark();
|
package/package.json
CHANGED
|
@@ -1,113 +1,114 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@dsh-xhl/dsh-file-explorer",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "DSH 外部编译型插件:工作区文件预览 / 编辑(CodeMirror 6 编辑器 + 文件树 + 全文搜索 + Markdown/HTML/图片/PDF 预览)。移植自同目录下的动态 Cordis 插件版本。",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "lib/index.js",
|
|
7
|
-
"types": "lib/types/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"types": "./lib/types/index.d.ts",
|
|
11
|
-
"default": "./lib/index.js"
|
|
12
|
-
},
|
|
13
|
-
"./client": "./lib/client.js",
|
|
14
|
-
"./package.json": "./package.json"
|
|
15
|
-
},
|
|
16
|
-
"engines": {
|
|
17
|
-
"node": ">=20"
|
|
18
|
-
},
|
|
19
|
-
"publishConfig": {
|
|
20
|
-
"access": "public",
|
|
21
|
-
"registry": "https://registry.npmjs.org"
|
|
22
|
-
},
|
|
23
|
-
"dsh": {
|
|
24
|
-
"bundle": {
|
|
25
|
-
"patch": "./cordis.patch.yml"
|
|
26
|
-
},
|
|
27
|
-
"client": {
|
|
28
|
-
"inject": [
|
|
29
|
-
"@deepseek-ai/dsh-client-runtime",
|
|
30
|
-
"@deepseek-ai/dsh-client-ui-slots",
|
|
31
|
-
"@deepseek-ai/dsh-client-web-react"
|
|
32
|
-
],
|
|
33
|
-
"platform": "web"
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"files": [
|
|
37
|
-
"lib/index.js",
|
|
38
|
-
"lib/client.js",
|
|
39
|
-
"lib/types/**/*.d.ts",
|
|
40
|
-
"cordis.patch.yml",
|
|
41
|
-
"README.md"
|
|
42
|
-
],
|
|
43
|
-
"scripts": {
|
|
44
|
-
"build": "tsc -p tsconfig.build.json && tsdown",
|
|
45
|
-
"typecheck": "tsc --noEmit",
|
|
46
|
-
"bundle": "tsdown",
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
"@deepseek-ai/
|
|
53
|
-
"@deepseek-ai/dsh-client-
|
|
54
|
-
"@deepseek-ai/dsh-client-ui-
|
|
55
|
-
"@deepseek-ai/dsh-client-
|
|
56
|
-
"@deepseek-ai/dsh-
|
|
57
|
-
"@deepseek-ai/dsh-
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"react
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"@codemirror/
|
|
70
|
-
"@codemirror/lang-
|
|
71
|
-
"@codemirror/lang-
|
|
72
|
-
"@codemirror/lang-
|
|
73
|
-
"@codemirror/lang-
|
|
74
|
-
"@codemirror/lang-
|
|
75
|
-
"@codemirror/lang-
|
|
76
|
-
"@codemirror/lang-
|
|
77
|
-
"@codemirror/lang-
|
|
78
|
-
"@codemirror/lang-
|
|
79
|
-
"@codemirror/lang-
|
|
80
|
-
"@codemirror/lang-
|
|
81
|
-
"@codemirror/lang-
|
|
82
|
-
"@codemirror/lang-
|
|
83
|
-
"@codemirror/lang-
|
|
84
|
-
"@codemirror/
|
|
85
|
-
"@codemirror/
|
|
86
|
-
"@codemirror/
|
|
87
|
-
"@codemirror/
|
|
88
|
-
"@codemirror/
|
|
89
|
-
"@
|
|
90
|
-
"
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"@deepseek-ai/
|
|
95
|
-
"@deepseek-ai/dsh-
|
|
96
|
-
"@deepseek-ai/dsh-client-
|
|
97
|
-
"@deepseek-ai/dsh-client-
|
|
98
|
-
"@deepseek-ai/dsh-client-ui-
|
|
99
|
-
"@deepseek-ai/dsh-client-ui-
|
|
100
|
-
"@deepseek-ai/dsh-client-
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-
|
|
104
|
-
"@
|
|
105
|
-
"@types/
|
|
106
|
-
"@types/react
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
"react
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
|
|
113
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@dsh-xhl/dsh-file-explorer",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "DSH 外部编译型插件:工作区文件预览 / 编辑(CodeMirror 6 编辑器 + 文件树 + 全文搜索 + Markdown/HTML/图片/PDF 预览)。移植自同目录下的动态 Cordis 插件版本。",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"types": "lib/types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./lib/types/index.d.ts",
|
|
11
|
+
"default": "./lib/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./client": "./lib/client.js",
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=20"
|
|
18
|
+
},
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public",
|
|
21
|
+
"registry": "https://registry.npmjs.org"
|
|
22
|
+
},
|
|
23
|
+
"dsh": {
|
|
24
|
+
"bundle": {
|
|
25
|
+
"patch": "./cordis.patch.yml"
|
|
26
|
+
},
|
|
27
|
+
"client": {
|
|
28
|
+
"inject": [
|
|
29
|
+
"@deepseek-ai/dsh-client-runtime",
|
|
30
|
+
"@deepseek-ai/dsh-client-ui-slots",
|
|
31
|
+
"@deepseek-ai/dsh-client-web-react"
|
|
32
|
+
],
|
|
33
|
+
"platform": "web"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"lib/index.js",
|
|
38
|
+
"lib/client.js",
|
|
39
|
+
"lib/types/**/*.d.ts",
|
|
40
|
+
"cordis.patch.yml",
|
|
41
|
+
"README.md"
|
|
42
|
+
],
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "tsc -p tsconfig.build.json && tsdown && node scripts/check-icons.mjs",
|
|
45
|
+
"typecheck": "tsc --noEmit",
|
|
46
|
+
"bundle": "tsdown",
|
|
47
|
+
"check:icons": "node scripts/check-icons.mjs",
|
|
48
|
+
"prepare": "tsdown"
|
|
49
|
+
},
|
|
50
|
+
"license": "MIT",
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
53
|
+
"@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
|
|
54
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6",
|
|
55
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
|
|
56
|
+
"@deepseek-ai/dsh-client-web-react": "^0.1.0-rc.6",
|
|
57
|
+
"@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.6",
|
|
58
|
+
"@deepseek-ai/dsh-session": "^0.1.0-rc.6",
|
|
59
|
+
"cordis": "^4.0.0-rc.7",
|
|
60
|
+
"react": "^18.2.0",
|
|
61
|
+
"react-dom": "^18.2.0"
|
|
62
|
+
},
|
|
63
|
+
"peerDependenciesMeta": {
|
|
64
|
+
"cordis": {
|
|
65
|
+
"optional": true
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"@codemirror/commands": "^6.10.4",
|
|
70
|
+
"@codemirror/lang-cpp": "^6.0.3",
|
|
71
|
+
"@codemirror/lang-css": "^6.3.1",
|
|
72
|
+
"@codemirror/lang-go": "^6.0.1",
|
|
73
|
+
"@codemirror/lang-html": "^6.4.12",
|
|
74
|
+
"@codemirror/lang-java": "^6.0.2",
|
|
75
|
+
"@codemirror/lang-javascript": "^6.2.5",
|
|
76
|
+
"@codemirror/lang-json": "^6.0.2",
|
|
77
|
+
"@codemirror/lang-markdown": "^6.5.2",
|
|
78
|
+
"@codemirror/lang-php": "^6.0.2",
|
|
79
|
+
"@codemirror/lang-python": "^6.2.1",
|
|
80
|
+
"@codemirror/lang-rust": "^6.0.2",
|
|
81
|
+
"@codemirror/lang-sql": "^6.10.0",
|
|
82
|
+
"@codemirror/lang-vue": "^0.1.3",
|
|
83
|
+
"@codemirror/lang-xml": "^6.1.0",
|
|
84
|
+
"@codemirror/lang-yaml": "^6.1.3",
|
|
85
|
+
"@codemirror/language": "^6.12.4",
|
|
86
|
+
"@codemirror/legacy-modes": "^6.5.3",
|
|
87
|
+
"@codemirror/search": "6.7.1",
|
|
88
|
+
"@codemirror/state": "^6.7.1",
|
|
89
|
+
"@codemirror/view": "^6.43.8",
|
|
90
|
+
"@lezer/highlight": "^1.2.3",
|
|
91
|
+
"vscode-icons-js": "^11.6.1"
|
|
92
|
+
},
|
|
93
|
+
"devDependencies": {
|
|
94
|
+
"@deepseek-ai/cordis": "^4.0.1",
|
|
95
|
+
"@deepseek-ai/dsh-agent": "^0.1.0-rc.6",
|
|
96
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.0-rc.6",
|
|
97
|
+
"@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.6",
|
|
98
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.6",
|
|
99
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.6",
|
|
100
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.6",
|
|
101
|
+
"@deepseek-ai/dsh-client-web-react": "^0.1.0-rc.6",
|
|
102
|
+
"@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.6",
|
|
103
|
+
"@deepseek-ai/dsh-session": "^0.1.0-rc.6",
|
|
104
|
+
"@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
|
|
105
|
+
"@types/node": "^22.0.0",
|
|
106
|
+
"@types/react": "~18.3.1",
|
|
107
|
+
"@types/react-dom": "~18.3.1",
|
|
108
|
+
"cordis": "^4.0.0-rc.7",
|
|
109
|
+
"react": "^18.2.0",
|
|
110
|
+
"react-dom": "^18.2.0",
|
|
111
|
+
"tsdown": "^0.22.2",
|
|
112
|
+
"typescript": "^5.6.0"
|
|
113
|
+
}
|
|
114
|
+
}
|