dsh-plugin-shop 0.4.11 → 0.4.13
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 +3 -3
- package/lib/client.js +23 -21
- package/lib/types/client/locales.d.ts +2 -4
- package/lib/types/client/present.d.ts +7 -4
- package/lib/types/host/index.d.ts +4 -2
- package/package.json +9 -8
package/README.md
CHANGED
|
@@ -52,9 +52,9 @@ install them once with `npm install -g @deepseek-ai/dsh pnpm` and verify with
|
|
|
52
52
|
# holds back very recent releases, so a bare `add dsh-plugin-shop` can hand
|
|
53
53
|
# you an older version for a while. Pin the current release — refresh it
|
|
54
54
|
# with `npm view dsh-plugin-shop version`.
|
|
55
|
-
dsh plugin --profile web add dsh-plugin-shop@0.4.
|
|
55
|
+
dsh plugin --profile web add dsh-plugin-shop@0.4.13
|
|
56
56
|
# or straight through npx, nothing installed:
|
|
57
|
-
npx -y @deepseek-ai/dsh plugin --profile web add dsh-plugin-shop@0.4.
|
|
57
|
+
npx -y @deepseek-ai/dsh plugin --profile web add dsh-plugin-shop@0.4.13
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
Replace `web` with your profile if you use another one. Then restart `dsh` once — a
|
|
@@ -84,7 +84,7 @@ ls -1 "${DSH_HOME:-$HOME/.dsh}/profiles" | grep -v '^node_modules$'
|
|
|
84
84
|
cooldown, and deterministic installs are the point of the agent path.
|
|
85
85
|
|
|
86
86
|
```sh
|
|
87
|
-
dsh plugin --profile <profile> add dsh-plugin-shop@0.4.
|
|
87
|
+
dsh plugin --profile <profile> add dsh-plugin-shop@0.4.13
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
**3. Verify — do not skip this.** A zero exit from step 2 means pnpm resolved the
|
package/lib/client.js
CHANGED
|
@@ -4641,6 +4641,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4641
4641
|
function displayVersion(entry) {
|
|
4642
4642
|
return entry.source === "github" ? entry.version.slice(0, 7) : entry.version;
|
|
4643
4643
|
}
|
|
4644
|
+
/**
|
|
4645
|
+
* Whether the license value is the npm idiom `SEE LICENSE IN <file>` — a
|
|
4646
|
+
* valid SPDX form meaning "custom license, text ships in that file". The
|
|
4647
|
+
* catalog keeps the author's verbatim value; the shelf renders it as a
|
|
4648
|
+
* localized "Custom license" label. Everything else renders verbatim.
|
|
4649
|
+
*/
|
|
4650
|
+
function isCustomLicense(license) {
|
|
4651
|
+
return license !== null && /^SEE LICENSE IN /i.test(license);
|
|
4652
|
+
}
|
|
4644
4653
|
/** §7.2 once-per-second poll cadence, as a named constant. */
|
|
4645
4654
|
const INSTALL_POLL_MS = 1e3;
|
|
4646
4655
|
/** How long the check-update button reports "up to date" after a re-check
|
|
@@ -4817,9 +4826,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4817
4826
|
refresh: "刷新",
|
|
4818
4827
|
staleLabel: "显示 {date} 的快照",
|
|
4819
4828
|
showing: "显示前 {shown} 个(共 {total})· 继续滚动加载",
|
|
4820
|
-
version: "版本",
|
|
4821
4829
|
repository: "仓库",
|
|
4822
4830
|
license: "许可",
|
|
4831
|
+
customLicense: "自定义许可",
|
|
4823
4832
|
reviewedVersionLine: "已审核 v{reviewed} / 当前 v{current} 未审核",
|
|
4824
4833
|
deniedCode: "已拒绝",
|
|
4825
4834
|
notInCatalogCode: "不在目录中",
|
|
@@ -4889,9 +4898,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4889
4898
|
refresh: "Refresh",
|
|
4890
4899
|
staleLabel: "showing {date}",
|
|
4891
4900
|
showing: "showing first {shown} of {total} — scroll to load more",
|
|
4892
|
-
version: "Version",
|
|
4893
4901
|
repository: "Repository",
|
|
4894
4902
|
license: "License",
|
|
4903
|
+
customLicense: "Custom license",
|
|
4895
4904
|
reviewedVersionLine: "reviewed v{reviewed} / current v{current} unreviewed",
|
|
4896
4905
|
deniedCode: "Denied",
|
|
4897
4906
|
notInCatalogCode: "Not in the catalog",
|
|
@@ -5289,25 +5298,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
5289
5298
|
className: _dsh_plugin_shop_css_e3675a89_default.detail,
|
|
5290
5299
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("dl", {
|
|
5291
5300
|
className: _dsh_plugin_shop_css_e3675a89_default.detailRows,
|
|
5292
|
-
children: [
|
|
5293
|
-
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
}) : entry.repository })]
|
|
5305
|
-
}),
|
|
5306
|
-
entry.license !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
5307
|
-
className: _dsh_plugin_shop_css_e3675a89_default.detailRow,
|
|
5308
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("license") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", { children: entry.license })]
|
|
5309
|
-
})
|
|
5310
|
-
]
|
|
5301
|
+
children: [entry.repository !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
5302
|
+
className: _dsh_plugin_shop_css_e3675a89_default.detailRow,
|
|
5303
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("repository") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", { children: /^https?:\/\//.test(entry.repository) ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
|
|
5304
|
+
href: entry.repository,
|
|
5305
|
+
target: "_blank",
|
|
5306
|
+
rel: "noopener noreferrer",
|
|
5307
|
+
children: entry.repository
|
|
5308
|
+
}) : entry.repository })]
|
|
5309
|
+
}), entry.license !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
5310
|
+
className: _dsh_plugin_shop_css_e3675a89_default.detailRow,
|
|
5311
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("license") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", { children: isCustomLicense(entry.license) ? t("customLicense") : entry.license })]
|
|
5312
|
+
})]
|
|
5311
5313
|
}), entry.tier === "verified-stale" && entry.review !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
5312
5314
|
className: _dsh_plugin_shop_css_e3675a89_default.reviewedLine,
|
|
5313
5315
|
children: t("reviewedVersionLine", {
|
|
@@ -21,7 +21,6 @@ export declare const zh: {
|
|
|
21
21
|
tierVerified: string;
|
|
22
22
|
tierVerifiedStale: string;
|
|
23
23
|
tierCommunity: string;
|
|
24
|
-
unclaimed: string;
|
|
25
24
|
capabilitiesNote: string;
|
|
26
25
|
install: string;
|
|
27
26
|
confirm: string;
|
|
@@ -36,9 +35,9 @@ export declare const zh: {
|
|
|
36
35
|
refresh: string;
|
|
37
36
|
staleLabel: string;
|
|
38
37
|
showing: string;
|
|
39
|
-
version: string;
|
|
40
38
|
repository: string;
|
|
41
39
|
license: string;
|
|
40
|
+
customLicense: string;
|
|
42
41
|
reviewedVersionLine: string;
|
|
43
42
|
deniedCode: string;
|
|
44
43
|
notInCatalogCode: string;
|
|
@@ -96,7 +95,6 @@ export declare const en: {
|
|
|
96
95
|
tierVerified: string;
|
|
97
96
|
tierVerifiedStale: string;
|
|
98
97
|
tierCommunity: string;
|
|
99
|
-
unclaimed: string;
|
|
100
98
|
capabilitiesNote: string;
|
|
101
99
|
install: string;
|
|
102
100
|
confirm: string;
|
|
@@ -111,9 +109,9 @@ export declare const en: {
|
|
|
111
109
|
refresh: string;
|
|
112
110
|
staleLabel: string;
|
|
113
111
|
showing: string;
|
|
114
|
-
version: string;
|
|
115
112
|
repository: string;
|
|
116
113
|
license: string;
|
|
114
|
+
customLicense: string;
|
|
117
115
|
reviewedVersionLine: string;
|
|
118
116
|
deniedCode: string;
|
|
119
117
|
notInCatalogCode: string;
|
|
@@ -5,10 +5,6 @@ import type { ShopLocaleKey } from './locales.ts';
|
|
|
5
5
|
import type { CatalogEntry, InstallRejectionCode } from '../host/index.ts';
|
|
6
6
|
/** Tier → locale key, for the entry-card tier badge (§6.2). */
|
|
7
7
|
export declare function tierKey(tier: CatalogEntry['tier']): ShopLocaleKey;
|
|
8
|
-
/** A derived listing has no author-declared catalog section; the shop
|
|
9
|
-
* presents it as unclaimed, which is the signal that prompts an author to add
|
|
10
|
-
* one (§6.1). Never present a derived entry as though the author wrote it. */
|
|
11
|
-
export declare function isUnclaimed(entry: CatalogEntry): boolean;
|
|
12
8
|
/** Spec §9.3 verbatim — the community-tier acknowledgement. The zh dictionary
|
|
13
9
|
* states the same facts in its own register; never soften this wording. */
|
|
14
10
|
export declare const ACKNOWLEDGEMENT_EN = "Once installed, this plugin holds the same privileges as a built-in one: reading and writing your files, running shell commands, and reading and modifying the requests sent to the model. It has not been reviewed.";
|
|
@@ -22,6 +18,13 @@ export declare function displayVersion(entry: {
|
|
|
22
18
|
source: 'npm' | 'github';
|
|
23
19
|
version: string;
|
|
24
20
|
}): string;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the license value is the npm idiom `SEE LICENSE IN <file>` — a
|
|
23
|
+
* valid SPDX form meaning "custom license, text ships in that file". The
|
|
24
|
+
* catalog keeps the author's verbatim value; the shelf renders it as a
|
|
25
|
+
* localized "Custom license" label. Everything else renders verbatim.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isCustomLicense(license: string | null): boolean;
|
|
25
28
|
/** One polled install status (§7.3 wire data), structural. */
|
|
26
29
|
export interface InstallStatusShape {
|
|
27
30
|
found: boolean;
|
|
@@ -105,8 +105,10 @@ export type ShopUpdateResult = {
|
|
|
105
105
|
};
|
|
106
106
|
/** `shop/installed` entry (§7.3): one installed catalog plugin. `installed`
|
|
107
107
|
* is the profile manifest's dependency spec verbatim (a range, a tag, or
|
|
108
|
-
* `workspace:*`)
|
|
109
|
-
*
|
|
108
|
+
* `workspace:*`) — for a github entry it is the pinned commit the shop
|
|
109
|
+
* installed, falling back to the `github:owner/slug` spec when the pin is
|
|
110
|
+
* unknown; `outdated` is the Host's verdict that the installed version sits
|
|
111
|
+
* behind the catalog's — the client never does version math. */
|
|
110
112
|
export interface ShopInstalledEntry {
|
|
111
113
|
name: string;
|
|
112
114
|
installed: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-shop",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.13",
|
|
4
4
|
"description": "The DeepSeek Harness plugin shop: browse, install, enable, and update dsh plugins from a git-auditable catalog.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -61,6 +61,12 @@
|
|
|
61
61
|
"platform": "web"
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"prepublishOnly": "pnpm build",
|
|
66
|
+
"build": "node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\" && tsdown && tsc && tsdown -c tsdown.client.config.ts",
|
|
67
|
+
"test": "tsdown && tsdown -c tsdown.client.config.ts && vitest run",
|
|
68
|
+
"typecheck": "tsdown && tsc --noEmit && tsc -p tsconfig.test.json"
|
|
69
|
+
},
|
|
64
70
|
"dependencies": {
|
|
65
71
|
"js-yaml": "^4.2.0",
|
|
66
72
|
"semver": "^7.6.3",
|
|
@@ -97,7 +103,7 @@
|
|
|
97
103
|
"@deepseek-ai/dsh-client-ui-slots": "^0.1.1-rc.2",
|
|
98
104
|
"@deepseek-ai/dsh-home-paths": "^0.1.1-rc.2",
|
|
99
105
|
"@deepseek-ai/dsh-typert-generator": "^0.1.1-rc.2",
|
|
100
|
-
"@deepseek-ai/dsh-typert-protocol": "
|
|
106
|
+
"@deepseek-ai/dsh-typert-protocol": "workspace:^0.1.1-rc.2",
|
|
101
107
|
"@testing-library/react": "^16.1.0",
|
|
102
108
|
"@types/js-yaml": "^4.0.9",
|
|
103
109
|
"@types/node": "^22.9.0",
|
|
@@ -111,10 +117,5 @@
|
|
|
111
117
|
"tsdown": "^0.22.2",
|
|
112
118
|
"typescript": "^5.6.3",
|
|
113
119
|
"vitest": "^2.1.4"
|
|
114
|
-
},
|
|
115
|
-
"scripts": {
|
|
116
|
-
"build": "node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\" && tsdown && tsc && tsdown -c tsdown.client.config.ts",
|
|
117
|
-
"test": "tsdown && tsdown -c tsdown.client.config.ts && vitest run",
|
|
118
|
-
"typecheck": "tsdown && tsc --noEmit && tsc -p tsconfig.test.json"
|
|
119
120
|
}
|
|
120
|
-
}
|
|
121
|
+
}
|