@ryuu-64/dsh-find-all 0.1.1 → 0.1.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +92 -47
  2. package/README.md +39 -89
  3. package/package.json +76 -76
package/CHANGELOG.md CHANGED
@@ -1,47 +1,92 @@
1
- # Changelog
2
-
3
- ## 0.1.1
4
-
5
- ### Fixed
6
-
7
- - **The client bundle now registers under the package name.** `lib/client.js` called
8
- `window.__ModuleLoader__.load({ id: "dsh-find-all", ... })` — the unscoped name — while the
9
- package is `@ryuu-64/dsh-find-all`. The host composes the boot-graph row id from the package
10
- name (`ClientModuleRegistry.reconcilePackage`), and `ClientModuleSystem.arrive()` rejects the
11
- row when the executed bundle did not register a factory under exactly that key, so the plugin
12
- loaded and then failed with:
13
-
14
- ```text
15
- failed to import loader entry <id>: client-modules: bundle /plugins/??...&rev=...
16
- loaded without registering "@ryuu-64/dsh-find-all" via __ModuleLoader__.load
17
- ```
18
-
19
- The GUI surfaced this as "Failed to load plugins / 部分插件加载失败", which reads like a DSH
20
- version incompatibility; it was not.
21
-
22
- Introduced by the 0.1.0 fork, which renamed every other `dsh-find-bar` identifier to
23
- `dsh-find-all` but left the registration id unscoped. `id` is now `"@ryuu-64/dsh-find-all"`.
24
-
25
- ### Added
26
-
27
- - `scripts/check-client-registration.mjs` (wired into `npm run check`): reads the expected id from
28
- `package.json` and fails with a `file:line` diagnostic when the bundle registers anything else,
29
- so the drift cannot come back unnoticed. It takes an optional package root, so it can inspect a
30
- registry tarball or an installed profile instead of only this checkout.
31
- - `npm run verify:release`: packs the artifact `npm publish` would upload and checks the id inside
32
- that tarball. This is the check that would have caught 0.1.0 before it reached the registry.
33
- - `npm run deploy:profile`: installs a published release into a DSH profile and refuses to finish
34
- until the installed bundle is byte-identical to the registry artifact and registers correctly.
35
- Rolls the profile manifests back on any failure.
36
- - Tests for the registration check itself (`test/client-registration-check.test.mjs`): they run it
37
- against a mutated copy, which is how the check was caught silently falling back to the checkout
38
- and reporting the defective registry 0.1.0 as clean.
39
- - `test/bundle-registration.test.mjs`: the invariant as a test, with the expected value read
40
- from `package.json` rather than hardcoded.
41
- - README section on the "Failed to load plugins" symptom, why it is not a DSH version problem, and
42
- the fork re-scope hazard behind it.
43
-
44
- ## 0.1.0
45
-
46
- Initial release: a Ctrl+F find bar that searches the whole conversation, forked from
47
- [`secyborg/dsh-find-bar`](https://github.com/secyborg/dsh-find-bar) (MIT).
1
+ # Changelog
2
+
3
+ ## 0.1.3
4
+
5
+ Documentation only: no code, no bundle, no behavior changed. Published so the README on the npm
6
+ package page is the user-facing one — npm serves the README carried by the latest release.
7
+
8
+ ### Changed
9
+
10
+ - **`README.md` is now written for users.** It had been carrying maintainer material: internal
11
+ session-service calls, the tarball install for when publishing is blocked, the 0.1.0
12
+ registration post-mortem, the derived-literal warning for future forkers, and the test
13
+ commands. A user opening the page had to work out which parts applied to them. The README now
14
+ answers what the plugin does, how to install it, the keyboard reference, known limitations, and
15
+ how to uninstall.
16
+
17
+ ### Added
18
+
19
+ - **`CONTRIBUTING.md`** takes that material rather than dropping it, plus a note on why release
20
+ coordinates cannot be reused (the reason 0.1.1 became 0.1.2). It is not in `package.json`'s
21
+ `files` whitelist, so npm users do not receive it.
22
+
23
+ ### Fixed
24
+
25
+ - `scripts/install-local.mjs` told the operator to move to the registry "once 0.1.1 is published",
26
+ a version that can never exist. It now refers to the installed version generically.
27
+
28
+ ## 0.1.2
29
+
30
+ Nothing about the code changed — this release exists only because **0.1.1 can never be
31
+ published**. The publish that produced `+ @ryuu-64/dsh-find-all@0.1.1` left the version in npm's
32
+ staging area rather than on the registry, and the registry refuses to reuse the coordinate:
33
+
34
+ ```text
35
+ 409 Cannot publish over previously staged version "0.1.1"
36
+ 409 Cannot stage previously published version "0.1.1"
37
+ ```
38
+
39
+ That is expected, not a bug: registry data is immutable, and *"if you've ever published a package
40
+ called bob at version 1.1.0, no other package can ever be published with that name at that
41
+ version. This is true even if that package is unpublished"* ([npm Unpublish
42
+ Policy](https://docs.npmjs.com/policies/unpublish)). The 0.1.1 tarball never became reachable
43
+ (`/0.1.1` → 404, its tarball → 404), so the fix is republished unchanged as 0.1.2.
44
+
45
+ The 0.1.1 section below still describes this release's content: same bundle, same fix, byte for
46
+ byte.
47
+
48
+ ## 0.1.1
49
+
50
+ ### Fixed
51
+
52
+ - **The client bundle now registers under the package name.** `lib/client.js` called
53
+ `window.__ModuleLoader__.load({ id: "dsh-find-all", ... })` — the unscoped name — while the
54
+ package is `@ryuu-64/dsh-find-all`. The host composes the boot-graph row id from the package
55
+ name (`ClientModuleRegistry.reconcilePackage`), and `ClientModuleSystem.arrive()` rejects the
56
+ row when the executed bundle did not register a factory under exactly that key, so the plugin
57
+ loaded and then failed with:
58
+
59
+ ```text
60
+ failed to import loader entry <id>: client-modules: bundle /plugins/??...&rev=...
61
+ loaded without registering "@ryuu-64/dsh-find-all" via __ModuleLoader__.load
62
+ ```
63
+
64
+ The GUI surfaced this as "Failed to load plugins / 部分插件加载失败", which reads like a DSH
65
+ version incompatibility; it was not.
66
+
67
+ Introduced by the 0.1.0 fork, which renamed every other `dsh-find-bar` identifier to
68
+ `dsh-find-all` but left the registration id unscoped. `id` is now `"@ryuu-64/dsh-find-all"`.
69
+
70
+ ### Added
71
+
72
+ - `scripts/check-client-registration.mjs` (wired into `npm run check`): reads the expected id from
73
+ `package.json` and fails with a `file:line` diagnostic when the bundle registers anything else,
74
+ so the drift cannot come back unnoticed. It takes an optional package root, so it can inspect a
75
+ registry tarball or an installed profile instead of only this checkout.
76
+ - `npm run verify:release`: packs the artifact `npm publish` would upload and checks the id inside
77
+ that tarball. This is the check that would have caught 0.1.0 before it reached the registry.
78
+ - `npm run deploy:profile`: installs a published release into a DSH profile and refuses to finish
79
+ until the installed bundle is byte-identical to the registry artifact and registers correctly.
80
+ Rolls the profile manifests back on any failure.
81
+ - Tests for the registration check itself (`test/client-registration-check.test.mjs`): they run it
82
+ against a mutated copy, which is how the check was caught silently falling back to the checkout
83
+ and reporting the defective registry 0.1.0 as clean.
84
+ - `test/bundle-registration.test.mjs`: the invariant as a test, with the expected value read
85
+ from `package.json` rather than hardcoded.
86
+ - README section on the "Failed to load plugins" symptom, why it is not a DSH version problem, and
87
+ the fork re-scope hazard behind it.
88
+
89
+ ## 0.1.0
90
+
91
+ Initial release: a Ctrl+F find bar that searches the whole conversation, forked from
92
+ [`secyborg/dsh-find-bar`](https://github.com/secyborg/dsh-find-bar) (MIT).
package/README.md CHANGED
@@ -1,126 +1,76 @@
1
1
  # dsh-find-all
2
2
 
3
- DSH web 插件:给桌面 App(Electron 壳)补上 **⌘F / Ctrl+F 页内查找**,并且**搜的是整段会话,不只是屏幕上已经渲染出来的那一截**。
4
-
5
- > **Fork 自 [secyborg/dsh-find-bar](https://github.com/secyborg/dsh-find-bar)**(作者 secyborg,MIT)。
6
- > Fork 依据的快照:commit `ce7eb75efe94d768127c5977c649ecd950a9356c`(0.1.0,2026-08-25)。
7
- > 版权与许可是 MIT 双署名:`LICENSE` 里**同时**保留上游 `Copyright (c) 2026 secyborg` 与本 fork `Copyright (c) 2026 Ryuu-64`;上游 README 原样留作 `README.fork-origin.md`;改动清单与致谢见 `NOTICE.md`。
8
- >
9
- > 本仓库只做一件上游做不到的事:**把没加载进来的历史翻进来再搜**。
3
+ DSH Desktop 的 **⌘F / Ctrl+F 查找**插件。它有一个和浏览器查找不一样的地方:**搜的是整段会话,不只是屏幕上已经显示出来的那一截。**
10
4
 
11
5
  ## 为什么需要它
12
6
 
13
- DSH 桌面窗口是 Electron,本身没有浏览器那种查找栏;而会话视图**一次只保留最近 50 条消息**在页面里(点一次「加载更早」再多 50 条)。所以用普通查找条搜一个存在于更早历史里的词,结果永远是 0——哪怕这段会话里明明有。
14
-
15
- 本插件在你输入关键词后,通过会话服务把更早的历史一页页加载进来,每加载一页就重搜一次,直到整段会话都在页面里。于是命中计数和高亮覆盖的是**整个会话**。
16
-
17
- ## 功能
7
+ DSH 桌面窗口是 Electron 壳,本身没有浏览器那种查找栏。而会话视图一次只在页面里保留最近 50 条消息——点一次「加载更早」才再多 50 条。
18
8
 
19
- - **⌘F / Ctrl+F** 唤起查找条(自动带入当前选中的文字)
20
- - **范围切换**:`整段`(默认)↔ `本页`。点一下那个胶囊按钮切换
21
- - **整段模式**:自动分页加载历史,边加载边更新高亮与计数
22
- - **进度可见**:`正在加载更早的历史… 已 3 页`,**点一下这段文字即可停止**
23
- - **安全上限**:最多加载 400 页(约 2 万条消息);历史不再增长时会自行停止(宿主没有 `hasMore` 也能收敛)
24
- - **导航**:Enter / Shift+Enter、⌘G / F3(+Shift)、Esc 关闭并清除高亮
25
- - **高亮**:CSS Custom Highlight API 绘制,不改 DOM,与 React 渲染零冲突;不支持该 API 的环境退回 `window.find()`
26
- - 切换会话时自动重置并重新开始搜索
9
+ 所以拿普通查找条搜一个较早的词,结果永远是 0,哪怕这段会话里确实有。
27
10
 
28
- ## 它是怎么搜到"还没显示出来"的内容的
11
+ 这个插件在你输入关键词之后,通过会话服务把更早的历史一页页加载进来,每加载一页就重搜一次,直到整段会话都在页面里。这样命中计数和高亮覆盖的是**整个会话**。
29
12
 
30
- 插件先问会话服务"现在是哪个会话",然后一页一页地请它把更早的消息加载出来(一页 50 条)。每加载完一页就重新搜一遍,所以计数和高亮最后覆盖的是整段会话。
31
- "还有没有更早的"由会话服务自己报;报不出来的时候,它就一直翻到页面不再变化为止。
13
+ ## 功能
32
14
 
33
- (给开发者:用的是客户端 `sessions` 服务——`ctx.sessions.list.getSnapshot().current` 取当前会话、`ctx.sessions.binding(id).session` 取会话面,翻页调 `loadOlder()`,判断用快照里的 `hasMore`。)
15
+ - **⌘F / Ctrl+F** 唤起查找栏,自动带入当前选中的文字
16
+ - **范围切换**:`整段`(默认)↔ `本页`,点那个胶囊按钮切换
17
+ - **边搜边加载**:整段模式下自动分页加载历史,高亮与计数随加载实时更新
18
+ - **进度可见**:显示「正在加载更早的历史… 已 3 页」,**点一下这段文字即可停止加载**
19
+ - **安全上限**:最多加载 400 页(约 2 万条消息);历史不再增长时会自行停止
20
+ - **导航**:Enter / Shift+Enter 上下一个;⌘G(Ctrl+G)/ F3 下一个,加 Shift 反向;Esc 关闭查找栏并清除高亮
21
+ - 切换会话时自动重置,并在新会话里重新开始搜索
34
22
 
35
23
  ## 安装
36
24
 
37
- ```sh
38
- dsh plugin --profile desktop add @ryuu-64/dsh-find-all
39
- ```
40
-
41
- 装完**完整重启一次 DSH Desktop**(插件清单只在启动时装载)。
42
-
43
- 不想走 npm 就装本地源码(改完不用重新打包,重启即可):
25
+ 用 DSH 自带的插件命令装:
44
26
 
45
27
  ```sh
46
- dsh plugin --profile desktop add link:/path/to/dsh-find-all
28
+ dsh plugin --profile desktop add @ryuu-64/dsh-find-all
47
29
  ```
48
30
 
49
- ### 不依赖 npm 的安装(profile 用本仓库打好的 tarball)
31
+ 装完请**完整重启一次 DSH Desktop**——插件清单只在启动的时候装载,不重启不会生效。
50
32
 
51
- 当 registry 上还是旧版本(或发布被 2FA 卡住)时用这条:脚本把本仓库 `npm pack` 出来的
52
- tarball **拷进 profile 目录**,并把依赖改成 `file:./dsh-find-all-<版本>.tgz`。pnpm 从它安装,
53
- **以后再跑 `pnpm install` 也只会从这个 tarball 重装,不会去 registry 把旧版本拉回来**;
54
- tarball 放在 profile 里(而不是仓库里),所以仓库的 `git clean -xfd` 不会把它扫掉,
55
- 锁文件里存的也是相对路径。
33
+ 装完按 **⌘F / Ctrl+F**,右上角出现查找栏就算装好了。
56
34
 
57
- ```sh
58
- npm run install:local # 打包 → 校验 tarball 里的注册 id → 装进 profile → 逐字节自证
59
- ```
35
+ ### 和 dsh-find-bar 只能留一个
60
36
 
61
- 换回 registry 版本(发布成功之后):
37
+ `dsh-find-bar` 和本插件**都会抢 Ctrl+F**,两个同时装会互相顶掉。如果你之前装过它,先卸掉:
62
38
 
63
39
  ```sh
64
- npm run deploy:profile # 把依赖改回 ^<版本>,并证明装出来的字节与 registry 产物一致
65
- ```
66
-
67
- > `deploy:profile` 会先确认目标版本**确实已发布**(否则拒绝并保持 profile 不变),
68
- > 所以不会出现"依赖指向一个解析不到的版本、下次 install 直接崩"的情况。
69
-
70
- > 注意:它与 `dsh-find-bar` **都会抢 Ctrl+F**,请只保留一个:
71
- > ```sh
72
- > dsh plugin --profile desktop remove dsh-find-bar
73
- > ```
74
-
75
- ## 排障:GUI 报「Failed to load plugins / 部分插件加载失败」
76
-
77
- 如果报错长这样:
78
-
79
- ```text
80
- failed to import loader entry <id>: client-modules: bundle /plugins/??...&rev=...
81
- loaded without registering "@ryuu-64/dsh-find-all" via __ModuleLoader__.load
40
+ dsh plugin --profile desktop remove dsh-find-bar
82
41
  ```
83
42
 
84
- **这不是 DSH 版本不兼容,别去恢复模式卸载、也别新建 Profile。** 它只有一个含义:
85
- `lib/client.js` 里 `window.__ModuleLoader__.load({ id })` 的 id 与**包名**不一致。
43
+ ## 使用
86
44
 
87
- 宿主(`@deepseek-ai/dsh-client-modules`)用「解析出的 package.json 包名」当浏览器模块身份
88
- (规范的 `WebBootEntry.id` 注释就是 *Entry name == package name*),
89
- `ClientModuleSystem.arrive()` 在脚本加载成功后按这个 key 查 factory 表,查不到就抛这一句。
45
+ | 操作 | 按键 |
46
+ | --- | --- |
47
+ | 打开查找栏 | `⌘F` / `Ctrl+F` |
48
+ | 下一个 / 上一个命中 | `Enter` / `Shift+Enter` |
49
+ | 下一个 / 上一个命中(另一套) | `⌘G`(`Ctrl+G`)/ `F3`,加 `Shift` 反向 |
50
+ | 切换范围 `整段` ↔ `本页` | 点查找栏上的胶囊按钮 |
51
+ | 停止加载更早的历史 | 点「正在加载更早的历史…」那行文字 |
52
+ | 关闭并清除高亮 | `Esc` |
90
53
 
91
- 0.1.0 就是这个毛病:fork 自非 scoped 的 `dsh-find-bar` 时,包名改成 `@ryuu-64/dsh-find-all`,
92
- bundle 里的 id 却写成了裸名 `dsh-find-all`。0.1.1 已修,并加了门禁:
54
+ 搜索全部在本机完成:插件只向 DSH 的会话服务要更早的历史,不发网络请求,也不改动会话内容。
93
55
 
94
- ```sh
95
- npm run check:registration # 期望值从 package.json 读,比 bundle 实际注册值
96
- npm run verify:release # 打包成 tarball 再验一遍(发布前跑)
97
- ```
56
+ ## 已知限制
98
57
 
99
- > **Fork / 改名提醒**:给 scoped 包 fork 一个非 scoped 包时,危险的不是包名本身,
100
- > 而是散落在 bundle 里的**派生字面量**。官方工具链(`packages/client/tsdown.client.ts`
101
- > 的 `clientBundle(id, ...)`)把 id 当参数盖章,社区脚手架(`create-dsh-plugin`)用
102
- > `{{PKG_NAME}}` 模板变量注入——都是为了让这个字面量无法被手写错。
103
- > 本包的 bundle 是手写并入库的,所以用上面两条命令代替盖章。
58
+ - 大小写不敏感,没有「区分大小写」开关
59
+ - 单次搜索最多记 5000 个命中
60
+ - 折叠起来的工具调用和思考块,正文不在页面里,搜不到——先展开再搜
61
+ - 整段模式要真的翻历史,所以很长的会话首次搜索需要等几秒
104
62
 
105
63
  ## 卸载 / 回退
106
64
 
107
65
  ```sh
108
66
  dsh plugin --profile desktop remove @ryuu-64/dsh-find-all # 卸载
109
- dsh plugin --profile desktop add dsh-find-bar # 退回上游那个插件
67
+ dsh plugin --profile desktop add dsh-find-bar # 想换回上游那个插件
110
68
  ```
111
69
 
112
- ## 已知限制
70
+ ## 关于这个项目
113
71
 
114
- - 大小写不敏感,没有"区分大小写"开关
115
- - 单次搜索最多记 5000 个命中
116
- - 折叠起来的工具调用/思考块,其正文不在 DOM 里,搜不到(需要先展开)
117
- - 第一次搜一个很长的会话要等几秒:那是真的在读历史(856 条 ≈ 17 页)
72
+ 本插件 fork 自 [secyborg/dsh-find-bar](https://github.com/secyborg/dsh-find-bar)(作者 secyborg,MIT),在上游的基础上加了「整段会话」搜索。上游原有的查找条界面、高亮、`n/N` 计数和键盘导航都保留了下来。
118
73
 
119
- ## 开发
120
-
121
- ```sh
122
- npm test # 匹配逻辑、键盘路由、分页循环的单元测试
123
- npm run check
124
- ```
74
+ 版权与许可为 MIT 双署名:`Copyright (c) 2026 secyborg` 与 `Copyright (c) 2026 Ryuu-64`。上游 README 原样保存在 `README.fork-origin.md`,改动清单与致谢见 `NOTICE.md`。
125
75
 
126
- `lib/client.js` 就是构建产物(与生态里其它插件一致:直接由 `window.__ModuleLoader__` 装载),没有打包步骤。
76
+ 参与开发、打包发布、以及「Failed to load plugins」报错的排查,见 `CONTRIBUTING.md`。
package/package.json CHANGED
@@ -1,76 +1,76 @@
1
- {
2
- "name": "@ryuu-64/dsh-find-all",
3
- "version": "0.1.1",
4
- "description": "Ctrl+F find bar for the DSH desktop app: it searches the whole conversation, not just the messages already on screen.",
5
- "type": "module",
6
- "license": "MIT",
7
- "main": "lib/index.js",
8
- "exports": {
9
- ".": "./lib/index.js",
10
- "./client": "./lib/client.js",
11
- "./package.json": "./package.json"
12
- },
13
- "files": [
14
- "lib",
15
- "cordis.patch.yml",
16
- "README.md",
17
- "CHANGELOG.md",
18
- "NOTICE.md",
19
- "LICENSE"
20
- ],
21
- "author": "Ryuu-64",
22
- "contributors": [
23
- "secyborg (upstream dsh-find-bar, MIT)"
24
- ],
25
- "repository": {
26
- "type": "git",
27
- "url": "git+https://github.com/Ryuu-64/dsh-find-all.git"
28
- },
29
- "homepage": "https://github.com/Ryuu-64/dsh-find-all#readme",
30
- "bugs": {
31
- "url": "https://github.com/Ryuu-64/dsh-find-all/issues"
32
- },
33
- "publishConfig": {
34
- "access": "public",
35
- "registry": "https://registry.npmjs.org/"
36
- },
37
- "peerDependencies": {
38
- "@deepseek-ai/dsh-api-session-controller": ">=0.1.5-rc.2 <0.1.6-0 || >=0.1.6-0 <0.2.0-0",
39
- "@deepseek-ai/dsh-client-ui-chat": ">=0.1.5-rc.2 <0.1.6-0 || >=0.1.6-0 <0.2.0-0",
40
- "@deepseek-ai/dsh-client-ui-conversation": ">=0.1.5-rc.2 <0.1.6-0 || >=0.1.6-0 <0.2.0-0"
41
- },
42
- "scripts": {
43
- "test": "node --test \"test/**/*.test.mjs\"",
44
- "check:registration": "node scripts/check-client-registration.mjs",
45
- "check": "node --check lib/index.js && node --check lib/client.js && npm run check:registration && node --test \"test/**/*.test.mjs\"",
46
- "verify:release": "node scripts/verify-release.mjs",
47
- "install:local": "node scripts/install-local.mjs",
48
- "deploy:profile": "node scripts/deploy-profile.mjs"
49
- },
50
- "keywords": [
51
- "dsh",
52
- "dsh-plugin",
53
- "deepseek-harness",
54
- "find",
55
- "search",
56
- "conversation"
57
- ],
58
- "dsh": {
59
- "bundle": {
60
- "patch": "./cordis.patch.yml"
61
- },
62
- "client": {
63
- "inject": [
64
- "@deepseek-ai/dsh-api-session-controller",
65
- "@deepseek-ai/dsh-client-ui-conversation",
66
- "@deepseek-ai/dsh-client-ui-chat"
67
- ],
68
- "platform": "web"
69
- },
70
- "compatibility": {
71
- "dshReleases": {
72
- "0.1.5-rc.2": "compatible"
73
- }
74
- }
75
- }
76
- }
1
+ {
2
+ "name": "@ryuu-64/dsh-find-all",
3
+ "version": "0.1.3",
4
+ "description": "Ctrl+F find bar for the DSH desktop app: it searches the whole conversation, not just the messages already on screen.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "main": "lib/index.js",
8
+ "exports": {
9
+ ".": "./lib/index.js",
10
+ "./client": "./lib/client.js",
11
+ "./package.json": "./package.json"
12
+ },
13
+ "files": [
14
+ "lib",
15
+ "cordis.patch.yml",
16
+ "README.md",
17
+ "CHANGELOG.md",
18
+ "NOTICE.md",
19
+ "LICENSE"
20
+ ],
21
+ "author": "Ryuu-64",
22
+ "contributors": [
23
+ "secyborg (upstream dsh-find-bar, MIT)"
24
+ ],
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/Ryuu-64/dsh-find-all.git"
28
+ },
29
+ "homepage": "https://github.com/Ryuu-64/dsh-find-all#readme",
30
+ "bugs": {
31
+ "url": "https://github.com/Ryuu-64/dsh-find-all/issues"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public",
35
+ "registry": "https://registry.npmjs.org/"
36
+ },
37
+ "peerDependencies": {
38
+ "@deepseek-ai/dsh-api-session-controller": ">=0.1.5-rc.2 <0.1.6-0 || >=0.1.6-0 <0.2.0-0",
39
+ "@deepseek-ai/dsh-client-ui-chat": ">=0.1.5-rc.2 <0.1.6-0 || >=0.1.6-0 <0.2.0-0",
40
+ "@deepseek-ai/dsh-client-ui-conversation": ">=0.1.5-rc.2 <0.1.6-0 || >=0.1.6-0 <0.2.0-0"
41
+ },
42
+ "scripts": {
43
+ "test": "node --test \"test/**/*.test.mjs\"",
44
+ "check:registration": "node scripts/check-client-registration.mjs",
45
+ "check": "node --check lib/index.js && node --check lib/client.js && npm run check:registration && node --test \"test/**/*.test.mjs\"",
46
+ "verify:release": "node scripts/verify-release.mjs",
47
+ "install:local": "node scripts/install-local.mjs",
48
+ "deploy:profile": "node scripts/deploy-profile.mjs"
49
+ },
50
+ "keywords": [
51
+ "dsh",
52
+ "dsh-plugin",
53
+ "deepseek-harness",
54
+ "find",
55
+ "search",
56
+ "conversation"
57
+ ],
58
+ "dsh": {
59
+ "bundle": {
60
+ "patch": "./cordis.patch.yml"
61
+ },
62
+ "client": {
63
+ "inject": [
64
+ "@deepseek-ai/dsh-api-session-controller",
65
+ "@deepseek-ai/dsh-client-ui-conversation",
66
+ "@deepseek-ai/dsh-client-ui-chat"
67
+ ],
68
+ "platform": "web"
69
+ },
70
+ "compatibility": {
71
+ "dshReleases": {
72
+ "0.1.5-rc.2": "compatible"
73
+ }
74
+ }
75
+ }
76
+ }