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 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.11
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.11
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.11
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
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5294
- className: _dsh_plugin_shop_css_e3675a89_default.detailRow,
5295
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("dt", { children: t("version") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dd", { children: entry.version })]
5296
- }),
5297
- entry.repository !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5298
- className: _dsh_plugin_shop_css_e3675a89_default.detailRow,
5299
- 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", {
5300
- href: entry.repository,
5301
- target: "_blank",
5302
- rel: "noopener noreferrer",
5303
- children: entry.repository
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:*`); `outdated` is the Host's verdict that the installed version
109
- * sits behind the catalog's the client never does version math. */
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.11",
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": "^0.1.1-rc.2",
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
+ }