{"_id":"dsh-folder-explorer","_rev":"2-ecc7f98fb11ed8a174206a593e72276e","name":"dsh-folder-explorer","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0-stage":{"name":"dsh-folder-explorer","version":"0.0.0-stage","_id":"dsh-folder-explorer@0.0.0-stage","stub":true,"maintainers":[{"name":"moonfiremoon","email":"moonfirenoom@gmail.com"}],"dist":{"shasum":"3732eb601ffb71ec58c96efea681c7d52d56c362","tarball":"https://registry.npmjs.org/dsh-folder-explorer/-/dsh-folder-explorer-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-Es7gZ636UELfoGEmfrY7p9f4uKvuzKEEoXlx7cdQvhhUVZtSmgqHrfv22+Swm8x8wGqy80mE499uAHAS/FSSeQ==","signatures":[{"sig":"MEQCIGTVp7N9U/9bB+JCzVKRRFo6nrWUiN8s7+B+3epivuxhAiABBYNc11xVeQ0Pv68DnXMa7TVTfqKSvoJYjN0mLem02A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":341},"_npmUser":{"name":"moonfiremoon","email":"moonfirenoom@gmail.com"},"description":"Temporary package placeholder for staged publishing","directories":{}},"0.2.0":{"_id":"dsh-folder-explorer@0.2.0","dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-sidebar-right","@deepseek-ai/dsh-client-ui-session","@deepseek-ai/dsh-api-session-controller","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-shortcuts"],"platform":"web","immediately":true}},"bugs":{"url":"https://github.com/wx-98/DSH-folder/issues"},"dist":{"shasum":"61692f01fbf2b49fb3d8bf53532c658079160f1c","tarball":"https://registry.npmjs.org/dsh-folder-explorer/-/dsh-folder-explorer-0.2.0.tgz","fileCount":10,"integrity":"sha512-QCYiJYTRa3DmBZpUztL3Ea1bLF0nS9xXe5y4wd7KGjBQhVW+HgrVb6SjiZ72nlF7xk8Jp69vbGiZmGug2G+I4A==","signatures":[{"sig":"MEYCIQD6VHET0IkEFs+CyOHP195lIrqqV2/0zgn4igqs0nupQgIhAIQHloBVrlsAepGb5aK22fHYm0sxrHq+UoikINjposOc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBH6Cqu8dA9tB0pNGiQz5G4T+eUktEYaIcs1hfYVHc9AAiAGmhnsFFQ3Q6M4iNfmSWPXukLpp3ipFpg1AQPN/nk65g=="}],"unpackedSize":230835},"name":"dsh-folder-explorer","type":"module","exports":{".":"./index.js","./icon":"./icon.svg","./client":"./client.js","./locale/*.json":"./locale/*.json"},"gitHead":"d7ea1d4ee2d6dc6742fd2dfb107b5bfbac457317","license":"MIT","scripts":{"test":"node --test test/*.test.js"},"version":"0.2.0","_npmUser":{"name":"moonfiremoon","email":"moonfirenoom@gmail.com"},"homepage":"https://github.com/wx-98/DSH-folder#readme","keywords":["dsh","dsh-plugin","deepseek-harness","folder-explorer","file-icons","add-to-chat"],"repository":{"url":"git+https://github.com/wx-98/DSH-folder.git","type":"git"},"_npmVersion":"12.2.0","description":"Folder explorer plugin for the DeepSeek Harness Web GUI: VSCode-like file tree with type icons, file operations and Add to Chat actions.","directories":{},"maintainers":[{"name":"moonfiremoon","email":"moonfirenoom@gmail.com"}],"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-folder-explorer_0.2.0_1793525524780_0.26299077932127823"}}},"time":{"created":"2026-11-01T09:31:09.479Z","modified":"2026-11-01T09:32:05.023Z","0.0.0-stage":"2026-11-01T09:31:09.479Z","0.2.0":"2026-11-01T09:32:04.875Z"},"description":"Folder explorer plugin for the DeepSeek Harness Web GUI: VSCode-like file tree with type icons, file operations and Add to Chat actions.","maintainers":[{"name":"moonfiremoon","email":"moonfirenoom@gmail.com"}],"readme":"# DSH Folder Explorer\n\n一个 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)（DSH）Web/Desktop 插件：在右侧栏提供类 VSCode 的文件夹资源管理器。\n\n**插件类型：** Cordis 插件 bundle（双面：Host 半边 + Web Client 半边），不是皮肤 / TUI / 桌面客户端。\n\n打开任意本地文件夹后可以：\n\n- **VSCode 风格类型图标**：TypeScript / JavaScript / JSON / Markdown / 图片 / 压缩包 / Office / Shell / 配置 / 锁文件等按形状与颜色区分；文件夹有开合两态，`.git`、`node_modules`、`src`、`dist`、`docs`、`config` 使用专属图标（图标子集来自 MIT 许可的 Material Icon Theme，见 [docs/THIRD_PARTY_NOTICES.md](docs/THIRD_PARTY_NOTICES.md)）\n- 树形浏览（懒加载、目录优先排序、隐藏文件可见、手动刷新）\n- 右键菜单：复制绝对路径 / 复制相对路径、重命名（行内编辑）、新建文件、新建文件夹、删除（二次确认后永久删除）、复制 / 粘贴（冲突策略：保留两者 / 跳过 / 覆盖）、在 Finder/资源管理器中显示\n- 键盘操作：↑/↓ 移动、→/← 展开折叠、Enter 打开、F2 重命名、Delete 删除、Cmd/Ctrl+C / V 复制粘贴、Esc 关闭浮层\n- **添加到对话（Add to Chat）**：文件树右键、已打开文件的预览头部按钮或 tab 右键，把文件/文件夹作为 `@` 引用直接放进当前会话的聊天输入框（类似 Cursor；不读取文件内容、不自动发送、保留已有草稿）\n- 点击文件用 DSH 内置文档预览打开（工作区外绝对路径同样可用）\n- 中文 / 英文文案，跟随宿主主题（深色 / 浅色）\n\n插件是一个**双面 bundle**：Host 半边（`index.js`）注册 `/folder-explorer/*` HTTP 路由完成受控的本地文件操作，浏览器半边（`client.js`）在右侧栏注册 `folder-explorer` 标签类型。无构建步骤、无 npm 运行时依赖。\n\n## 安装\n\n前置：DSH Web/Desktop **0.2.1-rc.5**。插件声明了 `dsh.bundle.patch` 与 `dsh.client`，支持 GitHub、npm 与本地目录三种安装方式。\n\n### 从 GitHub 安装\n\nGUI：Plugins → Add plugin → Install a third-party plugin → 填 `github:wx-98/DSH-folder`（或 `https://github.com/wx-98/DSH-folder.git`）→ 安装后启用 bundle 的 row。\n\nCLI（`dsh` 在 PATH 中时）：\n\n```bash\ndsh plugin --profile <profile> add github:wx-98/DSH-folder\n```\n\n### 从 npm 安装\n\nnpm 包名：`dsh-folder-explorer`（无构建步骤、无运行时依赖）。\n\nGUI：Plugins → Add plugin → 包名 `dsh-folder-explorer`。\n\nCLI：\n\n```bash\ndsh plugin --profile <profile> add dsh-folder-explorer\n```\n\n> 仓库已按 npm 包规范准备（`private` 已移除、`files` 白名单、`publishConfig.access=public`）。发布状态以 [npm registry](https://www.npmjs.com/package/dsh-folder-explorer) 页面为准。\n>\n> 维护者发布：配置仓库 secret `NPM_TOKEN`（npm automation token）后，可通过 `.github/workflows/publish-npm.yml` 的 workflow_dispatch 或 GitHub Release 发布；也可本地 `npm login && npm publish --access public`。\n\n### 本地开发安装\n\n```bash\ngit clone https://github.com/wx-98/DSH-folder.git dsh-folder\n```\n\n然后在 DSH GUI：Plugins → Add plugin → **本地绝对路径**，填入 clone 目录的绝对路径。本地目录以 link 方式安装，修改 `client.js` 会被 `dsh-client-hmr` 原地热替换，Host 半边改动经 profile 重组生效。\n\n## 使用\n\n1. 右侧栏标签向导打开 **Folder Explorer**（或从标签栏 + 号选择）；\n2. 默认根目录是当前会话工作目录；点击工具栏 **打开文件夹…** 可浏览并切换到任意本地目录（最近一次根会记住）；\n3. 单击文件在右侧预览；目录行单击展开 / 折叠；\n4. 右键打开行级菜单；树获得焦点后可用键盘操作。\n\n## 安全边界\n\n- 每个文件操作请求先经过 DSH 的 **连接信任栅栏**（Host/Origin 校验 + 登录 cookie）；\n- 所有路径限定在用户显式打开的 **根目录** 内，并做规范化 + `realpath` 复核，拒绝通过 `..` 或符号链接逃逸；\n- 删除必须带显式确认；复制/移动拒绝把目录放进自身；\n- 变更操作在 Host 内串行执行；不产生模型可见事件。\n\n## 兼容性与已知限制\n\n- 目标 DSH 0.2.1-rc.5；依赖其公开扩展点（`sidebarRightTabs`、`slots`、`webServer`、`connection`、`remote.session`），DSH 升级后建议重新回归。\n- 删除为**永久删除**（有二次确认），暂不进入废纸篓；\n- 暂不支持拖拽移动、多选批量、外部变更自动监听、全文搜索（后续里程碑）；\n- “用外部应用打开”依赖宿主提供 Session Remote，不可用时菜单项隐藏。\n\n更多设计细节与验收记录见 [docs/folder-explorer-plugin.md](docs/folder-explorer-plugin.md)；图标机制与清单见 [docs/file-icons.md](docs/file-icons.md)；「添加到对话」说明见 [docs/add-to-chat.md](docs/add-to-chat.md)。\n\n## 社区收录\n\n- GitHub topic：[`dsh-plugin`](https://github.com/topics/dsh-plugin)（已设置）\n- 列表收录：[awesome-dsh-plugin PR #11102](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/11102)（提交于 2026-11-01，仓库创建未满 1 天，等待 CI/维护者复核）\n- 注册登记：[DSH Plugin Registry（dshplugin.world）](https://dshplugin.world/submit) 的 Submit 流程：仓库 issue [#1](https://github.com/wx-98/DSH-folder/issues/1) 已提交；官方 discussions ping 受 deepseek-ai 组织 OAuth App 访问限制，待手动补充\n\n## 仓库结构\n\n```text\npackage.json       插件包清单（exports / dsh.bundle.patch / dsh.client）\ncordis.patch.yml   Loader 行插入（Host 半边 + 浏览器半边）\nindex.js           Host 半边：/folder-explorer/* 路由\nlib/ops.js         文件操作实现（校验、list/stat/create/rename/delete/copy/move/reveal）\nclient.js          浏览器半边：右侧栏标签类型、文件树、菜单、对话框\nlocale/            插件管理页展示文案（zh/en）\nicon.svg           插件图标\ndocs/              设计与验收文档\n```\n\n## 许可证\n\n[MIT](LICENSE)","readmeFilename":"README.md","homepage":"https://github.com/wx-98/DSH-folder#readme","keywords":["dsh","dsh-plugin","deepseek-harness","folder-explorer","file-icons","add-to-chat"],"repository":{"url":"git+https://github.com/wx-98/DSH-folder.git","type":"git"},"bugs":{"url":"https://github.com/wx-98/DSH-folder/issues"},"license":"MIT"}