dsh-m 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cli.js +1 -1
- package/lib/client.js +8 -5
- package/lib/core/market.js +1 -1
- package/lib/core/registry.js +1 -1
- package/lib/tools.js +0 -1
- package/package.json +1 -1
- package/registry.json +44 -33
package/lib/cli.js
CHANGED
|
@@ -82,7 +82,7 @@ const HELP = `dshm — DSH Marketplace(个人自用 DSH 插件市场)
|
|
|
82
82
|
用法:dshm <命令> [参数]
|
|
83
83
|
|
|
84
84
|
只读命令:
|
|
85
|
-
dshm search [--query 关键词] [--category market|tools|ui|search|
|
|
85
|
+
dshm search [--query 关键词] [--category market|tools|ui|search|other] [--limit N]
|
|
86
86
|
dshm list 列出 web profile 已装插件(含市场标注/可升级)
|
|
87
87
|
dshm outdated 检查已装插件的最新版本
|
|
88
88
|
dshm registry 查看收录清单来源与条目
|
package/lib/client.js
CHANGED
|
@@ -97,7 +97,7 @@ var init_market_state = __esm({
|
|
|
97
97
|
"src/client/market-state.js"() {
|
|
98
98
|
"use strict";
|
|
99
99
|
MARKET_PAGE_SIZE = 50;
|
|
100
|
-
CATEGORIES = ["market", "tools", "ui", "search", "
|
|
100
|
+
CATEGORIES = ["market", "tools", "ui", "search", "other"];
|
|
101
101
|
FALLBACK_REGISTRY_STATE = {
|
|
102
102
|
configuredAddress: "",
|
|
103
103
|
activeAddress: null,
|
|
@@ -130,7 +130,6 @@ var ZH = {
|
|
|
130
130
|
"cat.tools": "\u5DE5\u5177",
|
|
131
131
|
"cat.ui": "\u754C\u9762",
|
|
132
132
|
"cat.search": "\u641C\u7D22",
|
|
133
|
-
"cat.media": "\u591A\u5A92\u4F53",
|
|
134
133
|
"cat.other": "\u5176\u4ED6",
|
|
135
134
|
"search.ph": "\u641C\u7D22\u540D\u79F0 / \u63CF\u8FF0 / \u6807\u7B7E\u2026",
|
|
136
135
|
"common.refresh": "\u5237\u65B0",
|
|
@@ -299,7 +298,6 @@ var EN = {
|
|
|
299
298
|
"cat.tools": "Tools",
|
|
300
299
|
"cat.ui": "UI",
|
|
301
300
|
"cat.search": "Search",
|
|
302
|
-
"cat.media": "Media",
|
|
303
301
|
"cat.other": "Other",
|
|
304
302
|
"search.ph": "Search name, description, tags\u2026",
|
|
305
303
|
"common.refresh": "Refresh",
|
|
@@ -468,7 +466,7 @@ function lookup(key, params) {
|
|
|
468
466
|
const dict = browserLang() === "en" ? EN : ZH;
|
|
469
467
|
return interpolate(dict[key] ?? ZH[key] ?? key, params);
|
|
470
468
|
}
|
|
471
|
-
var CATEGORIES2 = ["market", "tools", "ui", "search", "
|
|
469
|
+
var CATEGORIES2 = ["market", "tools", "ui", "search", "other"];
|
|
472
470
|
var CSS = `
|
|
473
471
|
.dshm-overlay{position:fixed;inset:0;z-index:2147483000;background:var(--dsw-alias-bg-mask-3,rgba(15,23,42,.48));display:flex;align-items:center;justify-content:center;padding:24px 16px;box-sizing:border-box}
|
|
474
472
|
.dshm-panel{width:min(920px,100%);height:min(680px,86vh);display:flex;flex-direction:column;background:var(--dsw-alias-bg-overlay,var(--dsw-alias-bg-layer-3,#fff));border:1px solid var(--dsw-alias-border-l2,#e5e7eb);border-radius:14px;box-shadow:0 18px 48px rgba(2,6,23,.25);overflow:hidden;font-family:inherit;color:var(--dsw-alias-label-primary,inherit)}
|
|
@@ -560,6 +558,10 @@ var CSS = `
|
|
|
560
558
|
.dshm-entry:hover{background:var(--dsw-alias-interactive-bg-hover,rgba(38,49,72,.06))}
|
|
561
559
|
.dshm-entry svg{flex:none;width:16px;height:16px}
|
|
562
560
|
.dshm-entry span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
561
|
+
/* \u6536\u8D77\uFF08rail\uFF09\u6001\uFF1A\u4E0E\u5BBF\u4E3B\u8BBE\u7F6E\u5165\u53E3 / dsh-skins \u540C\u51E0\u4F55\u2014\u201436\xD736 \u5706\u5F62\u3001margin 8/10\u3001
|
|
562
|
+
\u56FE\u6807 18\u3001\u5185\u5BB9\u6C34\u5E73\u5C45\u4E2D\u3002\u7F3A\u8FD9\u5957\u4F1A\u5BFC\u81F4\u6536\u8D77\u65F6\u56FE\u6807\u504F\u79BB\u8F74\u7EBF\u4E14\u884C\u8DDD\u4E0D\u9F50\uFF08\u5B9E\u6D4B\u5DE6\u504F ~4px\uFF09\u3002 */
|
|
563
|
+
.dshm-entry.rail{width:36px;height:36px;margin:8px 0 10px;padding:0;justify-content:center;border-radius:50%;gap:0}
|
|
564
|
+
.dshm-entry.rail svg{width:18px;height:18px}
|
|
563
565
|
[data-slot="sidebar.footer.action"]{display:flex!important;flex-direction:column;width:100%;min-width:0}
|
|
564
566
|
[data-slot="sidebar.footer.action"]>*{flex:none;min-width:0}
|
|
565
567
|
.dshm-empty{text-align:center;color:var(--dsw-alias-label-caption,#6b7280);font-size:13px;padding:32px 0}
|
|
@@ -1619,10 +1621,11 @@ function MarketIcon() {
|
|
|
1619
1621
|
}
|
|
1620
1622
|
function MarketEntry(props) {
|
|
1621
1623
|
useEffect(() => ensureCss(), []);
|
|
1624
|
+
const rail = !(props && props.wide);
|
|
1622
1625
|
return h(
|
|
1623
1626
|
"button",
|
|
1624
1627
|
{
|
|
1625
|
-
className: "dshm-entry",
|
|
1628
|
+
className: rail ? "dshm-entry rail" : "dshm-entry",
|
|
1626
1629
|
onClick: () => {
|
|
1627
1630
|
try {
|
|
1628
1631
|
mountPanel();
|
package/lib/core/market.js
CHANGED
|
@@ -42,7 +42,7 @@ export async function mapWithConcurrency(items, limit, worker) {
|
|
|
42
42
|
return results;
|
|
43
43
|
}
|
|
44
44
|
function zeroCounts() {
|
|
45
|
-
return { market: 0, tools: 0, ui: 0, search: 0,
|
|
45
|
+
return { market: 0, tools: 0, ui: 0, search: 0, other: 0 };
|
|
46
46
|
}
|
|
47
47
|
function clampLimit(raw, max) {
|
|
48
48
|
const n = typeof raw === 'number' && Number.isFinite(raw) ? Math.floor(raw) : max;
|
package/lib/core/registry.js
CHANGED
|
@@ -10,7 +10,7 @@ import { constants as fsConstants, mkdirSync } from 'node:fs';
|
|
|
10
10
|
import { lstat, mkdir, open, readFile, readdir, realpath, rename, rm } from 'node:fs/promises';
|
|
11
11
|
import { cacheDir } from './env.js';
|
|
12
12
|
import { decodeUtf8Fatal, fetchJsonLimitedMeta } from './httpx.js';
|
|
13
|
-
export const CATEGORIES = ['market', 'tools', 'ui', 'search', '
|
|
13
|
+
export const CATEGORIES = ['market', 'tools', 'ui', 'search', 'other'];
|
|
14
14
|
/** 容量上限:2 MiB 是原始 UTF-8 bytes(不是字符数);条目超限拒绝整份清单。 */
|
|
15
15
|
export const MAX_REGISTRY_BYTES = 2 * 1024 * 1024;
|
|
16
16
|
export const MAX_PLUGINS = 1000;
|
package/lib/tools.js
CHANGED
package/package.json
CHANGED
package/registry.json
CHANGED
|
@@ -12,6 +12,39 @@
|
|
|
12
12
|
"github": "iasiv5/dsh-skins",
|
|
13
13
|
"homepage": "https://github.com/iasiv5/dsh-skins"
|
|
14
14
|
},
|
|
15
|
+
{
|
|
16
|
+
"id": "dsh-copilot-auth",
|
|
17
|
+
"name": "DSH Copilot Auth",
|
|
18
|
+
"description": "为 DSH 内置 GitHub Copilot 提供方补上设备码(device flow)登录/注销设置页,并预置开箱即用的 Copilot 路由;凭据托管 DSH 内置凭据库,模型目录自动同步。",
|
|
19
|
+
"category": "tools",
|
|
20
|
+
"tags": ["Copilot", "认证", "模型接入"],
|
|
21
|
+
"source": "npm",
|
|
22
|
+
"npm": "@inventec/dsh-copilot-auth",
|
|
23
|
+
"github": "iasiv5/dsh-copilot-auth",
|
|
24
|
+
"homepage": "https://github.com/iasiv5/dsh-copilot-auth"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "dsh-m",
|
|
28
|
+
"name": "DSH Marketplace",
|
|
29
|
+
"description": "可自定义 Registry 内容的 DeepSeek Harness 插件市场:收录、安装、卸载、升级 DSH 插件,一站搞定。",
|
|
30
|
+
"category": "market",
|
|
31
|
+
"tags": ["市场", "插件管理"],
|
|
32
|
+
"source": "npm",
|
|
33
|
+
"npm": "dsh-m",
|
|
34
|
+
"github": "iasiv5/dsh-m",
|
|
35
|
+
"homepage": "https://github.com/iasiv5/dsh-m"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "dsh-skip-browser-auth",
|
|
39
|
+
"name": "DSH Skip Browser Auth",
|
|
40
|
+
"description": "在已适配版本上替换官方 Connection 提供方,跳过 BrowserAuth,不再需要输入烦人的Token。(当前已适配:0.1.2-rc.1)",
|
|
41
|
+
"category": "tools",
|
|
42
|
+
"tags": ["BrowserAuth", "连接", "安全"],
|
|
43
|
+
"source": "npm",
|
|
44
|
+
"npm": "@iasiv5/dsh-skip-browser-auth",
|
|
45
|
+
"github": "iasiv5/dsh-skip-browser-auth",
|
|
46
|
+
"homepage": "https://github.com/iasiv5/dsh-skip-browser-auth"
|
|
47
|
+
},
|
|
15
48
|
{
|
|
16
49
|
"id": "modsearch",
|
|
17
50
|
"name": "ModSearch",
|
|
@@ -23,6 +56,17 @@
|
|
|
23
56
|
"github": "liustack/modsearch",
|
|
24
57
|
"homepage": "https://github.com/liustack/modsearch"
|
|
25
58
|
},
|
|
59
|
+
{
|
|
60
|
+
"id": "dsh-auth",
|
|
61
|
+
"name": "DSH Auth",
|
|
62
|
+
"description": "DSH Web 管理员认证插件:Argon2id 口令、可撤销会话、双语界面,经 Caddy forward_auth 边缘保护页面/API/下载/SSE/WebSocket,Harness 保持仅回环监听。",
|
|
63
|
+
"category": "tools",
|
|
64
|
+
"tags": ["认证", "安全"],
|
|
65
|
+
"source": "npm",
|
|
66
|
+
"npm": "dsh-auth",
|
|
67
|
+
"github": "hxy91819/dsh-auth",
|
|
68
|
+
"homepage": "https://github.com/hxy91819/dsh-auth"
|
|
69
|
+
},
|
|
26
70
|
{
|
|
27
71
|
"id": "deepseek-harness-lark",
|
|
28
72
|
"name": "DeepSeek Harness Lark",
|
|
@@ -77,39 +121,6 @@
|
|
|
77
121
|
"npm": "deepseek-harness-dingtalk",
|
|
78
122
|
"github": "sliverp/DeepSeek-harness-dingtalk",
|
|
79
123
|
"homepage": "https://github.com/sliverp/DeepSeek-harness-dingtalk"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"id": "dsh-auth",
|
|
83
|
-
"name": "DSH Auth",
|
|
84
|
-
"description": "DSH Web 管理员认证插件:Argon2id 口令、可撤销会话、双语界面,经 Caddy forward_auth 边缘保护页面/API/下载/SSE/WebSocket,Harness 保持仅回环监听。",
|
|
85
|
-
"category": "tools",
|
|
86
|
-
"tags": ["认证", "安全"],
|
|
87
|
-
"source": "npm",
|
|
88
|
-
"npm": "dsh-auth",
|
|
89
|
-
"github": "hxy91819/dsh-auth",
|
|
90
|
-
"homepage": "https://github.com/hxy91819/dsh-auth"
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"id": "dsh-copilot-auth",
|
|
94
|
-
"name": "DSH Copilot Auth",
|
|
95
|
-
"description": "为 DSH 内置 GitHub Copilot 提供方补上设备码(device flow)登录/注销设置页,并预置开箱即用的 Copilot 路由;凭据托管 DSH 内置凭据库,模型目录自动同步,中英双语。",
|
|
96
|
-
"category": "tools",
|
|
97
|
-
"tags": ["Copilot", "认证", "模型接入"],
|
|
98
|
-
"source": "npm",
|
|
99
|
-
"npm": "@inventec/dsh-copilot-auth",
|
|
100
|
-
"github": "iasiv5/dsh-copilot-auth",
|
|
101
|
-
"homepage": "https://github.com/iasiv5/dsh-copilot-auth"
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
"id": "dsh-m",
|
|
105
|
-
"name": "DSH Marketplace",
|
|
106
|
-
"description": "个人自用的 DeepSeek Harness 插件市场:收录、安装、卸载、升级 DSH 插件,含 Web 界面、agent 工具与 CLI。",
|
|
107
|
-
"category": "market",
|
|
108
|
-
"tags": ["市场", "插件管理"],
|
|
109
|
-
"source": "npm",
|
|
110
|
-
"npm": "dsh-m",
|
|
111
|
-
"github": "iasiv5/dsh-m",
|
|
112
|
-
"homepage": "https://github.com/iasiv5/dsh-m"
|
|
113
124
|
}
|
|
114
125
|
]
|
|
115
126
|
}
|