@houser/edus-plugin 1.0.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 +69 -0
- package/cordis.yml +5 -0
- package/lib/client.js +7447 -0
- package/lib/index.js +718 -0
- package/lib/typert.host.d.ts +3 -0
- package/lib/typert.host.js +753 -0
- package/lib/typert.remote-client.d.ts +50 -0
- package/lib/typert.remote-client.js +747 -0
- package/lib/types/auth.d.ts +28 -0
- package/lib/types/client/HtmlPublishPreview.d.ts +7 -0
- package/lib/types/client/HtmlWorkbench.d.ts +46 -0
- package/lib/types/client/MyWorksAction.d.ts +7 -0
- package/lib/types/client/html-publish.d.ts +21 -0
- package/lib/types/client/index.d.ts +10 -0
- package/lib/types/index.d.ts +13 -0
- package/lib/types/invariant.d.ts +5 -0
- package/lib/types/marker.d.ts +13 -0
- package/lib/types/publish-image-tool.d.ts +4 -0
- package/lib/types/types.d.ts +52 -0
- package/lib/types/webpage-command.d.ts +4 -0
- package/lib/types/webpage-instruction.d.ts +2 -0
- package/package.json +167 -0
package/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Edus Plugin
|
|
2
|
+
|
|
3
|
+
用于 DeepSeek Harness Web 的课成品牌与 HTML 发布插件。除保留侧边栏和空会话页的品牌 Slot 外,它为聊天中打开的 HTML 文件提供右侧发布预览。
|
|
4
|
+
|
|
5
|
+
发布的页面必须是单个自包含 HTML;本地 `src` / `href` 资源会被拒绝。内嵌 base64 图片会上传为公开 URL。公开图片和分享链接一旦创建无法撤销,请只发布已获授权的内容。
|
|
6
|
+
|
|
7
|
+
## 运行
|
|
8
|
+
|
|
9
|
+
安装依赖并启动开发环境:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm install
|
|
13
|
+
npm run dev
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
`dev` 会先建立本地开发链接、构建 Node 端与浏览器端产物,再启动 Harness Web。链接的包会自动应用 `dsh.bundle.patch` 中声明的 `cordis.yml`,因此开发命令不能重复传入 `--patch ./cordis.yml`;否则 loader 会收到两个相同的 `edus-plugin` 条目。启动后如未立即看到更新,请对浏览器进行硬刷新。
|
|
17
|
+
|
|
18
|
+
作为独立开发插件时,`npm run dev` 会自动建立 Web profile 的本地开发链接,然后启动 Harness;也可手动执行 `npm run dev:link`。用 `npm run dev:unlink` 移除链接。发布前可运行 `npm run check` 和 `npm run pack:dry`。
|
|
19
|
+
|
|
20
|
+
## 项目结构
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
.
|
|
24
|
+
├── cordis.yml # 将插件插入 Harness 的 Cordis 配置树
|
|
25
|
+
├── package.json # 包导出、DSH Client 声明和脚本
|
|
26
|
+
├── tsconfig.json # Host / Client 共享的 TypeScript 配置
|
|
27
|
+
├── tsconfig.host.json # Node 端编译配置
|
|
28
|
+
├── tsconfig.client.json # 浏览器端 JSX 编译配置
|
|
29
|
+
├── tsdown.config.ts # Node / Client bundle 输出配置
|
|
30
|
+
├── src/
|
|
31
|
+
│ ├── index.ts # Node 端插件入口
|
|
32
|
+
│ └── client/
|
|
33
|
+
│ ├── index.tsx # 浏览器端 Slot 注册入口
|
|
34
|
+
│ ├── Brand.tsx # 品牌名称与 Logo React 组件
|
|
35
|
+
│ └── logo.png # 裁切、缩放后的透明 Logo 源文件
|
|
36
|
+
├── scripts/
|
|
37
|
+
│ └── embed-logo.mjs # 构建时将 PNG 内联为 data URL
|
|
38
|
+
└── lib/ # 构建产物(自动生成,不提交)
|
|
39
|
+
├── index.js
|
|
40
|
+
├── client.js
|
|
41
|
+
└── types/
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 工作方式
|
|
45
|
+
|
|
46
|
+
Harness 插件分为两个运行面:
|
|
47
|
+
|
|
48
|
+
- Node 端:`src/index.ts` 由 `cordis.yml` 中的包内相对路径加载,负责成为 Cordis 插件树中的一个入口;打包产物不引用开发机器的绝对路径。
|
|
49
|
+
- 浏览器端:`package.json` 的 `dsh.client` 声明该包是 Web Client 插件。Harness 发现该声明后,加载 `./client` 导出的浏览器 bundle。
|
|
50
|
+
|
|
51
|
+
浏览器入口 `src/client/index.tsx` 等待并替换三个官方品牌 Slot:
|
|
52
|
+
|
|
53
|
+
- `sidebar.brand.mark`:侧边栏展开态与收起态的 Logo。
|
|
54
|
+
- `sidebar.brand.name`:侧边栏展开态的品牌名称。
|
|
55
|
+
- `conversation.hero.brand.mark`:未选择会话时,页面中央的 Logo。
|
|
56
|
+
|
|
57
|
+
这些 Slot 都是单一展示位;`priority: -1` 使本插件的品牌组件优先于官方默认组件渲染。
|
|
58
|
+
|
|
59
|
+
替换 `src/client/logo.png` 后执行 `npm run build`。构建过程会生成浏览器 bundle 使用的 data URL,无需手动编辑生成文件。
|
|
60
|
+
|
|
61
|
+
## 构建脚本
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npm run build:host # 编译并打包 Node 端为 lib/index.js
|
|
65
|
+
npm run build:client # 编译并打包浏览器端为 lib/client.js
|
|
66
|
+
npm run build # 清理后依次执行以上两步
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`tsdown.config.ts` 会将浏览器代码包装成 Harness 的 `window.__ModuleLoader__.load(...)` 模块格式,因此不要手动编辑 `lib/client.js`;应始终修改 `src/client/` 下的源码。
|