@supertiny99/dsh-plugin-guardian 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +74 -2
- package/cordis.patch.yml +4 -0
- package/dist/client.js +271 -0
- package/dist/meta.json +46 -0
- package/package.json +66 -5
- package/src/client.jsx +653 -0
- package/src/guardian-core.js +539 -0
- package/src/guardian.css +268 -0
- package/src/index.js +152 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 supertiny99
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,75 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @supertiny99/dsh-plugin-guardian
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
DeepSeek Harness(桌面版)插件管家与防灾恢复工作台:解决第三方插件发生致命异常后宿主全盘禁用的痛点,提供自动健康快照、一键勾选恢复、配置挽回与跨平台桌面脱机应急恢复脚本。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 解决的核心痛点
|
|
8
|
+
|
|
9
|
+
在 DSH 开发或安装第三方插件时,若某个插件发生致命异常导致宿主启动崩溃,DSH 官方的致命错误恢复机制(`sanitizeProfile`)会一刀切**将所有第三方插件全部移出激活列表**,并将用户配置文件重命名为 `cordis.patch.yml.bak-<时间戳>`。
|
|
10
|
+
|
|
11
|
+
这导致用户重启后:
|
|
12
|
+
1. **记忆负担重**:必须回忆崩溃前到底开启了哪几个插件;
|
|
13
|
+
2. **操作繁琐**:必须在插件列表里逐一翻找并手动重新点击开启;
|
|
14
|
+
3. **二次闪退风险**:若不慎又开启了刚才引发崩溃的异常插件,会再次闪退;
|
|
15
|
+
4. **配置丢失**:用户自定义的模型与参数配置被归档为 `.bak`,当前变为纯空配置。
|
|
16
|
+
|
|
17
|
+
## 插件管家核心能力
|
|
18
|
+
|
|
19
|
+
1. **自动健康快照**:
|
|
20
|
+
- 每次 DSH 正常启动及运行时,自动在本地维护健康快照(记录 `bundles` 顺序与完整配置);
|
|
21
|
+
- 内置智能防膨胀机制(最大保留 20 份自动轮转,单份仅约 1~14 KB,支持手动删除与一键清理)。
|
|
22
|
+
2. **事故高亮预警与一键恢复**:
|
|
23
|
+
- 遭遇崩溃清空后,用户**只需在官方插件页开启【插件管家】这 1 个插件**;
|
|
24
|
+
- 进入插件管家面板,页面将弹出醒目告警横幅,列出被停用的全部插件清单;
|
|
25
|
+
- 支持**「一键全量恢复」**瞬间复原所有插件。
|
|
26
|
+
3. **排除特定坏插件(隔离排错)**:
|
|
27
|
+
- 支持多选框取消勾选可疑插件,只恢复其余稳定插件,避免陷入死循环崩溃。
|
|
28
|
+
4. **用户配置(.bak)智能挽回**:
|
|
29
|
+
- 自动扫描被官方重命名的 `cordis.patch.yml.bak` 文件,支持一键对比并覆盖还原。
|
|
30
|
+
5. **跨平台脱机应急脚本(双击秒级恢复)**:
|
|
31
|
+
- 自动在 Profile 目录生成(并支持一键导出到桌面)免依赖的应急脚本:
|
|
32
|
+
- **Windows**:`restore-plugins.bat`(原生批处理)
|
|
33
|
+
- **macOS**:`restore-plugins.command`(原生终端脚本)
|
|
34
|
+
- DSH 彻底打不开时,直接在桌面双击该脚本,1 秒钟在后台脱机复原。
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 安装方式
|
|
39
|
+
|
|
40
|
+
在 DSH 桌面版「设置/侧栏 → 插件 → 添加插件」,任选一种 spec 安装:
|
|
41
|
+
|
|
42
|
+
### 1. npm 渠道(推荐)
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
@supertiny99/dsh-plugin-guardian
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. GitHub 渠道(源码安装,tag 定版本)
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
github:supertiny99/dsh-plugin-guardian#v0.1.1
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 3. 本地 tarball 离线安装
|
|
55
|
+
|
|
56
|
+
下载 release 的 `.tgz` 包后,在输入框填写本地绝对路径:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
file:/你的绝对路径/supertiny99-dsh-plugin-guardian-0.1.1.tgz
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> **注意**:安装后请完全退出 DSH 桌面应用并重新打开(冷启动),左侧栏即可出现 **🛡️ 插件管家** 图标。
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 技术规范与安全性
|
|
67
|
+
|
|
68
|
+
- **零外呼、零第三方重依赖**:纯本地读写 `~/.dsh/profiles/desktop/` 相关配置文件;
|
|
69
|
+
- **原子级写保护**:修改 `package.json` 与 `cordis.patch.yml` 均采用临时文件重命名(atomic rename),杜绝半写损坏;
|
|
70
|
+
- **UI 规范**:严格遵循 DSH `ui-style-guide`,样式全走 `--dsw-alias-*` token,全矢量 SVG 图标(无 emoji),完美自适应明暗主题;
|
|
71
|
+
- **构建规范**:产物仅约 20 KB,经本地沙箱 `selfcheck` 预检,确保不会拖垮宿主。
|
|
72
|
+
|
|
73
|
+
## License
|
|
74
|
+
|
|
75
|
+
[MIT](LICENSE)
|
package/cordis.patch.yml
ADDED
package/dist/client.js
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
window.__ModuleLoader__.load({id:"@supertiny99/dsh-plugin-guardian",factory:(require)=>{const module={exports:{}};const exports=module.exports;
|
|
2
|
+
var V=Object.create;var x=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var W=(e,n)=>{for(var r in n)x(e,r,{get:n[r],enumerable:!0})},I=(e,n,r,f)=>{if(n&&typeof n=="object"||typeof n=="function")for(let d of D(n))!K.call(e,d)&&d!==r&&x(e,d,{get:()=>n[d],enumerable:!(f=A(n,d))||f.enumerable});return e};var $=(e,n,r)=>(r=e!=null?V(J(e)):{},I(n||!e||!e.__esModule?x(r,"default",{value:e,enumerable:!0}):r,e)),E=e=>I(x({},"__esModule",{value:!0}),e);var rs={};W(rs,{apply:()=>ts,inject:()=>ns});module.exports=E(rs);var s=$(require("react"),1);var w=`/* plugin-guardian \xB7 \u6837\u5F0F\u8868 (token \u5316\uFF0C\u660E\u6697\u81EA\u9002\u5E94) */
|
|
3
|
+
|
|
4
|
+
.pg-container {
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
height: 100%;
|
|
8
|
+
width: 100%;
|
|
9
|
+
background: var(--dsw-alias-surface-overlay, #ffffff);
|
|
10
|
+
color: var(--dsw-alias-text-primary, #1e293b);
|
|
11
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
overflow-y: auto;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.pg-header {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
padding: 20px 28px;
|
|
21
|
+
border-bottom: 1px solid var(--dsw-alias-border-subtle, rgba(0, 0, 0, 0.08));
|
|
22
|
+
background: var(--dsw-alias-surface-raised, rgba(0, 0, 0, 0.02));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.pg-header-left {
|
|
26
|
+
display: flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
gap: 14px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.pg-icon-badge {
|
|
32
|
+
width: 42px;
|
|
33
|
+
height: 42px;
|
|
34
|
+
border-radius: 10px;
|
|
35
|
+
background: var(--dsw-alias-accent-subtle, rgba(59, 130, 246, 0.12));
|
|
36
|
+
display: flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
justify-content: center;
|
|
39
|
+
font-size: 22px;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.pg-title-wrap h2 {
|
|
43
|
+
margin: 0;
|
|
44
|
+
font-size: 18px;
|
|
45
|
+
font-weight: 600;
|
|
46
|
+
color: var(--dsw-alias-text-primary, #0f172a);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.pg-title-wrap p {
|
|
50
|
+
margin: 3px 0 0 0;
|
|
51
|
+
font-size: 12px;
|
|
52
|
+
color: var(--dsw-alias-text-tertiary, #64748b);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.pg-actions {
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
gap: 10px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.pg-btn {
|
|
62
|
+
display: inline-flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
gap: 6px;
|
|
65
|
+
padding: 7px 14px;
|
|
66
|
+
font-size: 13px;
|
|
67
|
+
font-weight: 500;
|
|
68
|
+
border-radius: 6px;
|
|
69
|
+
border: 1px solid var(--dsw-alias-border-subtle, rgba(0, 0, 0, 0.15));
|
|
70
|
+
background: var(--dsw-alias-control-bg-neutral, #ffffff);
|
|
71
|
+
color: var(--dsw-alias-text-primary, #1e293b);
|
|
72
|
+
cursor: pointer;
|
|
73
|
+
transition: background-color 0.15s ease, border-color 0.15s ease;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.pg-btn:hover {
|
|
77
|
+
background: var(--dsw-alias-control-bg-neutral-hover, rgba(0, 0, 0, 0.05));
|
|
78
|
+
border-color: var(--dsw-alias-border-strong, rgba(0, 0, 0, 0.3));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.pg-btn:disabled {
|
|
82
|
+
opacity: 0.5;
|
|
83
|
+
cursor: not-allowed;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.pg-btn-primary {
|
|
87
|
+
background: var(--dsw-alias-accent-primary, #2563eb);
|
|
88
|
+
color: #ffffff;
|
|
89
|
+
border-color: transparent;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.pg-btn-primary:hover {
|
|
93
|
+
background: var(--dsw-alias-accent-hover, #1d4ed8);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.pg-btn-danger {
|
|
97
|
+
background: var(--dsw-alias-intent-danger, #ef4444);
|
|
98
|
+
color: #ffffff;
|
|
99
|
+
border-color: transparent;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.pg-content {
|
|
103
|
+
padding: 24px 28px;
|
|
104
|
+
display: flex;
|
|
105
|
+
flex-direction: column;
|
|
106
|
+
gap: 20px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* \u4E8B\u6545\u544A\u8B66\u6A2A\u5E45 (Incident Banner) */
|
|
110
|
+
.pg-incident-banner {
|
|
111
|
+
background: var(--dsw-alias-surface-sunken, rgba(239, 68, 68, 0.08));
|
|
112
|
+
border: 1px solid var(--dsw-alias-intent-danger, rgba(239, 68, 68, 0.4));
|
|
113
|
+
border-radius: 10px;
|
|
114
|
+
padding: 18px 22px;
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-direction: column;
|
|
117
|
+
gap: 14px;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.pg-incident-header {
|
|
121
|
+
display: flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
gap: 12px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.pg-incident-title {
|
|
127
|
+
font-size: 15px;
|
|
128
|
+
font-weight: 600;
|
|
129
|
+
color: var(--dsw-alias-intent-danger, #b91c1c);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.pg-incident-desc {
|
|
133
|
+
font-size: 13px;
|
|
134
|
+
color: var(--dsw-alias-text-secondary, #475569);
|
|
135
|
+
line-height: 1.5;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.pg-plugin-selection-box {
|
|
139
|
+
background: var(--dsw-alias-surface-overlay, #ffffff);
|
|
140
|
+
border: 1px solid var(--dsw-alias-border-subtle, rgba(0, 0, 0, 0.1));
|
|
141
|
+
border-radius: 8px;
|
|
142
|
+
padding: 12px 16px;
|
|
143
|
+
max-height: 240px;
|
|
144
|
+
overflow-y: auto;
|
|
145
|
+
display: flex;
|
|
146
|
+
flex-direction: column;
|
|
147
|
+
gap: 8px;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.pg-plugin-item {
|
|
151
|
+
display: flex;
|
|
152
|
+
align-items: center;
|
|
153
|
+
justify-content: space-between;
|
|
154
|
+
padding: 6px 8px;
|
|
155
|
+
border-radius: 6px;
|
|
156
|
+
cursor: pointer;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.pg-plugin-item:hover {
|
|
160
|
+
background: var(--dsw-alias-control-bg-neutral-hover, rgba(0, 0, 0, 0.04));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.pg-plugin-item-left {
|
|
164
|
+
display: flex;
|
|
165
|
+
align-items: center;
|
|
166
|
+
gap: 10px;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.pg-plugin-name {
|
|
170
|
+
font-size: 13px;
|
|
171
|
+
font-weight: 500;
|
|
172
|
+
color: var(--dsw-alias-text-primary, #0f172a);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.pg-plugin-tag {
|
|
176
|
+
font-size: 11px;
|
|
177
|
+
padding: 2px 6px;
|
|
178
|
+
border-radius: 4px;
|
|
179
|
+
background: var(--dsw-alias-accent-subtle, rgba(59, 130, 246, 0.1));
|
|
180
|
+
color: var(--dsw-alias-accent-primary, #2563eb);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.pg-card {
|
|
184
|
+
background: var(--dsw-alias-surface-raised, rgba(0, 0, 0, 0.02));
|
|
185
|
+
border: 1px solid var(--dsw-alias-border-subtle, rgba(0, 0, 0, 0.08));
|
|
186
|
+
border-radius: 10px;
|
|
187
|
+
padding: 18px 22px;
|
|
188
|
+
display: flex;
|
|
189
|
+
flex-direction: column;
|
|
190
|
+
gap: 12px;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.pg-card-title {
|
|
194
|
+
font-size: 14px;
|
|
195
|
+
font-weight: 600;
|
|
196
|
+
color: var(--dsw-alias-text-primary, #1e293b);
|
|
197
|
+
display: flex;
|
|
198
|
+
align-items: center;
|
|
199
|
+
justify-content: space-between;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.pg-dot {
|
|
203
|
+
display: inline-block;
|
|
204
|
+
width: 6px;
|
|
205
|
+
height: 6px;
|
|
206
|
+
border-radius: 50%;
|
|
207
|
+
background: var(--dsw-alias-intent-success, #16a34a);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.pg-incident-icon {
|
|
211
|
+
color: var(--dsw-alias-intent-danger, #ef4444);
|
|
212
|
+
display: flex;
|
|
213
|
+
align-items: center;
|
|
214
|
+
justify-content: center;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.pg-badge-healthy {
|
|
218
|
+
display: inline-flex;
|
|
219
|
+
align-items: center;
|
|
220
|
+
gap: 6px;
|
|
221
|
+
font-size: 12px;
|
|
222
|
+
font-weight: 500;
|
|
223
|
+
color: var(--dsw-alias-intent-success, #16a34a);
|
|
224
|
+
background: rgba(22, 163, 74, 0.1);
|
|
225
|
+
padding: 3px 10px;
|
|
226
|
+
border-radius: 12px;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.pg-list {
|
|
230
|
+
display: flex;
|
|
231
|
+
flex-direction: column;
|
|
232
|
+
gap: 6px;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.pg-row {
|
|
236
|
+
display: flex;
|
|
237
|
+
align-items: center;
|
|
238
|
+
justify-content: space-between;
|
|
239
|
+
padding: 8px 12px;
|
|
240
|
+
background: var(--dsw-alias-surface-overlay, #ffffff);
|
|
241
|
+
border: 1px solid var(--dsw-alias-border-subtle, rgba(0, 0, 0, 0.06));
|
|
242
|
+
border-radius: 6px;
|
|
243
|
+
font-size: 13px;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.pg-row-name {
|
|
247
|
+
font-weight: 500;
|
|
248
|
+
color: var(--dsw-alias-text-primary, #1e293b);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.pg-row-meta {
|
|
252
|
+
font-size: 12px;
|
|
253
|
+
color: var(--dsw-alias-text-tertiary, #94a3b8);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.pg-toast {
|
|
257
|
+
position: fixed;
|
|
258
|
+
bottom: 24px;
|
|
259
|
+
right: 28px;
|
|
260
|
+
background: var(--dsw-alias-text-primary, #0f172a);
|
|
261
|
+
color: var(--dsw-alias-surface-overlay, #ffffff);
|
|
262
|
+
padding: 10px 18px;
|
|
263
|
+
border-radius: 8px;
|
|
264
|
+
font-size: 13px;
|
|
265
|
+
font-weight: 500;
|
|
266
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
267
|
+
z-index: 9999;
|
|
268
|
+
transition: opacity 0.2s ease;
|
|
269
|
+
}
|
|
270
|
+
`;var l=({children:e,size:n=15,className:r=""})=>s.default.createElement("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:r,"aria-hidden":"true",style:{flexShrink:0}},e),U=({size:e=16})=>s.default.createElement(l,{size:e},s.default.createElement("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})),_=({size:e=14})=>s.default.createElement(l,{size:e},s.default.createElement("path",{d:"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"}),s.default.createElement("polyline",{points:"17 21 17 13 7 13 7 21"}),s.default.createElement("polyline",{points:"7 3 7 8 15 8"})),q=({size:e=14})=>s.default.createElement(l,{size:e},s.default.createElement("polyline",{points:"4 17 10 11 4 5"}),s.default.createElement("line",{x1:"12",y1:"19",x2:"20",y2:"19"})),Q=({size:e=14})=>s.default.createElement(l,{size:e},s.default.createElement("polyline",{points:"23 4 23 10 17 10"}),s.default.createElement("path",{d:"M20.49 15a9 9 0 1 1-2.12-9.36L23 10"})),X=({size:e=18})=>s.default.createElement(l,{size:e},s.default.createElement("path",{d:"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}),s.default.createElement("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),s.default.createElement("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})),Y=({size:e=14})=>s.default.createElement(l,{size:e},s.default.createElement("polyline",{points:"1 4 1 10 7 10"}),s.default.createElement("path",{d:"M3.51 15a9 9 0 1 0 2.13-9.36L1 10"})),Z=({size:e=14})=>s.default.createElement(l,{size:e},s.default.createElement("polyline",{points:"20 6 9 17 4 12"})),C=({size:e=15})=>s.default.createElement(l,{size:e},s.default.createElement("line",{x1:"16.5",y1:"9.4",x2:"7.5",y2:"4.21"}),s.default.createElement("path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"}),s.default.createElement("polyline",{points:"3.27 6.96 12 12.01 20.73 6.96"}),s.default.createElement("line",{x1:"12",y1:"22.08",x2:"12",y2:"12"})),R=({size:e=15})=>s.default.createElement(l,{size:e},s.default.createElement("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),s.default.createElement("polyline",{points:"14 2 14 8 20 8"}),s.default.createElement("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),s.default.createElement("line",{x1:"16",y1:"17",x2:"8",y2:"17"})),ss=({size:e=14})=>s.default.createElement(l,{size:e},s.default.createElement("circle",{cx:"12",cy:"12",r:"10"}),s.default.createElement("polyline",{points:"12 6 12 12 16 14"})),P=({size:e=14})=>s.default.createElement(l,{size:e},s.default.createElement("polyline",{points:"3 6 5 6 21 6"}),s.default.createElement("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})),es=({size:e=14})=>s.default.createElement(l,{size:e},s.default.createElement("path",{d:"M18.36 6.64a9 9 0 1 1-12.73 0"}),s.default.createElement("line",{x1:"12",y1:"2",x2:"12",y2:"12"}));function as(){let[e,n]=(0,s.useState)(null),[r,f]=(0,s.useState)(!0),[d,k]=(0,s.useState)(new Set),[h,j]=(0,s.useState)(!0),[z,S]=(0,s.useState)(null),[p,o]=(0,s.useState)(!1),t=a=>{S(a),setTimeout(()=>S(null),3500)},g=(0,s.useCallback)(async()=>{try{f(!0);let a=await fetch("/plugin-guardian/status");if(a.ok){let i=await a.json();n(i),i.disabledFromHealthy&&i.disabledFromHealthy.length>0&&k(new Set(i.disabledFromHealthy))}}catch(a){console.error("Failed to fetch guardian status:",a)}finally{f(!1)}},[]);(0,s.useEffect)(()=>{g()},[g]);let T=a=>{let i=new Set(d);i.has(a)?i.delete(a):i.add(a),k(i)},v=async(a,i)=>{if(a.length===0){t("\u672A\u9009\u62E9\u4EFB\u4F55\u9700\u8981\u6062\u590D\u7684\u63D2\u4EF6");return}try{o(!0);let N=await(await fetch("/plugin-guardian/restore",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({bundles:a,restorePatch:i})})).json();N.ok?(t("\u6062\u590D\u5199\u5165\u6210\u529F\uFF01\u8BF7\u5B8C\u5168\u9000\u51FA\u5E76\u91CD\u542F DSH \u751F\u6548"),await g()):t("\u6062\u590D\u5931\u8D25: "+(N.error||"\u672A\u77E5\u9519\u8BEF"))}catch(c){t("\u8BF7\u6C42\u5931\u8D25: "+c.message)}finally{o(!1)}},B=async()=>{try{o(!0),(await(await fetch("/plugin-guardian/snapshot",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({reason:"manual"})})).json()).ok&&(t("\u5DF2\u6210\u529F\u521B\u5EFA\u5F53\u524D\u5065\u5EB7\u5FEB\u7167\uFF01"),await g())}catch(a){t("\u521B\u5EFA\u5FEB\u7167\u5931\u8D25: "+a.message)}finally{o(!1)}},F=async a=>{try{o(!0);let c=await(await fetch("/plugin-guardian/restore-patch",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({fileName:a})})).json();c.ok?(t("\u914D\u7F6E\u5DF2\u6210\u529F\u633D\u56DE\uFF01"),await g()):t("\u633D\u56DE\u5931\u8D25: "+c.error)}catch(i){t("\u8BF7\u6C42\u5931\u8D25: "+i.message)}finally{o(!1)}},H=async()=>{try{o(!0);let i=await(await fetch("/plugin-guardian/export-script",{method:"POST"})).json();i.ok&&t(`\u5E94\u6025\u811A\u672C\u5DF2\u751F\u6210\u81F3\u684C\u9762 (${i.fileName})\uFF0C\u7CFB\u7EDF\u5DF2\u5B9A\u4F4D\u8BE5\u6587\u4EF6`)}catch(a){t("\u5BFC\u51FA\u5931\u8D25: "+a.message)}finally{o(!1)}},M=async a=>{try{o(!0);let c=await(await fetch("/plugin-guardian/delete-snapshot",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({id:a})})).json();c.ok?(t("\u5DF2\u5220\u9664\u5FEB\u7167 "+a),await g()):t("\u5220\u9664\u5931\u8D25: "+c.error)}catch(i){t("\u8BF7\u6C42\u5931\u8D25: "+i.message)}finally{o(!1)}},O=async()=>{try{o(!0);let i=await(await fetch("/plugin-guardian/clean-snapshots",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({keepCount:2})})).json();i.ok&&(t(`\u5DF2\u6E05\u7406 ${i.deletedCount} \u4EFD\u65E7\u5FEB\u7167\uFF0C\u4FDD\u7559\u4E86\u6700\u65B0 ${i.retained} \u4EFD`),await g())}catch(a){t("\u6E05\u7406\u5931\u8D25: "+a.message)}finally{o(!1)}};if(r&&!e)return s.default.createElement("div",{className:"pg-container"},s.default.createElement("style",null,w),s.default.createElement("div",{style:{padding:32,textAlign:"center",color:"var(--dsw-alias-text-tertiary)"}},"\u6B63\u5728\u8BFB\u53D6\u63D2\u4EF6\u72B6\u6001\u4E0E\u5FEB\u7167..."));let m=e?.isIncident,y=e?.disabledFromHealthy||[],u=e?.currentThirdParty||[],b=e?.inactiveInstalled||[],L=(()=>{if(e?.snapshotsTotalSize&&e.snapshotsTotalSize!=="0 KB")return e.snapshotsTotalSize;let a=e?.snapshotsCount||0;if(a===0)return"0 KB";let i=(e?.currentPatchSize||0)+1500;return(a*i/1024).toFixed(1)+" KB"})();return s.default.createElement("div",{className:"pg-container"},s.default.createElement("style",null,w),s.default.createElement("div",{className:"pg-header"},s.default.createElement("div",{className:"pg-header-left"},s.default.createElement("div",{className:"pg-icon-badge"},s.default.createElement(U,{size:22})),s.default.createElement("div",{className:"pg-title-wrap"},s.default.createElement("h2",null,"DSH \u63D2\u4EF6\u7BA1\u5BB6"),s.default.createElement("p",null,"Profile \u72B6\u6001\u5B88\u62A4 \xB7 \u81EA\u52A8\u5FEB\u7167 \xB7 \u4E8B\u6545\u4E00\u952E\u6062\u590D \xB7 \u8131\u673A\u5E94\u6025\u4FEE\u590D"))),s.default.createElement("div",{className:"pg-actions"},s.default.createElement("button",{className:"pg-btn",onClick:B,disabled:p,title:"\u624B\u52A8\u5C06\u5F53\u524D\u6240\u6709\u5F00\u542F\u7684\u63D2\u4EF6\u4E0E\u914D\u7F6E\u8BB0\u5F55\u4E3A\u65B0\u5FEB\u7167"},s.default.createElement(_,{size:14}),s.default.createElement("span",null,"\u4FDD\u5B58\u5FEB\u7167")),s.default.createElement("button",{className:"pg-btn",onClick:H,disabled:p,title:"\u5728\u684C\u9762\u751F\u6210\u4E00\u4E2A\u53CC\u51FB\u5373\u53EF\u6062\u590D\u7684\u811A\u672C\uFF0CDSH \u95EA\u9000\u4E0D\u5F00\u65F6\u53EF\u7528"},s.default.createElement(q,{size:14}),s.default.createElement("span",null,"\u5BFC\u51FA\u684C\u9762\u5E94\u6025\u811A\u672C")),s.default.createElement("button",{className:"pg-btn",onClick:g,disabled:p},s.default.createElement(Q,{size:14}),s.default.createElement("span",null,"\u5237\u65B0")))),s.default.createElement("div",{className:"pg-content"},m&&s.default.createElement("div",{className:"pg-incident-banner"},s.default.createElement("div",{className:"pg-incident-header"},s.default.createElement("div",{className:"pg-incident-icon"},s.default.createElement(X,{size:20})),s.default.createElement("div",{className:"pg-incident-title"},"\u68C0\u6D4B\u5230\u7CFB\u7EDF\u6B64\u524D\u6267\u884C\u4E86\u5168\u76D8\u7981\u7528\uFF0C\u53D1\u73B0\u7B2C\u4E09\u65B9\u63D2\u4EF6\u88AB\u505C\u7528")),s.default.createElement("div",{className:"pg-incident-desc"},"\u68C0\u6D4B\u5230\u4E0A\u4E00\u6B21\u5065\u5EB7\u5FEB\u7167\u4E2D\u6FC0\u6D3B\u7684 ",s.default.createElement("strong",null,y.length)," \u4E2A\u7B2C\u4E09\u65B9\u63D2\u4EF6\u5F53\u524D\u5DF2\u88AB\u5BBF\u4E3B\u79FB\u51FA\u6FC0\u6D3B\u5217\u8868\u3002 \u4F60\u53EF\u4EE5\u76F4\u63A5\u4E00\u952E\u5168\u90E8\u6062\u590D\uFF0C\u6216\u52FE\u9009\u6392\u9664\u521A\u624D\u5BFC\u81F4\u95EA\u9000\u7684\u53EF\u7591\u63D2\u4EF6\uFF1A"),s.default.createElement("div",{className:"pg-plugin-selection-box"},y.map(a=>{let i=d.has(a);return s.default.createElement("div",{key:a,className:"pg-plugin-item",onClick:()=>T(a)},s.default.createElement("div",{className:"pg-plugin-item-left"},s.default.createElement("input",{type:"checkbox",checked:i,onChange:()=>{},style:{cursor:"pointer"}}),s.default.createElement(C,{size:14}),s.default.createElement("span",{className:"pg-plugin-name"},a)),s.default.createElement("span",{className:"pg-plugin-tag"},"\u5F85\u6062\u590D"))})),e?.patchNeedsRecovery&&s.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:13}},s.default.createElement("input",{type:"checkbox",id:"restorePatchCheck",checked:h,onChange:a=>j(a.target.checked),style:{cursor:"pointer"}}),s.default.createElement("label",{htmlFor:"restorePatchCheck",style:{cursor:"pointer",color:"var(--dsw-alias-text-primary)"}},"\u540C\u65F6\u4ECE\u6700\u65B0\u7684 ",s.default.createElement("code",null,"cordis.patch.yml.bak")," \u4E2D\u627E\u56DE\u88AB\u6E05\u7A7A\u7684\u7528\u6237\u914D\u7F6E")),s.default.createElement("div",{style:{display:"flex",gap:10,marginTop:4}},s.default.createElement("button",{className:"pg-btn pg-btn-primary",onClick:()=>v(y,h),disabled:p},s.default.createElement(Y,{size:14}),s.default.createElement("span",null,"\u4E00\u952E\u5168\u91CF\u6062\u590D\u6240\u6709\u63D2\u4EF6 (",y.length,")")),s.default.createElement("button",{className:"pg-btn",onClick:()=>v(Array.from(d),h),disabled:p||d.size===0},s.default.createElement(Z,{size:14}),s.default.createElement("span",null,"\u6062\u590D\u52FE\u9009\u63D2\u4EF6 (",d.size,")")))),s.default.createElement("div",{className:"pg-card"},s.default.createElement("div",{className:"pg-card-title"},s.default.createElement("span",null,"\u5F53\u524D Profile \u63D2\u4EF6\u8FD0\u884C\u72B6\u6001"),s.default.createElement("span",{className:"pg-badge-healthy"},s.default.createElement("span",{className:"pg-dot"}),m?"\u5904\u4E8E\u6062\u590D\u6392\u67E5\u6A21\u5F0F":"\u5065\u5EB7\u8FD0\u884C\u4E2D")),s.default.createElement("div",{style:{fontSize:13,color:"var(--dsw-alias-text-secondary)",lineHeight:1.6}},"\u5F53\u524D\u5171\u6FC0\u6D3B ",s.default.createElement("strong",null,e?.currentBundles?.length||0)," \u4E2A\u7EC4\u5408\u884C\uFF08\u542B"," ",s.default.createElement("strong",null,u.length)," \u4E2A\u7B2C\u4E09\u65B9\u63D2\u4EF6\uFF09\u3002",e?.latestHealthy?s.default.createElement("span",null," \u6700\u8FD1\u5065\u5EB7\u5FEB\u7167\u5EFA\u7ACB\u4E8E\uFF1A",s.default.createElement("strong",null,e.latestHealthy.timeString),"\u3002"):s.default.createElement("span",null," \u5C1A\u672A\u5EFA\u7ACB\u5065\u5EB7\u57FA\u51C6\u5FEB\u7167\u3002")),s.default.createElement("div",{className:"pg-list",style:{marginTop:8}},u.map(a=>s.default.createElement("div",{key:a,className:"pg-row"},s.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},s.default.createElement(C,{size:15}),s.default.createElement("span",{className:"pg-row-name"},a)),s.default.createElement("span",{className:"pg-plugin-tag",style:{background:"rgba(22, 163, 74, 0.1)",color:"#16a34a"}},"\u5DF2\u6FC0\u6D3B"))),u.length===0&&s.default.createElement("div",{style:{padding:"12px 0",fontSize:13,color:"var(--dsw-alias-text-tertiary)"}},"\u6682\u65E0\u5DF2\u6FC0\u6D3B\u7684\u7B2C\u4E09\u65B9\u63D2\u4EF6\u3002"))),b.length>0&&!m&&s.default.createElement("div",{className:"pg-card"},s.default.createElement("div",{className:"pg-card-title"},s.default.createElement("span",null,"\u5DF2\u5728 dependencies \u5B89\u88C5\u3001\u4F46\u672A\u6FC0\u6D3B\u7684\u7B2C\u4E09\u65B9\u63D2\u4EF6 (",b.length,")")),s.default.createElement("div",{className:"pg-list"},b.map(a=>s.default.createElement("div",{key:a,className:"pg-row"},s.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},s.default.createElement(es,{size:14}),s.default.createElement("span",{className:"pg-row-name"},a)),s.default.createElement("button",{className:"pg-btn",style:{padding:"4px 10px",fontSize:12},onClick:()=>v([...u,a],!1),disabled:p},"\u4E00\u952E\u6FC0\u6D3B\u6B64\u63D2\u4EF6"))))),e?.bakFiles?.length>0&&s.default.createElement("div",{className:"pg-card"},s.default.createElement("div",{className:"pg-card-title"},s.default.createElement("span",null,"cordis.patch.yml \u914D\u7F6E\u5907\u4EFD\u5386\u53F2 (",e.bakFiles.length," \u4EFD)")),s.default.createElement("div",{style:{fontSize:12,color:"var(--dsw-alias-text-tertiary)"}},"\u5F53 DSH \u53D1\u751F\u5D29\u6E83\u6062\u590D\u65F6\uFF0C\u539F\u914D\u7F6E\u4F1A\u88AB\u91CD\u547D\u540D\u4E3A bak \u4FDD\u5B58\u3002\u4F60\u53EF\u4EE5\u968F\u65F6\u5BF9\u6BD4\u5E76\u627E\u56DE\u914D\u7F6E\uFF1A"),s.default.createElement("div",{className:"pg-list"},e.bakFiles.slice(0,3).map(a=>s.default.createElement("div",{key:a.fileName,className:"pg-row"},s.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},s.default.createElement(R,{size:16}),s.default.createElement("div",null,s.default.createElement("div",{className:"pg-row-name"},a.fileName),s.default.createElement("div",{className:"pg-row-meta"},"\u65F6\u95F4: ",a.mtimeString," \xB7 \u5927\u5C0F: ",a.size," \u5B57\u8282"))),s.default.createElement("button",{className:"pg-btn",style:{padding:"4px 10px",fontSize:12},onClick:()=>F(a.fileName),disabled:p},"\u4ECE\u5907\u4EFD\u8986\u76D6\u8FD8\u539F\u914D\u7F6E"))))),s.default.createElement("div",{className:"pg-card"},s.default.createElement("div",{className:"pg-card-title"},s.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},s.default.createElement("span",null,"\u5386\u53F2\u5065\u5EB7\u5FEB\u7167 (",e?.snapshotsCount||0,")"),s.default.createElement("span",{style:{fontSize:12,fontWeight:"normal",color:"var(--dsw-alias-text-tertiary)"}},"\u5360\u7528\u78C1\u76D8: ",L)),e?.snapshotsCount>2&&s.default.createElement("button",{className:"pg-btn",style:{padding:"3px 8px",fontSize:12},onClick:O,disabled:p,title:"\u4EC5\u4FDD\u7559\u6700\u8FD1 2 \u4EFD\u5FEB\u7167\uFF0C\u6E05\u7406\u66F4\u65E9\u7684\u5386\u53F2\u8BB0\u5F55"},s.default.createElement(P,{size:12}),s.default.createElement("span",null,"\u6E05\u7406\u65E7\u5FEB\u7167"))),s.default.createElement("div",{className:"pg-list"},e?.recentSnapshots?.map(a=>s.default.createElement("div",{key:a.id,className:"pg-row"},s.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:10}},s.default.createElement(ss,{size:15}),s.default.createElement("div",null,s.default.createElement("div",{className:"pg-row-name",style:{display:"flex",alignItems:"center",gap:8}},s.default.createElement("span",null,a.timeString),s.default.createElement("span",{style:{fontSize:11,color:"var(--dsw-alias-text-tertiary)"}},"(",a.sizeText||(((e?.currentPatchSize||0)+1500)/1024).toFixed(1)+" KB",")")),s.default.createElement("div",{className:"pg-row-meta"},"\u539F\u56E0: ",a.reason==="startup_auto"?"\u542F\u52A8\u81EA\u52A8\u5FEB\u7167":a.reason==="manual"?"\u624B\u52A8\u5FEB\u7167":a.reason," \xB7 \u7B2C\u4E09\u65B9\u63D2\u4EF6\u6570: ",a.thirdPartyCount))),s.default.createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},s.default.createElement("button",{className:"pg-btn",style:{padding:"4px 10px",fontSize:12},onClick:()=>v(a.thirdPartyBundles,!1),disabled:p||a.thirdPartyCount===0,title:"\u5C06\u63D2\u4EF6\u6FC0\u6D3B\u72B6\u6001\u56DE\u6EDA\u4E3A\u6B64\u5FEB\u7167"},"\u6062\u590D\u4E3A\u6B64\u5FEB\u7167"),s.default.createElement("button",{className:"pg-btn",style:{padding:"4px 8px",fontSize:12,color:"var(--dsw-alias-intent-danger, #ef4444)"},onClick:()=>M(a.id),disabled:p,title:"\u5220\u9664\u6B64\u4EFD\u5FEB\u7167"},s.default.createElement(P,{size:13})))))))),z&&s.default.createElement("div",{className:"pg-toast"},z))}function is({size:e=20,active:n=!1}){return s.default.createElement("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:n?2.2:1.6,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},s.default.createElement("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"}))}var ns=["slots"];function ts(e){e.slots.inject("sidebar.panellist",()=>e.slots.register({name:"sidebar.panellist",id:"plugin-guardian",order:70,label:"\u63D2\u4EF6\u7BA1\u5BB6"},is)),e.slots.inject("main",()=>e.slots.register({name:"main",key:"plugin-guardian"},as))}
|
|
271
|
+
return module.exports}})
|
package/dist/meta.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"inputs": {
|
|
3
|
+
"src/guardian.css": {
|
|
4
|
+
"bytes": 5592,
|
|
5
|
+
"imports": []
|
|
6
|
+
},
|
|
7
|
+
"src/client.jsx": {
|
|
8
|
+
"bytes": 19888,
|
|
9
|
+
"imports": [
|
|
10
|
+
{
|
|
11
|
+
"path": "react",
|
|
12
|
+
"kind": "import-statement",
|
|
13
|
+
"external": true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"path": "src/guardian.css",
|
|
17
|
+
"kind": "import-statement",
|
|
18
|
+
"original": "./guardian.css"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"format": "esm"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"outputs": {
|
|
25
|
+
"dist/client.js": {
|
|
26
|
+
"imports": [
|
|
27
|
+
{
|
|
28
|
+
"path": "react",
|
|
29
|
+
"kind": "require-call",
|
|
30
|
+
"external": true
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"exports": [],
|
|
34
|
+
"entryPoint": "src/client.jsx",
|
|
35
|
+
"inputs": {
|
|
36
|
+
"src/client.jsx": {
|
|
37
|
+
"bytesInOutput": 17543
|
|
38
|
+
},
|
|
39
|
+
"src/guardian.css": {
|
|
40
|
+
"bytesInOutput": 5651
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"bytes": 23921
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,67 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"name": "@supertiny99/dsh-plugin-guardian",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "DeepSeek Harness (DSH) 插件管家与防灾恢复:解决异常插件崩溃后全盘禁用的痛点,提供自动快照、一键勾选恢复、配置挽回与跨平台桌面脱机应急恢复脚本。",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "src/index.js",
|
|
7
|
+
"author": "supertiny99",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/supertiny99/dsh-plugin-guardian.git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/supertiny99/dsh-plugin-guardian/issues"
|
|
15
|
+
},
|
|
16
|
+
"homepage": "https://github.com/supertiny99/dsh-plugin-guardian#readme",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": "./src/index.js",
|
|
19
|
+
"./client": "./dist/client.js",
|
|
20
|
+
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
21
|
+
"./package.json": "./package.json"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public",
|
|
25
|
+
"registry": "https://registry.npmjs.org/"
|
|
26
|
+
},
|
|
27
|
+
"dsh": {
|
|
28
|
+
"bundle": {
|
|
29
|
+
"patch": "./cordis.patch.yml"
|
|
30
|
+
},
|
|
31
|
+
"client": {
|
|
32
|
+
"platform": "web",
|
|
33
|
+
"immediately": true,
|
|
34
|
+
"inject": [
|
|
35
|
+
"@deepseek-ai/dsh-client-ui-conversation"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=20",
|
|
41
|
+
"dsh": ">=0.2.1-rc.5 <0.3.0"
|
|
42
|
+
},
|
|
43
|
+
"keywords": [
|
|
44
|
+
"dsh",
|
|
45
|
+
"deepseek-harness",
|
|
46
|
+
"dsh-plugin",
|
|
47
|
+
"guardian",
|
|
48
|
+
"backup",
|
|
49
|
+
"restore",
|
|
50
|
+
"safe-mode",
|
|
51
|
+
"plugin-manager"
|
|
52
|
+
],
|
|
53
|
+
"scripts": {
|
|
54
|
+
"build": "node scripts/build.mjs && node scripts/selfcheck.mjs",
|
|
55
|
+
"test": "node test-host.mjs"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"esbuild": "^0.25.10"
|
|
59
|
+
},
|
|
60
|
+
"files": [
|
|
61
|
+
"src",
|
|
62
|
+
"dist",
|
|
63
|
+
"cordis.patch.yml",
|
|
64
|
+
"README.md",
|
|
65
|
+
"LICENSE"
|
|
66
|
+
]
|
|
67
|
+
}
|