dsh-maoying 0.1.2 → 0.1.4

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
@@ -35,6 +35,13 @@ git clone https://github.com/lifangjin/dsh-maoying.git
35
35
  dsh plugin --profile web add link:"$PWD/dsh-maoying"
36
36
  ```
37
37
 
38
+ 只要命令行工具、不装插件的读者:零依赖 CLI 单独可用,`npx` 即跑,或装成全局命令(均为 npm 通道,与插件互不相干):
39
+
40
+ ```bash
41
+ npx maoying init # 免安装直接跑
42
+ npm install -g dsh-maoying # 或装成全局 maoying 命令
43
+ ```
44
+
38
45
  ## 怎么用
39
46
 
40
47
  选好预设后,对主编说话即可,它按工作流自己路由:
@@ -116,7 +123,7 @@ maoying export novel --format epub --out ~/Downloads # 换输出目录
116
123
 
117
124
  输出目录默认 `<dir>/exports/`,文件名 `<书名>-<YYYYMMDD>.<扩展名>`(书名取 project.yml 的 title);章节解析与 stats/index 同一套逻辑,frontmatter 不会混进正文。
118
125
 
119
- 零依赖(node:fs/path/url/crypto),任意 cwd 可用;npm 全局安装或 `pnpm link` 后可直接 `maoying` 调用,否则 `node <插件目录>/bin/maoying.mjs` 等价。日常写作中 index.yml 由设定管理员直接重建,CLI 主要给人用。
126
+ 零依赖(node:fs/path/url/crypto),任意 cwd 可用。装法三选一:`npm install -g dsh-maoying`、随用随取的 `npx maoying <命令>`、或开发机的 `npm link`(仓库检出即改即生效)。三样都没有时 `node <插件目录>/bin/maoying.mjs` 等价(dsh 插件安装也会把包落进 profile,可直接指过去)。日常写作中 index.yml 由设定管理员直接重建,CLI 主要给人用。
120
127
 
121
128
  ## 卸载
122
129
 
package/docs/design.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # dsh-maoying(毛颖)设计文档
2
2
 
3
- 网文创作辅助 DSH 插件。全部实现原创,以 MIT 发布。
3
+ 网文创作辅助 DSH 插件。以 MIT 发布。
4
4
 
5
5
  命名:毛颖,典出韩愈《毛颖传》——毛笔拟人得名「毛颖」。
6
6
 
package/index.mjs CHANGED
@@ -198,6 +198,32 @@ export function hostRejectsInlineDelegation(version) {
198
198
 
199
199
  /** 宿主包版本:从 <home>/node_modules require('@deepseek-ai/dsh/package.json')。 */
200
200
  export function readHostVersion(dshHome) {
201
+ // ① 运行入口锚定(最真):argv[1] 是宿主自己的入口脚本——CLI 下是
202
+ // @deepseek-ai/dsh 包里的 bin/入口,桌面应用下是 app.asar/dsh 内的入口
203
+ // (Electron 主进程的 fs 能透读 asar)。向上找最近的 @deepseek-ai/dsh
204
+ // package.json,读到的就是当前进程真实版本。home 全局安装的版本可能
205
+ // 陈旧(例如 CLI 升级前留下的 rc.7),绝不能只信它。
206
+ try {
207
+ let dir = path.dirname(path.resolve(process.argv?.[1] ?? ''))
208
+ for (let i = 0; i < 8 && dir && dir !== path.dirname(dir); i++, dir = path.dirname(dir)) {
209
+ const pkgPath = path.join(dir, 'package.json')
210
+ if (!existsSync(pkgPath)) continue
211
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))
212
+ if (pkg?.name === '@deepseek-ai/dsh' && typeof pkg.version === 'string' && pkg.version !== '') {
213
+ return pkg.version
214
+ }
215
+ }
216
+ } catch { /* 入口缺失或不可读时落下一档 */ }
217
+ // ② Electron 主进程:桌面应用版本即其内置 dsh 的版本。纯 Node 下 require
218
+ // ('electron') 得到的是路径字符串(或直接找不到),类型守卫天然挡掉。
219
+ try {
220
+ const electron = createRequire(import.meta.url)('electron')
221
+ if (electron && typeof electron === 'object' && typeof electron.app?.getVersion === 'function') {
222
+ const v = electron.app.getVersion()
223
+ if (typeof v === 'string' && v !== '') return v
224
+ }
225
+ } catch { /* 非 Electron 环境常态 */ }
226
+ // ③ 兜底:home 全局安装(老 CLI 链路;可能陈旧,只在①②都拿不到时兜底)
201
227
  try {
202
228
  const req = createRequire(path.join(dshHome, 'node_modules', 'package.json'))
203
229
  const pkg = req('@deepseek-ai/dsh/package.json')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-maoying",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "毛颖 — DSH 网文创作辅助插件:主编 + 五帮手编排(大纲/写手/审校/设定/考据),novel/ 结构化文件为数据库",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -57,5 +57,10 @@
57
57
  "@deepseek-ai/dsh-client-connection"
58
58
  ]
59
59
  }
60
+ },
61
+ "peerDependenciesMeta": {
62
+ "@deepseek-ai/dsh": {
63
+ "optional": true
64
+ }
60
65
  }
61
66
  }