relay-dsh-plugin-session-import 0.1.0 → 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 CHANGED
@@ -1,5 +1,16 @@
1
1
  # Relay DSH Session Import
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-session-import) · [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-session-import@0.2.0 relay-dsh-plugin-codex@0.2.0
7
+ npx @deepseek-ai/dsh@0.1.2-alpha.2 web
8
+ ```
9
+
10
+ [![DSH compatibility](https://img.shields.io/badge/DSH-0.1.1--rc.2%20%7C%200.1.2--alpha.2-2f7d68)](https://github.com/deepseek-ai/deepseek-harness)
11
+
12
+ English | [中文](README.zh.md)
13
+
3
14
  Provider-neutral session import hub for DeepSeek Harness. It contributes one
4
15
  sidebar action and a typed provider slot; import implementations stay in their
5
16
  provider plugins.
package/README.zh.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Relay DSH 会话导入中心
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-session-import) · [兼容性详情](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-session-import@0.2.0 relay-dsh-plugin-codex@0.2.0
7
+ npx @deepseek-ai/dsh@0.1.2-alpha.2 web
8
+ ```
9
+
10
+ [![DSH 兼容版本](https://img.shields.io/badge/DSH-0.1.1--rc.2%20%7C%200.1.2--alpha.2-2f7d68)](https://github.com/deepseek-ai/deepseek-harness)
11
+
12
+ [English](README.md) | 中文
13
+
3
14
  面向 DeepSeek Harness 的中立会话导入入口。它只提供一个侧栏入口和类型化
4
15
  Provider 插槽,Codex、Claude 等插件继续拥有各自的扫描与导入流程。
5
16
 
@@ -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
+ 保留原有共享导入契约;作为两种后端共同使用的同一个候选依赖,参与双版安装和前端注册验收。
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":["Menu","css","Tooltip","IconDownloadOutline16"],"sources":["../src/client/SessionImportHub.tsx","../src/client/locales.ts","../src/client/index.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState, type ReactNode } from 'react'\nimport {\n IconDownloadOutline16,\n Menu,\n Tooltip,\n type MenuItem,\n} from '@deepseek-ai/dsh-client-ui-primitives'\nimport type {\n PropsLocale,\n PropsRenderSlots,\n} from '@deepseek-ai/dsh-client-ui-slots'\nimport type { SidebarFooterActionOwnerProps } from '@deepseek-ai/dsh-client-ui-sidebar/client'\nimport type {\n SessionImportProviderDescriptor,\n SessionImportProviderOwnerProps,\n} from '../contracts.ts'\nimport type { SessionImportLocaleKey } from './locales.ts'\nimport css from './SessionImportHub.module.css'\n\ninterface RegisteredProvider extends SessionImportProviderDescriptor {\n token: symbol\n}\n\ntype Props = SidebarFooterActionOwnerProps\n & PropsRenderSlots<'relay.session-import.provider'>\n & PropsLocale<'relay.session-import'>\n\n/** One provider-neutral footer action backed by provider-owned import flows. */\nexport function SessionImportHub({ wide, renderSlot, t }: Props): ReactNode {\n const records = useRef(new Map<symbol, RegisteredProvider>())\n const [providers, setProviders] = useState<readonly RegisteredProvider[]>([])\n const [open, setOpen] = useState(false)\n\n const publish = useCallback(() => {\n setProviders([...records.current.values()].sort((left, right) =>\n (left.order ?? 0) - (right.order ?? 0) || left.id.localeCompare(right.id)))\n }, [])\n\n const registerProvider = useCallback<SessionImportProviderOwnerProps['registerProvider']>((provider) => {\n if ([...records.current.values()].some(record => record.id === provider.id)) {\n throw new Error(`session import provider \"${provider.id}\" is already registered`)\n }\n const token = Symbol(provider.id)\n records.current.set(token, { ...provider, token })\n publish()\n return () => {\n if (!records.current.delete(token)) return\n publish()\n }\n }, [publish])\n\n useEffect(() => {\n if (providers.length === 0) setOpen(false)\n }, [providers.length])\n\n const items: readonly MenuItem[] = providers.map(provider => ({\n id: provider.id,\n label: provider.label,\n icon: provider.icon,\n }))\n\n return (\n <>\n {renderSlot('relay.session-import.provider', { registerProvider })}\n {providers.length > 0 && (\n <Menu\n className={wide ? css.menuRoot : `${css.menuRoot} ${css.menuRootRail}`}\n open={open}\n onClose={() => { setOpen(false) }}\n items={items}\n onSelect={(id) => {\n const provider = providers.find(candidate => candidate.id === id)\n if (provider === undefined) return\n setOpen(false)\n provider.open()\n }}\n side={wide ? 'top' : 'right'}\n portal\n anchor={(\n <Tooltip label={t('importSessions')} side=\"top\" delayMs={500} disabled={wide}>\n <button\n type=\"button\"\n className={wide ? css.trigger : `${css.trigger} ${css.triggerRail}`}\n aria-label={t('importSessions')}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n data-session-import-hub=\"true\"\n onClick={() => { setOpen(value => !value) }}\n >\n <IconDownloadOutline16 size={wide ? 16 : 18} />\n {wide && <span className={css.label}>{t('importSessions')}</span>}\n </button>\n </Tooltip>\n )}\n />\n )}\n </>\n )\n}\n\nexport type { SessionImportLocaleKey }\n","export const en = {\n importSessions: 'Import sessions...',\n} as const\n\nexport const zh = {\n importSessions: '导入会话...',\n} satisfies Record<keyof typeof en, string>\n\nexport type SessionImportLocaleKey = keyof typeof en\n","import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport type { SidebarFooterActionOwnerProps } from '@deepseek-ai/dsh-client-ui-sidebar/client'\nimport type { SessionImportProviderSlotDefinition } from '../contracts.ts'\nimport { SessionImportHub } from './SessionImportHub.tsx'\nimport { en, zh, type SessionImportLocaleKey } from './locales.ts'\n\ntype SidebarFooterContractAnchor = SidebarFooterActionOwnerProps\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface SlotMap {\n 'relay.session-import.provider': SessionImportProviderSlotDefinition\n }\n interface LocaleNamespaceMap {\n 'relay.session-import': SessionImportLocaleKey\n }\n}\n\nexport const inject = ['slots', 'locale']\n\nexport function apply(ctx: ClientContext): void {\n ctx.effect(\n () => ctx.locale.register('relay.session-import', { zh, en }),\n 'relay-session-import: dictionaries',\n )\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({\n name: 'sidebar.footer.action',\n id: 'relay-session-import-hub',\n order: -10,\n children: {\n 'relay.session-import.provider': { kind: 'list', scope: 'root' },\n },\n locale: 'relay.session-import',\n }, SessionImportHub))\n}\n\nexport type {\n SessionImportProviderDescriptor,\n SessionImportProviderOwnerProps,\n SessionImportProviderSlotDefinition,\n} from '../contracts.ts'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BA,SAAgB,iBAAiB,EAAE,MAAM,YAAY,KAAuB;GAC1E,MAAM,WAAA,GAAA,MAAA,OAAA,iBAAiB,IAAI,IAAgC,CAAC;GAC5D,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,SAAA,CAAwD,CAAC,CAAC;GAC5E,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,SAAA,CAAoB,KAAK;GAEtC,MAAM,WAAA,GAAA,MAAA,YAAA,OAA4B;IAChC,aAAa,CAAC,GAAG,QAAQ,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,WACpD,KAAK,SAAS,MAAM,MAAM,SAAS,MAAM,KAAK,GAAG,cAAc,MAAM,EAAE,CAAC,CAAC;GAC9E,GAAG,CAAC,CAAC;GAEL,MAAM,oBAAA,GAAA,MAAA,YAAA,EAAqF,aAAa;IACtG,IAAI,CAAC,GAAG,QAAQ,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAK,WAAU,OAAO,OAAO,SAAS,EAAE,GACxE,MAAM,IAAI,MAAM,4BAA4B,SAAS,GAAG,wBAAwB;IAElF,MAAM,QAAQ,OAAO,SAAS,EAAE;IAChC,QAAQ,QAAQ,IAAI,OAAO;KAAE,GAAG;KAAU;IAAM,CAAC;IACjD,QAAQ;IACR,aAAa;KACX,IAAI,CAAC,QAAQ,QAAQ,OAAO,KAAK,GAAG;KACpC,QAAQ;IACV;GACF,GAAG,CAAC,OAAO,CAAC;GAEZ,CAAA,GAAA,MAAA,UAAA,OAAgB;IACd,IAAI,UAAU,WAAW,GAAG,QAAQ,KAAK;GAC3C,GAAG,CAAC,UAAU,MAAM,CAAC;GAErB,MAAM,QAA6B,UAAU,KAAI,cAAa;IAC5D,IAAI,SAAS;IACb,OAAO,SAAS;IAChB,MAAM,SAAS;GACjB,EAAE;GAEF,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAA,kBAAA,UAAA,EAAA,UAAA,CACG,WAAW,iCAAiC,EAAE,iBAAiB,CAAC,GAChE,UAAU,SAAS,KAClB,iBAAA,GAAA,kBAAA,IAAA,CAACA,sCAAAA,MAAD;IACE,WAAW,OAAOC,oCAAI,WAAW,GAAGA,oCAAI,SAAS,GAAGA,oCAAI;IAClD;IACN,eAAe;KAAE,QAAQ,KAAK;IAAE;IACzB;IACP,WAAW,OAAO;KAChB,MAAM,WAAW,UAAU,MAAK,cAAa,UAAU,OAAO,EAAE;KAChE,IAAI,aAAa,KAAA,GAAW;KAC5B,QAAQ,KAAK;KACb,SAAS,KAAK;IAChB;IACA,MAAM,OAAO,QAAQ;IACrB,QAAA;IACA,QACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,sCAAAA,SAAD;KAAS,OAAO,EAAE,gBAAgB;KAAG,MAAK;KAAM,SAAS;KAAK,UAAU;eACtE,iBAAA,GAAA,kBAAA,KAAA,CAAC,UAAD;MACE,MAAK;MACL,WAAW,OAAOD,oCAAI,UAAU,GAAGA,oCAAI,QAAQ,GAAGA,oCAAI;MACtD,cAAY,EAAE,gBAAgB;MAC9B,iBAAc;MACd,iBAAe;MACf,2BAAwB;MACxB,eAAe;OAAE,SAAQ,UAAS,CAAC,KAAK;MAAE;gBAP5C,CASE,iBAAA,GAAA,kBAAA,IAAA,CAACE,sCAAAA,uBAAD,EAAuB,MAAM,OAAO,KAAK,GAAK,CAAA,GAC7C,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAWF,oCAAI;iBAAQ,EAAE,gBAAgB;MAAQ,CAAA,CAC1D;;IACD,CAAA;GAEZ,CAAA,CAEH,EAAA,CAAA;EAEN;;;EClGA,MAAa,KAAK,EAChB,gBAAgB,qBAClB;EAEA,MAAa,KAAK,EAChB,gBAAgB,UAClB;;;ECYA,MAAa,SAAS,CAAC,SAAS,QAAQ;EAExC,SAAgB,MAAM,KAA0B;GAC9C,IAAI,aACI,IAAI,OAAO,SAAS,wBAAwB;IAAE;IAAI;GAAG,CAAC,GAC5D,oCACF;GACA,IAAI,MAAM,OAAO,+BAA+B,IAAI,MAAM,SAAS;IACjE,MAAM;IACN,IAAI;IACJ,OAAO;IACP,UAAU,EACR,iCAAiC;KAAE,MAAM;KAAQ,OAAO;IAAO,EACjE;IACA,QAAQ;GACV,GAAG,gBAAgB,CAAC;EACtB"}
1
+ {"version":3,"file":"client.js","names":["Menu","css","Tooltip","IconDownloadOutline16"],"sources":["../src/client/SessionImportHub.tsx","../src/client/locales.ts","../src/client/index.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState, type ReactNode } from 'react'\nimport {\n IconDownloadOutline16,\n Menu,\n Tooltip,\n type MenuItem,\n} from '@deepseek-ai/dsh-client-ui-primitives'\nimport type {\n PropsLocale,\n PropsRenderSlots,\n} from '@deepseek-ai/dsh-client-ui-slots'\nimport type { SidebarFooterActionOwnerProps } from '@deepseek-ai/dsh-client-ui-sidebar/client'\nimport type {\n SessionImportProviderDescriptor,\n SessionImportProviderOwnerProps,\n} from '../contracts.ts'\nimport type { SessionImportLocaleKey } from './locales.ts'\nimport css from './SessionImportHub.module.css'\n\ninterface RegisteredProvider extends SessionImportProviderDescriptor {\n token: symbol\n}\n\ntype Props = SidebarFooterActionOwnerProps\n & PropsRenderSlots<'relay.session-import.provider'>\n & PropsLocale<'relay.session-import'>\n\n/** One provider-neutral footer action backed by provider-owned import flows. */\nexport function SessionImportHub({ wide, renderSlot, t }: Props): ReactNode {\n const records = useRef(new Map<symbol, RegisteredProvider>())\n const [providers, setProviders] = useState<readonly RegisteredProvider[]>([])\n const [open, setOpen] = useState(false)\n\n const publish = useCallback(() => {\n setProviders([...records.current.values()].sort((left, right) =>\n (left.order ?? 0) - (right.order ?? 0) || left.id.localeCompare(right.id)))\n }, [])\n\n const registerProvider = useCallback<SessionImportProviderOwnerProps['registerProvider']>((provider) => {\n if ([...records.current.values()].some(record => record.id === provider.id)) {\n throw new Error(`session import provider \"${provider.id}\" is already registered`)\n }\n const token = Symbol(provider.id)\n records.current.set(token, { ...provider, token })\n publish()\n return () => {\n if (!records.current.delete(token)) return\n publish()\n }\n }, [publish])\n\n useEffect(() => {\n if (providers.length === 0) setOpen(false)\n }, [providers.length])\n\n const items: readonly MenuItem[] = providers.map(provider => ({\n id: provider.id,\n label: provider.label,\n icon: provider.icon,\n }))\n\n return (\n <>\n {renderSlot('relay.session-import.provider', { registerProvider })}\n {providers.length > 0 && (\n <Menu\n className={wide ? css.menuRoot : `${css.menuRoot} ${css.menuRootRail}`}\n open={open}\n onClose={() => { setOpen(false) }}\n items={items}\n onSelect={(id) => {\n const provider = providers.find(candidate => candidate.id === id)\n if (provider === undefined) return\n setOpen(false)\n provider.open()\n }}\n side={wide ? 'top' : 'right'}\n portal\n anchor={(\n <Tooltip label={t('importSessions')} side=\"top\" delayMs={500} disabled={wide}>\n <button\n type=\"button\"\n className={wide ? css.trigger : `${css.trigger} ${css.triggerRail}`}\n aria-label={t('importSessions')}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n data-session-import-hub=\"true\"\n onClick={() => { setOpen(value => !value) }}\n >\n <IconDownloadOutline16 size={wide ? 16 : 18} />\n {wide && <span className={css.label}>{t('importSessions')}</span>}\n </button>\n </Tooltip>\n )}\n />\n )}\n </>\n )\n}\n\nexport type { SessionImportLocaleKey }\n","export const en = {\n importSessions: 'Import sessions...',\n} as const\n\nexport const zh = {\n importSessions: '导入会话...',\n} satisfies Record<keyof typeof en, string>\n\nexport type SessionImportLocaleKey = keyof typeof en\n","import type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport type { SidebarFooterActionOwnerProps } from '@deepseek-ai/dsh-client-ui-sidebar/client'\nimport type { SessionImportProviderSlotDefinition } from '../contracts.ts'\nimport { SessionImportHub } from './SessionImportHub.tsx'\nimport { en, zh, type SessionImportLocaleKey } from './locales.ts'\n\ntype SidebarFooterContractAnchor = SidebarFooterActionOwnerProps\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface SlotMap {\n 'relay.session-import.provider': SessionImportProviderSlotDefinition\n }\n interface LocaleNamespaceMap {\n 'relay.session-import': SessionImportLocaleKey\n }\n}\n\nexport const inject = ['slots', 'locale']\n\nexport function apply(ctx: ClientContext): void {\n ctx.effect(\n () => ctx.locale.register('relay.session-import', { zh, en }),\n 'relay-session-import: dictionaries',\n )\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register({\n name: 'sidebar.footer.action',\n id: 'relay-session-import-hub',\n order: -10,\n children: {\n 'relay.session-import.provider': { kind: 'list', scope: 'root' },\n },\n locale: 'relay.session-import',\n }, SessionImportHub))\n}\n\nexport type {\n SessionImportProviderDescriptor,\n SessionImportProviderOwnerProps,\n SessionImportProviderSlotDefinition,\n} from '../contracts.ts'\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "name": "relay-dsh-plugin-session-import",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Provider-neutral session import hub for DeepSeek Harness plugins.",
5
- "keywords": ["dsh-plugin", "deepseek-harness", "dsh", "session-import"],
5
+ "keywords": [
6
+ "dsh-plugin",
7
+ "deepseek-harness",
8
+ "dsh",
9
+ "session-import"
10
+ ],
6
11
  "license": "MIT",
7
12
  "type": "module",
8
13
  "main": "lib/host-plugin.js",
@@ -14,8 +19,13 @@
14
19
  "bugs": {
15
20
  "url": "https://github.com/yangbobo2021/relay-dsh-plugin-session-import/issues"
16
21
  },
17
- "engines": { "node": ">=22.13" },
18
- "publishConfig": { "access": "public" },
22
+ "engines": {
23
+ "node": ">=22.13"
24
+ },
25
+ "publishConfig": {
26
+ "access": "public",
27
+ "tag": "latest"
28
+ },
19
29
  "scripts": {
20
30
  "prepare:dsh": "bash scripts/link-dsh-development-peers.sh",
21
31
  "prebuild": "npm run prepare:dsh && node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"",
@@ -48,26 +58,34 @@
48
58
  "lib/contracts.js.map",
49
59
  "lib/contracts.d.ts",
50
60
  "lib/host-plugin.js",
51
- "lib/host-plugin.js.map"
61
+ "lib/host-plugin.js.map",
62
+ "docs/dsh-0.1.2-alpha.2.md"
52
63
  ],
53
64
  "dsh": {
54
65
  "client": {
55
66
  "inject": [
56
67
  "@deepseek-ai/dsh-client-locale",
57
- "@deepseek-ai/dsh-client-runtime",
58
68
  "@deepseek-ai/dsh-client-ui-primitives",
59
69
  "@deepseek-ai/dsh-client-ui-sidebar",
60
- "@deepseek-ai/dsh-client-ui-slots"
70
+ "@deepseek-ai/dsh-client-ui-slots",
71
+ "@deepseek-ai/dsh-client-ui-renderer",
72
+ "@deepseek-ai/dsh-client-ui-session",
73
+ "@deepseek-ai/dsh-api-session-controller",
74
+ "@deepseek-ai/dsh-api-workspace-controller"
61
75
  ],
62
76
  "platform": "web"
63
77
  },
64
- "bundle": { "patch": "./cordis.patch.yml" }
78
+ "bundle": {
79
+ "patch": "./cordis.patch.yml"
80
+ }
65
81
  },
66
82
  "peerDependencies": {
67
83
  "react": "^18.2.0"
68
84
  },
69
85
  "peerDependenciesMeta": {
70
- "react": { "optional": true }
86
+ "react": {
87
+ "optional": true
88
+ }
71
89
  },
72
90
  "devDependencies": {
73
91
  "@testing-library/react": "^16.3.2",