@rezti/dsh-rez-suite 0.1.65 → 0.1.67
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/CHANGELOG.md +8 -2
- package/README.md +2 -2
- package/cordis.patch.yml +4 -2
- package/lib/client.js +15 -1
- package/lib/index.js +19 -1
- package/package.json +8 -8
- package/src/changelog.ts +16 -1
- package/src/index.ts +22 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,13 +5,19 @@
|
|
|
5
5
|
升级:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
dsh plugin --profile web add @rezti/dsh-rez-suite@0.1.
|
|
8
|
+
dsh plugin --profile web add @rezti/dsh-rez-suite@0.1.67
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
不要用裸 `plugin update`,不要写 `latest`(新 profile 有 24 小时发布冷却,当天可能装不上)。不要装 **0.1.46**(GitHub 子依赖会被 DSH 拦住)。不要装 **0.1.51**(误用 `npm publish` 把 `workspace:` 打进包了)。
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
## 0.1.
|
|
14
|
+
## 0.1.67 · 2026-09-13
|
|
15
|
+
|
|
16
|
+
**修 dsh 0.1.5 网页/微信 401。** 官方改成进程级 `?token=` + HttpOnly cookie,裸开 `:3080` 会提示 authentication required;个人微信 bridge 原先 RPC 不带 cookie → `session.create` 401。本版 suite 启动时写 `~/.dsh/dsh-web.url`(完整带 token 地址);wechat `@0.1.19` 用该文件换 cookie 再调 `/api`。装 **`@0.1.67`** 后重启 `dsh web`,浏览器请打开终端打印的完整 URL(或等价地打开一次该文件里的地址)。
|
|
17
|
+
|
|
18
|
+
**附:旧 sso 钉死。** 若 profile 仍嵌着旧子包,清 `profiles/web/node_modules` 再装本版。
|
|
19
|
+
|
|
20
|
+
## 0.1.64 · 2026-09-13
|
|
15
21
|
|
|
16
22
|
**跟官方 dsh 0.1.5。** `@deepseek-ai/*` 钉到 `0.1.5-rc.2`。设置改用 `ctx.settings.installSection`(不再依赖已删除的 `installSettingsSection` 导出)。凭证读写按 `version: 1` + `refs:`;安装包 `DSH_VERSION=0.1.5-rc.2`。依赖:`sso@0.1.18`、`intent@0.1.6`、`token-manager@0.1.5`、`vision@0.1.4`。员工机请用新 Setup / 重装钉版 dsh 后再 `plugin add` 本版。
|
|
17
23
|
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
雷泽插件的**唯一安装入口**。Odoo / 企微 / HA / TAPD / GSC / 企查查(仅法务助理房间) / 天眼查(仅老板) / 工作区(老板三室 + 全员助理)都由这一包拉齐,不要再逐个 `plugin add`,**不要**再装 `@rezti/dsh-rez-boss-desk`。
|
|
4
4
|
|
|
5
|
-
发版顺序(必做):先发 `@rezti/dsh-rez-sso@0.1.17` → `@rezti/dsh-rez-suite@0.1.
|
|
5
|
+
发版顺序(必做):先发 `@rezti/dsh-rez-sso@0.1.17` → `@rezti/dsh-rez-suite@0.1.64`。**发 suite 必须用 `pnpm publish`**(会把 `workspace:` 写成真实版本),不要用 `npm publish`。`@deepseek-ai/*` 钉死 `0.1.5-rc.2`,不要写成 `^`。员工机启动脚本跟 npm 满 24h 的 latest,不必改安装包里的钉死号。看图旁路在设置里二选一:Kimi 开放平台或 Kimi Code(两套 key 不能混用)。
|
|
6
6
|
|
|
7
7
|
设置里选身份后,左侧自己出现对应房间(全员三助理;工程师另加实验室;运营另加设计、发布、电商;老板另加搞钱/产品/运营),不必手动添加工作区。实验室:大模型写 YAML、调 MCP、给下载链接。
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
# 第一次 / 升级(钉死版本,避开 24h 发布冷却)
|
|
15
|
-
dsh plugin --profile web add @rezti/dsh-rez-suite@0.1.
|
|
15
|
+
dsh plugin --profile web add @rezti/dsh-rez-suite@0.1.64
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
本版改了什么:见 [CHANGELOG.md](./CHANGELOG.md)。
|
package/cordis.patch.yml
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# 用户只装这一包:`dsh plugin --profile web add @rezti/dsh-rez-suite`
|
|
2
|
-
# 升级只记这一条:`dsh plugin --profile web add @rezti/dsh-rez-suite@0.1.
|
|
2
|
+
# 升级只记这一条:`dsh plugin --profile web add @rezti/dsh-rez-suite@0.1.67`
|
|
3
3
|
# 不要再单独 add 子包,会重复注册。
|
|
4
4
|
#
|
|
5
5
|
# MCP rows are started by the domain plugins after rezSso resolves secrets.
|
|
6
6
|
# Do not list @deepseek-ai/dsh-mcp-client here: empty process.env would spawn
|
|
7
7
|
# nextcloud-mcp-server in a reconnect loop.
|
|
8
|
+
# Resolve packages by name (not nested relative paths) so hoisted / nested
|
|
9
|
+
# profile layouts both work on Linux and Windows.
|
|
8
10
|
- insert:
|
|
9
11
|
- id: rez-sso
|
|
10
|
-
name: '
|
|
12
|
+
name: '@rezti/dsh-rez-sso'
|
|
11
13
|
- id: rez-token-manager
|
|
12
14
|
name: '@rezti/dsh-rez-token-manager'
|
|
13
15
|
- id: rez-intent
|
package/lib/client.js
CHANGED
|
@@ -1011,7 +1011,21 @@ function ChannelTable({ kind, lang }) {
|
|
|
1011
1011
|
//#region src/changelog.ts
|
|
1012
1012
|
const SUITE_CHANGELOG = [
|
|
1013
1013
|
{
|
|
1014
|
-
version: "0.1.
|
|
1014
|
+
version: "0.1.67",
|
|
1015
|
+
date: "2026-09-13",
|
|
1016
|
+
sections: [{
|
|
1017
|
+
title: {
|
|
1018
|
+
zh: "修 dsh 0.1.5 网页/微信 401",
|
|
1019
|
+
en: "Fix dsh 0.1.5 web/WeChat 401"
|
|
1020
|
+
},
|
|
1021
|
+
items: [{
|
|
1022
|
+
zh: "suite 写入 ~/.dsh/dsh-web.url;wechat@0.1.19 用 ?token= 换 cookie 再 RPC。请装 @0.1.67,重启 dsh web,用终端打印的完整 URL 打开网页。",
|
|
1023
|
+
en: "Suite writes ~/.dsh/dsh-web.url; wechat@0.1.19 exchanges ?token= for a cookie before RPC. Install @0.1.67, restart dsh web, open the full printed URL."
|
|
1024
|
+
}]
|
|
1025
|
+
}]
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
version: "0.1.64",
|
|
1015
1029
|
date: "2026-09-13",
|
|
1016
1030
|
sections: [{
|
|
1017
1031
|
title: {
|
package/lib/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { dirname, join, relative } from "node:path";
|
|
4
|
-
import { REZ_CREDENTIAL_REFS, REZ_DEFAULT_CONNECTIONS, REZ_SYSTEMS, lastMcpStartError, loadRezConnections, mergeConnections, readManagedCredential, secretConfigured, startMcpWhenSecret, writeManagedCredential } from "@rezti/dsh-rez-sso";
|
|
5
4
|
import { chmodSync, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, statSync, writeFileSync } from "node:fs";
|
|
5
|
+
import { REZ_CREDENTIAL_REFS, REZ_DEFAULT_CONNECTIONS, REZ_SYSTEMS, lastMcpStartError, loadRezConnections, mergeConnections, readManagedCredential, secretConfigured, startMcpWhenSecret, writeManagedCredential } from "@rezti/dsh-rez-sso";
|
|
6
6
|
import { spawn, spawnSync } from "node:child_process";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import { DatabaseSync } from "node:sqlite";
|
|
@@ -10185,6 +10185,24 @@ function apply(ctx, config) {
|
|
|
10185
10185
|
}
|
|
10186
10186
|
});
|
|
10187
10187
|
});
|
|
10188
|
+
ctx.registry.inject(["connection"], (inner) => {
|
|
10189
|
+
const writeAuthUrl = () => {
|
|
10190
|
+
try {
|
|
10191
|
+
const port = ctx.webServer.port;
|
|
10192
|
+
const base = `http://127.0.0.1:${String(port)}`;
|
|
10193
|
+
const url = inner.connection.authenticatedUrl(base);
|
|
10194
|
+
const home = process.env.DSH_HOME ?? join(homedir(), ".dsh");
|
|
10195
|
+
mkdirSync(home, { recursive: true });
|
|
10196
|
+
writeFileSync(join(home, "dsh-web.url"), url + "\n", { mode: 384 });
|
|
10197
|
+
} catch (error) {
|
|
10198
|
+
console.warn("[dsh-rez-suite] could not write dsh-web.url:", error);
|
|
10199
|
+
}
|
|
10200
|
+
};
|
|
10201
|
+
writeAuthUrl();
|
|
10202
|
+
const timer = setInterval(writeAuthUrl, 6e4);
|
|
10203
|
+
timer.unref?.();
|
|
10204
|
+
return () => clearInterval(timer);
|
|
10205
|
+
});
|
|
10188
10206
|
sync();
|
|
10189
10207
|
}
|
|
10190
10208
|
function joinTokenDb() {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rezti/dsh-rez-suite",
|
|
3
|
-
"description": "ReZ-TI one-package install for DeepSeek Harness. Update with: dsh plugin --profile web add @rezti/dsh-rez-suite@0.1.
|
|
4
|
-
"version": "0.1.
|
|
3
|
+
"description": "ReZ-TI one-package install for DeepSeek Harness. Update with: dsh plugin --profile web add @rezti/dsh-rez-suite@0.1.67",
|
|
4
|
+
"version": "0.1.67",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": "^22.19.0 || >=24.0.0"
|
|
@@ -38,17 +38,17 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
40
40
|
"@rezti/dsh-rez-comms": "^0.1.0",
|
|
41
|
-
"@rezti/dsh-rez-gsc": "^0.1.
|
|
42
|
-
"@rezti/dsh-rez-ha-bridge": "^0.1.
|
|
41
|
+
"@rezti/dsh-rez-gsc": "^0.1.2",
|
|
42
|
+
"@rezti/dsh-rez-ha-bridge": "^0.1.10",
|
|
43
43
|
"@rezti/dsh-rez-intent": "^0.1.6",
|
|
44
|
-
"@rezti/dsh-rez-nextcloud": "^0.1.
|
|
45
|
-
"@rezti/dsh-rez-odoo": "^0.1.
|
|
44
|
+
"@rezti/dsh-rez-nextcloud": "^0.1.14",
|
|
45
|
+
"@rezti/dsh-rez-odoo": "^0.1.10",
|
|
46
46
|
"@rezti/dsh-rez-publish": "^0.1.0",
|
|
47
47
|
"@rezti/dsh-rez-sso": "^0.1.18",
|
|
48
|
-
"@rezti/dsh-rez-tapd": "^0.1.
|
|
48
|
+
"@rezti/dsh-rez-tapd": "^0.1.2",
|
|
49
49
|
"@rezti/dsh-rez-token-manager": "^0.1.5",
|
|
50
50
|
"@rezti/dsh-rez-vision": "^0.1.4",
|
|
51
|
-
"@rezti/dsh-rez-wechat": "^0.1.
|
|
51
|
+
"@rezti/dsh-rez-wechat": "^0.1.19",
|
|
52
52
|
"@rezti/dsh-web-file-uploader": "0.2.3",
|
|
53
53
|
"@wecom/cli": "1.1.0",
|
|
54
54
|
"zod": "^4.4.3"
|
package/src/changelog.ts
CHANGED
|
@@ -21,7 +21,22 @@ export interface ChangelogRelease {
|
|
|
21
21
|
|
|
22
22
|
export const SUITE_CHANGELOG: readonly ChangelogRelease[] = [
|
|
23
23
|
{
|
|
24
|
-
version: '0.1.
|
|
24
|
+
version: '0.1.67',
|
|
25
|
+
date: '2026-09-13',
|
|
26
|
+
sections: [
|
|
27
|
+
{
|
|
28
|
+
title: { zh: '修 dsh 0.1.5 网页/微信 401', en: 'Fix dsh 0.1.5 web/WeChat 401' },
|
|
29
|
+
items: [
|
|
30
|
+
{
|
|
31
|
+
zh: 'suite 写入 ~/.dsh/dsh-web.url;wechat@0.1.19 用 ?token= 换 cookie 再 RPC。请装 @0.1.67,重启 dsh web,用终端打印的完整 URL 打开网页。',
|
|
32
|
+
en: 'Suite writes ~/.dsh/dsh-web.url; wechat@0.1.19 exchanges ?token= for a cookie before RPC. Install @0.1.67, restart dsh web, open the full printed URL.',
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
version: '0.1.64',
|
|
25
40
|
date: '2026-09-13',
|
|
26
41
|
sections: [
|
|
27
42
|
{
|
package/src/index.ts
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
import type { Context } from '@deepseek-ai/cordis'
|
|
11
11
|
import { homedir } from 'node:os'
|
|
12
12
|
import { join } from 'node:path'
|
|
13
|
+
import { mkdirSync, writeFileSync } from 'node:fs'
|
|
13
14
|
import type {} from '@deepseek-ai/dsh-settings'
|
|
15
|
+
import type {} from '@deepseek-ai/dsh-client-connection'
|
|
14
16
|
import z from '@deepseek-ai/schemastery'
|
|
15
17
|
import type {} from '@deepseek-ai/dsh-host-webserver'
|
|
16
18
|
import type {} from '@deepseek-ai/dsh-system-prompt'
|
|
@@ -258,6 +260,26 @@ export function apply(ctx: Context, config?: RezConfig): void {
|
|
|
258
260
|
})
|
|
259
261
|
})
|
|
260
262
|
|
|
263
|
+
// dsh 0.1.5+ requires a per-process ?token= URL; write it for the WeChat bridge.
|
|
264
|
+
ctx.registry.inject(['connection'], (inner) => {
|
|
265
|
+
const writeAuthUrl = (): void => {
|
|
266
|
+
try {
|
|
267
|
+
const port = ctx.webServer.port
|
|
268
|
+
const base = `http://127.0.0.1:${String(port)}`
|
|
269
|
+
const url = inner.connection.authenticatedUrl(base)
|
|
270
|
+
const home = process.env.DSH_HOME ?? join(homedir(), '.dsh')
|
|
271
|
+
mkdirSync(home, { recursive: true })
|
|
272
|
+
writeFileSync(join(home, 'dsh-web.url'), url + '\n', { mode: 0o600 })
|
|
273
|
+
} catch (error) {
|
|
274
|
+
console.warn('[dsh-rez-suite] could not write dsh-web.url:', error)
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
writeAuthUrl()
|
|
278
|
+
const timer = setInterval(writeAuthUrl, 60_000)
|
|
279
|
+
timer.unref?.()
|
|
280
|
+
return () => clearInterval(timer)
|
|
281
|
+
})
|
|
282
|
+
|
|
261
283
|
sync()
|
|
262
284
|
}
|
|
263
285
|
|