relay-dsh-plugin-manager 0.1.1 → 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 +8 -1
- package/README.zh.md +8 -1
- package/docs/dsh-0.1.2-alpha.2.md +34 -0
- package/lib/client.js.map +1 -1
- package/package.json +33 -29
package/README.md
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
# Manage DeepSeek Harness Plugins from Chat
|
|
2
2
|
|
|
3
|
+
> **Now supports the latest DSH `0.1.2-alpha.2`.** The same plugin release is verified on DSH `0.1.2-alpha.2` and `0.1.1-rc.2`. [Install it and try the latest DSH](https://www.npmjs.com/package/relay-dsh-plugin-manager) · [Compatibility details](docs/dsh-0.1.2-alpha.2.md).
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx @deepseek-ai/dsh@0.1.2-alpha.2 plugin --profile web add relay-dsh-plugin-manager@0.2.0
|
|
7
|
+
npx @deepseek-ai/dsh@0.1.2-alpha.2 web
|
|
8
|
+
```
|
|
9
|
+
|
|
3
10
|
[](https://www.npmjs.com/package/relay-dsh-plugin-manager)
|
|
4
11
|
[](https://github.com/yangbobo2021/relay-dsh-plugin-manager/actions/workflows/ci.yml)
|
|
5
12
|
[](https://www.npmjs.com/package/relay-dsh-plugin-manager)
|
|
6
13
|
[](https://github.com/yangbobo2021/relay-dsh-plugin-manager/stargazers)
|
|
7
14
|
[](LICENSE)
|
|
8
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
15
|
+
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
9
16
|
[](.github/workflows/release.yml)
|
|
10
17
|
|
|
11
18
|
English | [中文](README.zh.md)
|
package/README.zh.md
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
# 在 DeepSeek Harness 对话中管理插件
|
|
2
2
|
|
|
3
|
+
> **现已支持最新 DSH `0.1.2-alpha.2`。** 同一插件版本已在 DSH `0.1.2-alpha.2` 与 `0.1.1-rc.2` 上完成兼容验证。[安装插件,立即体验最新版 DSH](https://www.npmjs.com/package/relay-dsh-plugin-manager) · [兼容性详情](docs/dsh-0.1.2-alpha.2.md)。
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx @deepseek-ai/dsh@0.1.2-alpha.2 plugin --profile web add relay-dsh-plugin-manager@0.2.0
|
|
7
|
+
npx @deepseek-ai/dsh@0.1.2-alpha.2 web
|
|
8
|
+
```
|
|
9
|
+
|
|
3
10
|
[](https://www.npmjs.com/package/relay-dsh-plugin-manager)
|
|
4
11
|
[](https://github.com/yangbobo2021/relay-dsh-plugin-manager/actions/workflows/ci.yml)
|
|
5
12
|
[](https://www.npmjs.com/package/relay-dsh-plugin-manager)
|
|
6
13
|
[](https://github.com/yangbobo2021/relay-dsh-plugin-manager/stargazers)
|
|
7
14
|
[](LICENSE)
|
|
8
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
15
|
+
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
9
16
|
[](.github/workflows/release.yml)
|
|
10
17
|
|
|
11
18
|
[English](README.md) | 中文
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# DSH 双版本兼容
|
|
2
|
+
|
|
3
|
+
同一个 `0.2.0` 稳定包的兼容目标:
|
|
4
|
+
|
|
5
|
+
| DSH | 官方提交 |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| `0.1.1-rc.2` | `b150a551b8d465e31e418e1b2eaf5e79bbb7d28e` |
|
|
8
|
+
| `0.1.2-alpha.2` | `0a53fb55bea101816fa226bb964ae2bed71c343b` |
|
|
9
|
+
|
|
10
|
+
不按 DSH 版本分别发包;不要求旧用户先升级管理器。没有自定义精确版本白名单。
|
|
11
|
+
DSH 可选 peer 使用版本范围表达声明,不把它当成旧宿主必然执行的安装拦截。
|
|
12
|
+
稳定版通过 npm `latest` 发布;候选版 `0.2.0-rc.1` 保留在 `next` 通道。
|
|
13
|
+
|
|
14
|
+
## 本插件变更
|
|
15
|
+
|
|
16
|
+
保留原有管理流程,不增加自定义 DSH 精确版本白名单或兼容拦截。声明覆盖两版宿主,并让受控完整生命周期脚本兼容旧版无 launch token、新版必须 token 的启动方式。
|
|
17
|
+
|
|
18
|
+
## 验收方式与边界
|
|
19
|
+
|
|
20
|
+
开发类型检查及构建使用准备好的官方 `0.1.2-alpha.2` 源码。构建一次后,将相同 tarball
|
|
21
|
+
分别安装到两版官方 DSH 的独立临时 profile,检查 Host 启动、浏览器装配、功能注册及
|
|
22
|
+
适用的受控功能;不修改官方源码或日常运行环境。
|
|
23
|
+
跨插件结果在 Relay 的 `dsh-lab/dual-compatibility-20260831/` 中记录;插件独立测试命令:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
npm ci --ignore-scripts
|
|
27
|
+
# 非管理器插件需要准备好的官方 DSH 源码;管理器使用锁定的 npm 开发依赖。
|
|
28
|
+
export DSH_ROOT=/path/to/prepared/official/deepseek-harness
|
|
29
|
+
npm run verify
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
两版核心回归不等于所有外部服务、平台或未来 DSH 版本均已验证。
|
|
33
|
+
Claude 真实识图/fork 仍暂缓;Codex Default 模式原生提问限制、Workbench 刷新后尺寸不保留
|
|
34
|
+
均不在本次兼容修复中关闭。所有公开 npm/GitHub 发布后的完整升级路径也需要发布后再验收。
|
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":[],"sources":["../src/client/MarketplaceSettingsTab.tsx","../src/client/locales.ts","../src/client/index.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react'\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { MarketplaceLocaleKey } from './locales.ts'\n\n/** Props assembled by the Settings slot renderer. */\nexport type MarketplaceSettingsTabProps =\n PropsRuntime<'settings.plugins.tab'>\n & PropsLocale<'settings.pluginMarketplace'>\n\nconst MONO = 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace'\n\nconst styles = {\n section: {\n display: 'flex',\n flexDirection: 'column',\n gap: 14,\n width: '100%',\n maxWidth: 640,\n color: 'var(--dsw-alias-label-primary)',\n },\n plugins: {\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n },\n plugin: {\n display: 'flex',\n flexDirection: 'column',\n gap: 14,\n border: '1px solid var(--dsw-alias-border-l2)',\n borderRadius: 8,\n padding: '16px 18px',\n },\n pluginHeader: {\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n },\n packageName: {\n margin: 0,\n fontFamily: MONO,\n fontSize: 15,\n lineHeight: '22px',\n fontWeight: 600,\n },\n purpose: {\n margin: 0,\n color: 'var(--dsw-alias-label-secondary)',\n fontSize: 13,\n lineHeight: '20px',\n },\n facts: {\n display: 'flex',\n flexDirection: 'column',\n gap: 6,\n margin: 0,\n padding: 0,\n listStyle: 'none',\n },\n factRow: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'baseline',\n columnGap: 12,\n rowGap: 2,\n },\n label: {\n flex: '0 0 52px',\n color: 'var(--dsw-alias-label-tertiary)',\n fontSize: 12,\n lineHeight: '20px',\n },\n value: {\n flex: '1 1 240px',\n minWidth: 0,\n overflowWrap: 'anywhere',\n color: 'var(--dsw-alias-label-secondary)',\n fontSize: 13,\n lineHeight: '20px',\n },\n installValue: {\n flex: '1 1 240px',\n minWidth: 0,\n overflowWrap: 'anywhere',\n color: 'var(--dsw-alias-label-primary)',\n fontSize: 13,\n lineHeight: '20px',\n },\n aside: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: 8,\n margin: 0,\n borderTop: '1px solid var(--dsw-alias-border-l2)',\n paddingTop: 14,\n color: 'var(--dsw-alias-label-tertiary)',\n fontSize: 13,\n lineHeight: '20px',\n },\n asideIcon: {\n flex: '0 0 auto',\n marginTop: 3,\n },\n asideLead: {\n color: 'var(--dsw-alias-label-primary)',\n fontWeight: 600,\n },\n} satisfies Record<string, CSSProperties>\n\n/** The recommended plugins, in the order the tab presents them. */\nconst recommendedKeys = [\n {\n package: 'claudePackage',\n purpose: 'claudePurpose',\n requires: 'claudeRequires',\n install: 'claudeInstall',\n verify: 'claudeVerify',\n },\n {\n package: 'codexPackage',\n purpose: 'codexPurpose',\n requires: 'codexRequires',\n install: 'codexInstall',\n verify: 'codexVerify',\n },\n] as const satisfies readonly Record<'package' | 'purpose' | 'requires' | 'install' | 'verify', MarketplaceLocaleKey>[]\n\n/** Dependency-free info glyph marking the tab's one aside. */\nfunction InfoIcon(): ReactNode {\n return (\n <svg\n style={styles.asideIcon}\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.4\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <path d=\"M8 7.2v4\" strokeLinecap=\"round\" />\n <path d=\"M8 4.9v.1\" strokeLinecap=\"round\" />\n </svg>\n )\n}\n\n/** Render one self-contained card per recommended plugin, then one aside. */\nexport function MarketplaceSettingsTab({ t }: MarketplaceSettingsTabProps): ReactNode {\n return (\n <section style={styles.section} data-plugin-marketplace-help>\n <div style={styles.plugins}>\n {recommendedKeys.map((plugin) => (\n <article style={styles.plugin} key={plugin.package} data-recommended-plugin>\n <header style={styles.pluginHeader}>\n <h4 style={styles.packageName} data-plugin-package>{t(plugin.package)}</h4>\n <p style={styles.purpose}>{t(plugin.purpose)}</p>\n </header>\n <ul style={styles.facts}>\n <li style={styles.factRow}>\n <span style={styles.label}>{t('requiresLabel')}</span>\n <span style={styles.value}>{t(plugin.requires)}</span>\n </li>\n <li style={styles.factRow}>\n <span style={styles.label}>{t('installLabel')}</span>\n <span style={styles.installValue} data-chat-prompt>{t(plugin.install)}</span>\n </li>\n <li style={styles.factRow}>\n <span style={styles.label}>{t('verifyLabel')}</span>\n <span style={styles.value}>{t(plugin.verify)}</span>\n </li>\n </ul>\n </article>\n ))}\n </div>\n <p style={styles.aside}>\n <InfoIcon />\n <span>\n <strong style={styles.asideLead}>{t('otherLead')}</strong>\n {' '}\n {t('other')}\n </span>\n </p>\n </section>\n )\n}\n","/** Simplified Chinese dictionary and key source of truth. */\nexport const zh = {\n tab: '推荐插件',\n requiresLabel: '需要',\n installLabel: '安装',\n verifyLabel: '装好后',\n claudePackage: 'relay-dsh-plugin-claude',\n claudePurpose: '在 DSH 里使用 Claude Code',\n claudeRequires: '本机的 Claude Code 已能正常调用',\n claudeInstall: '在聊天里发送「安装 npm 包 relay-dsh-plugin-claude」',\n claudeVerify: '新建会话,在模式菜单里选 Claude Code',\n codexPackage: 'relay-dsh-plugin-codex',\n codexPurpose: '在 DSH 里使用 Codex',\n codexRequires: '本机的 Codex 已能正常调用',\n codexInstall: '在聊天里发送「安装 npm 包 relay-dsh-plugin-codex」',\n codexVerify: '新建会话,在模式菜单里选 Codex',\n otherLead: '想安装/查看/卸载其他插件?',\n other: '直接在聊天里说,比如「找一个能发送系统通知的插件」「卸载 relay-dsh-plugin-codex」。',\n} satisfies Record<string, string>\n\nexport type MarketplaceLocaleKey = keyof typeof zh\n\n/** English dictionary, mirroring every Simplified Chinese key. */\nexport const en = {\n tab: 'Recommended plugins',\n requiresLabel: 'Requires',\n installLabel: 'Install',\n verifyLabel: 'After install',\n claudePackage: 'relay-dsh-plugin-claude',\n claudePurpose: 'Use Claude Code inside DSH',\n claudeRequires: 'Claude Code already works on this machine',\n claudeInstall: 'Send “install the npm package relay-dsh-plugin-claude” in chat',\n claudeVerify: 'Start a session and pick Claude Code from the mode menu',\n codexPackage: 'relay-dsh-plugin-codex',\n codexPurpose: 'Use Codex inside DSH',\n codexRequires: 'Codex already works on this machine',\n codexInstall: 'Send “install the npm package relay-dsh-plugin-codex” in chat',\n codexVerify: 'Start a session and pick Codex from the mode menu',\n otherLead: 'Want to install, review, or remove another plugin?',\n other: 'Just say so in chat — “find a plugin that sends desktop notifications”, “remove relay-dsh-plugin-codex”.',\n} satisfies Record<MarketplaceLocaleKey, string>\n","/** Read-only recommended-plugins help registered into Web Settings. */\n\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-settings/client'\nimport { MarketplaceSettingsTab } from './MarketplaceSettingsTab.tsx'\nimport { en, zh, type MarketplaceLocaleKey } from './locales.ts'\n\nexport type { MarketplaceSettingsTabProps } from './MarketplaceSettingsTab.tsx'\nexport type { MarketplaceLocaleKey } from './locales.ts'\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface LocaleNamespaceMap {\n /** Read-only conversation help for plugin discovery and management. */\n 'settings.pluginMarketplace': MarketplaceLocaleKey\n }\n}\n\n/** Dictionary namespace owned by this plugin. */\nexport const NS = 'settings.pluginMarketplace'\n\n/** The tab needs only the Settings slot ledger and locale service. */\nexport const inject = ['slots', 'locale']\n\n/** Contribute the localized help tab to Settings > Plugins. */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'relay-plugin-manager: marketplace dictionaries')\n const t = ctx.locale.bind(NS)\n\n ctx.slots.inject('settings.plugins.tab', () => ctx.slots.register({\n name: 'settings.plugins.tab',\n id: 'marketplace',\n order: -10,\n label: () => t('tab'),\n locale: NS,\n }, MarketplaceSettingsTab))\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":[],"sources":["../src/client/MarketplaceSettingsTab.tsx","../src/client/locales.ts","../src/client/index.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react'\nimport type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { MarketplaceLocaleKey } from './locales.ts'\n\n/** Props assembled by the Settings slot renderer. */\nexport type MarketplaceSettingsTabProps =\n PropsRuntime<'settings.plugins.tab'>\n & PropsLocale<'settings.pluginMarketplace'>\n\nconst MONO = 'ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, monospace'\n\nconst styles = {\n section: {\n display: 'flex',\n flexDirection: 'column',\n gap: 14,\n width: '100%',\n maxWidth: 640,\n color: 'var(--dsw-alias-label-primary)',\n },\n plugins: {\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n },\n plugin: {\n display: 'flex',\n flexDirection: 'column',\n gap: 14,\n border: '1px solid var(--dsw-alias-border-l2)',\n borderRadius: 8,\n padding: '16px 18px',\n },\n pluginHeader: {\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n },\n packageName: {\n margin: 0,\n fontFamily: MONO,\n fontSize: 15,\n lineHeight: '22px',\n fontWeight: 600,\n },\n purpose: {\n margin: 0,\n color: 'var(--dsw-alias-label-secondary)',\n fontSize: 13,\n lineHeight: '20px',\n },\n facts: {\n display: 'flex',\n flexDirection: 'column',\n gap: 6,\n margin: 0,\n padding: 0,\n listStyle: 'none',\n },\n factRow: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'baseline',\n columnGap: 12,\n rowGap: 2,\n },\n label: {\n flex: '0 0 52px',\n color: 'var(--dsw-alias-label-tertiary)',\n fontSize: 12,\n lineHeight: '20px',\n },\n value: {\n flex: '1 1 240px',\n minWidth: 0,\n overflowWrap: 'anywhere',\n color: 'var(--dsw-alias-label-secondary)',\n fontSize: 13,\n lineHeight: '20px',\n },\n installValue: {\n flex: '1 1 240px',\n minWidth: 0,\n overflowWrap: 'anywhere',\n color: 'var(--dsw-alias-label-primary)',\n fontSize: 13,\n lineHeight: '20px',\n },\n aside: {\n display: 'flex',\n alignItems: 'flex-start',\n gap: 8,\n margin: 0,\n borderTop: '1px solid var(--dsw-alias-border-l2)',\n paddingTop: 14,\n color: 'var(--dsw-alias-label-tertiary)',\n fontSize: 13,\n lineHeight: '20px',\n },\n asideIcon: {\n flex: '0 0 auto',\n marginTop: 3,\n },\n asideLead: {\n color: 'var(--dsw-alias-label-primary)',\n fontWeight: 600,\n },\n} satisfies Record<string, CSSProperties>\n\n/** The recommended plugins, in the order the tab presents them. */\nconst recommendedKeys = [\n {\n package: 'claudePackage',\n purpose: 'claudePurpose',\n requires: 'claudeRequires',\n install: 'claudeInstall',\n verify: 'claudeVerify',\n },\n {\n package: 'codexPackage',\n purpose: 'codexPurpose',\n requires: 'codexRequires',\n install: 'codexInstall',\n verify: 'codexVerify',\n },\n] as const satisfies readonly Record<'package' | 'purpose' | 'requires' | 'install' | 'verify', MarketplaceLocaleKey>[]\n\n/** Dependency-free info glyph marking the tab's one aside. */\nfunction InfoIcon(): ReactNode {\n return (\n <svg\n style={styles.asideIcon}\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.4\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" />\n <path d=\"M8 7.2v4\" strokeLinecap=\"round\" />\n <path d=\"M8 4.9v.1\" strokeLinecap=\"round\" />\n </svg>\n )\n}\n\n/** Render one self-contained card per recommended plugin, then one aside. */\nexport function MarketplaceSettingsTab({ t }: MarketplaceSettingsTabProps): ReactNode {\n return (\n <section style={styles.section} data-plugin-marketplace-help>\n <div style={styles.plugins}>\n {recommendedKeys.map((plugin) => (\n <article style={styles.plugin} key={plugin.package} data-recommended-plugin>\n <header style={styles.pluginHeader}>\n <h4 style={styles.packageName} data-plugin-package>{t(plugin.package)}</h4>\n <p style={styles.purpose}>{t(plugin.purpose)}</p>\n </header>\n <ul style={styles.facts}>\n <li style={styles.factRow}>\n <span style={styles.label}>{t('requiresLabel')}</span>\n <span style={styles.value}>{t(plugin.requires)}</span>\n </li>\n <li style={styles.factRow}>\n <span style={styles.label}>{t('installLabel')}</span>\n <span style={styles.installValue} data-chat-prompt>{t(plugin.install)}</span>\n </li>\n <li style={styles.factRow}>\n <span style={styles.label}>{t('verifyLabel')}</span>\n <span style={styles.value}>{t(plugin.verify)}</span>\n </li>\n </ul>\n </article>\n ))}\n </div>\n <p style={styles.aside}>\n <InfoIcon />\n <span>\n <strong style={styles.asideLead}>{t('otherLead')}</strong>\n {' '}\n {t('other')}\n </span>\n </p>\n </section>\n )\n}\n","/** Simplified Chinese dictionary and key source of truth. */\nexport const zh = {\n tab: '推荐插件',\n requiresLabel: '需要',\n installLabel: '安装',\n verifyLabel: '装好后',\n claudePackage: 'relay-dsh-plugin-claude',\n claudePurpose: '在 DSH 里使用 Claude Code',\n claudeRequires: '本机的 Claude Code 已能正常调用',\n claudeInstall: '在聊天里发送「安装 npm 包 relay-dsh-plugin-claude」',\n claudeVerify: '新建会话,在模式菜单里选 Claude Code',\n codexPackage: 'relay-dsh-plugin-codex',\n codexPurpose: '在 DSH 里使用 Codex',\n codexRequires: '本机的 Codex 已能正常调用',\n codexInstall: '在聊天里发送「安装 npm 包 relay-dsh-plugin-codex」',\n codexVerify: '新建会话,在模式菜单里选 Codex',\n otherLead: '想安装/查看/卸载其他插件?',\n other: '直接在聊天里说,比如「找一个能发送系统通知的插件」「卸载 relay-dsh-plugin-codex」。',\n} satisfies Record<string, string>\n\nexport type MarketplaceLocaleKey = keyof typeof zh\n\n/** English dictionary, mirroring every Simplified Chinese key. */\nexport const en = {\n tab: 'Recommended plugins',\n requiresLabel: 'Requires',\n installLabel: 'Install',\n verifyLabel: 'After install',\n claudePackage: 'relay-dsh-plugin-claude',\n claudePurpose: 'Use Claude Code inside DSH',\n claudeRequires: 'Claude Code already works on this machine',\n claudeInstall: 'Send “install the npm package relay-dsh-plugin-claude” in chat',\n claudeVerify: 'Start a session and pick Claude Code from the mode menu',\n codexPackage: 'relay-dsh-plugin-codex',\n codexPurpose: 'Use Codex inside DSH',\n codexRequires: 'Codex already works on this machine',\n codexInstall: 'Send “install the npm package relay-dsh-plugin-codex” in chat',\n codexVerify: 'Start a session and pick Codex from the mode menu',\n otherLead: 'Want to install, review, or remove another plugin?',\n other: 'Just say so in chat — “find a plugin that sends desktop notifications”, “remove relay-dsh-plugin-codex”.',\n} satisfies Record<MarketplaceLocaleKey, string>\n","/** Read-only recommended-plugins help registered into Web Settings. */\n\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-ui-settings/client'\nimport { MarketplaceSettingsTab } from './MarketplaceSettingsTab.tsx'\nimport { en, zh, type MarketplaceLocaleKey } from './locales.ts'\n\nexport type { MarketplaceSettingsTabProps } from './MarketplaceSettingsTab.tsx'\nexport type { MarketplaceLocaleKey } from './locales.ts'\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface LocaleNamespaceMap {\n /** Read-only conversation help for plugin discovery and management. */\n 'settings.pluginMarketplace': MarketplaceLocaleKey\n }\n}\n\n/** Dictionary namespace owned by this plugin. */\nexport const NS = 'settings.pluginMarketplace'\n\n/** The tab needs only the Settings slot ledger and locale service. */\nexport const inject = ['slots', 'locale']\n\n/** Contribute the localized help tab to Settings > Plugins. */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(() => ctx.locale.register(NS, { zh, en }), 'relay-plugin-manager: marketplace dictionaries')\n const t = ctx.locale.bind(NS)\n\n ctx.slots.inject('settings.plugins.tab', () => ctx.slots.register({\n name: 'settings.plugins.tab',\n id: 'marketplace',\n order: -10,\n label: () => t('tab'),\n locale: NS,\n }, MarketplaceSettingsTab))\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relay-dsh-plugin-manager",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Conversation-first plugin discovery and lifecycle management for DeepSeek Harness.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"node": ">=22.13"
|
|
26
26
|
},
|
|
27
27
|
"publishConfig": {
|
|
28
|
-
"access": "public"
|
|
28
|
+
"access": "public",
|
|
29
|
+
"tag": "latest"
|
|
29
30
|
},
|
|
30
31
|
"scripts": {
|
|
31
32
|
"clean": "node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"",
|
|
@@ -35,6 +36,7 @@
|
|
|
35
36
|
"test:unit": "vitest run test/unit",
|
|
36
37
|
"test:integration": "vitest run test/integration",
|
|
37
38
|
"acceptance:live:codex": "RELAY_LIVE_PLUGIN_ACCEPTANCE=1 vitest run test/live/codex.live.test.ts --reporter=verbose",
|
|
39
|
+
"acceptance:controlled": "node --experimental-strip-types scripts/accept-controlled-lifecycle.mjs",
|
|
38
40
|
"acceptance": "node scripts/accept-local-package.mjs",
|
|
39
41
|
"release:dry-run": "npm publish --dry-run --tag next",
|
|
40
42
|
"verify": "npm run typecheck && npm test && npm run build && npm run acceptance",
|
|
@@ -71,8 +73,11 @@
|
|
|
71
73
|
"client": {
|
|
72
74
|
"inject": [
|
|
73
75
|
"@deepseek-ai/dsh-client-locale",
|
|
74
|
-
"@deepseek-ai/dsh-client-
|
|
75
|
-
"@deepseek-ai/dsh-client-ui-
|
|
76
|
+
"@deepseek-ai/dsh-client-ui-settings",
|
|
77
|
+
"@deepseek-ai/dsh-client-ui-renderer",
|
|
78
|
+
"@deepseek-ai/dsh-client-ui-session",
|
|
79
|
+
"@deepseek-ai/dsh-api-session-controller",
|
|
80
|
+
"@deepseek-ai/dsh-api-workspace-controller"
|
|
76
81
|
],
|
|
77
82
|
"platform": "web"
|
|
78
83
|
}
|
|
@@ -84,14 +89,13 @@
|
|
|
84
89
|
"@deepseek-ai/cordis": ">=4.0.1 <5",
|
|
85
90
|
"@deepseek-ai/cordis-plugin-include": ">=1.0.6 <2",
|
|
86
91
|
"@deepseek-ai/cordis-plugin-loader": ">=1.0.2 <2",
|
|
87
|
-
"@deepseek-ai/dsh-agent": ">=0.1.
|
|
88
|
-
"@deepseek-ai/dsh-client-locale": ">=0.1.1-rc.2 <0.2.0",
|
|
89
|
-
"@deepseek-ai/dsh-client-
|
|
90
|
-
"@deepseek-ai/dsh-
|
|
91
|
-
"@deepseek-ai/dsh-
|
|
92
|
-
"@deepseek-ai/dsh-
|
|
93
|
-
"@deepseek-ai/dsh-
|
|
94
|
-
"@deepseek-ai/dsh-user-questions": ">=0.1.1-rc.2 <0.2.0"
|
|
92
|
+
"@deepseek-ai/dsh-agent": ">=0.1.1-rc.2 <0.1.2-0 || >=0.1.2-alpha.2 <0.1.3-0",
|
|
93
|
+
"@deepseek-ai/dsh-client-locale": ">=0.1.1-rc.2 <0.1.2-0 || >=0.1.2-alpha.2 <0.1.3-0",
|
|
94
|
+
"@deepseek-ai/dsh-client-ui-settings": ">=0.1.1-rc.2 <0.1.2-0 || >=0.1.2-alpha.2 <0.1.3-0",
|
|
95
|
+
"@deepseek-ai/dsh-commands": ">=0.1.1-rc.2 <0.1.2-0 || >=0.1.2-alpha.2 <0.1.3-0",
|
|
96
|
+
"@deepseek-ai/dsh-llm": ">=0.1.1-rc.2 <0.1.2-0 || >=0.1.2-alpha.2 <0.1.3-0",
|
|
97
|
+
"@deepseek-ai/dsh-tools": ">=0.1.1-rc.2 <0.1.2-0 || >=0.1.2-alpha.2 <0.1.3-0",
|
|
98
|
+
"@deepseek-ai/dsh-user-questions": ">=0.1.1-rc.2 <0.1.2-0 || >=0.1.2-alpha.2 <0.1.3-0"
|
|
95
99
|
},
|
|
96
100
|
"peerDependenciesMeta": {
|
|
97
101
|
"@deepseek-ai/cordis": {
|
|
@@ -121,27 +125,23 @@
|
|
|
121
125
|
"@deepseek-ai/dsh-client-locale": {
|
|
122
126
|
"optional": true
|
|
123
127
|
},
|
|
124
|
-
"@deepseek-ai/dsh-client-runtime": {
|
|
125
|
-
"optional": true
|
|
126
|
-
},
|
|
127
128
|
"@deepseek-ai/dsh-client-ui-settings": {
|
|
128
129
|
"optional": true
|
|
129
130
|
}
|
|
130
131
|
},
|
|
131
132
|
"devDependencies": {
|
|
132
|
-
"@deepseek-ai/cordis": "4.0.
|
|
133
|
-
"@deepseek-ai/cordis-plugin-include": "1.0.
|
|
134
|
-
"@deepseek-ai/cordis-plugin-loader": "1.0.
|
|
135
|
-
"@deepseek-ai/dsh-agent": "0.1.
|
|
136
|
-
"@deepseek-ai/dsh-client-locale": "0.1.
|
|
137
|
-
"@deepseek-ai/dsh-client-
|
|
138
|
-
"@deepseek-ai/dsh-client-ui-
|
|
139
|
-
"@deepseek-ai/dsh-
|
|
140
|
-
"@deepseek-ai/dsh-
|
|
141
|
-
"@deepseek-ai/dsh-
|
|
142
|
-
"@deepseek-ai/dsh-
|
|
143
|
-
"@deepseek-ai/dsh-
|
|
144
|
-
"@deepseek-ai/dsh-user-questions": "0.1.1-rc.2",
|
|
133
|
+
"@deepseek-ai/cordis": "4.0.2",
|
|
134
|
+
"@deepseek-ai/cordis-plugin-include": "1.0.7",
|
|
135
|
+
"@deepseek-ai/cordis-plugin-loader": "1.0.3",
|
|
136
|
+
"@deepseek-ai/dsh-agent": "0.1.2-alpha.2",
|
|
137
|
+
"@deepseek-ai/dsh-client-locale": "0.1.2-alpha.2",
|
|
138
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-alpha.2",
|
|
139
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.2-alpha.2",
|
|
140
|
+
"@deepseek-ai/dsh-commands": "0.1.2-alpha.2",
|
|
141
|
+
"@deepseek-ai/dsh-llm": "0.1.2-alpha.2",
|
|
142
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.2-alpha.2",
|
|
143
|
+
"@deepseek-ai/dsh-tools": "0.1.2-alpha.2",
|
|
144
|
+
"@deepseek-ai/dsh-user-questions": "0.1.2-alpha.2",
|
|
145
145
|
"@types/node": "^24.0.0",
|
|
146
146
|
"@types/react": "~18.3.1",
|
|
147
147
|
"@types/react-dom": "~18.3.0",
|
|
@@ -149,6 +149,10 @@
|
|
|
149
149
|
"react-dom": "^18.2.0",
|
|
150
150
|
"tsdown": "0.22.2",
|
|
151
151
|
"typescript": "6.0.3",
|
|
152
|
-
"vitest": "^4.0.0"
|
|
152
|
+
"vitest": "^4.0.0",
|
|
153
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.2-alpha.2",
|
|
154
|
+
"@deepseek-ai/dsh-client-ui-session": "0.1.2-alpha.2",
|
|
155
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.2-alpha.2",
|
|
156
|
+
"@deepseek-ai/dsh-api-workspace-controller": "0.1.2-alpha.2"
|
|
153
157
|
}
|
|
154
158
|
}
|