@hyzyn/dsh-tty 0.32.4 → 0.33.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.en.md +63 -72
- package/README.md +55 -65
- package/lib/index.d.ts +11 -0
- package/lib/index.js +507 -447
- package/lib/index.js.map +1 -1
- package/lib/tier-restrict.d.ts +12 -0
- package/lib/tier-restrict.js +13 -0
- package/lib/tier-restrict.js.map +1 -0
- package/package.json +4 -4
- package/scripts/integration.mjs +15 -3
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 实现已上收到 kit(`packages/kit/src/tier-restrict.ts`);本文件仅为兼容转发,维护者确认后可删。
|
|
3
|
+
*
|
|
4
|
+
* 为什么留空壳而不是直接删:**删除 / 改名任何文件属「先问」项**(AGENTS.md § 不可逆的边界),
|
|
5
|
+
* 这一刀只做「搬家 + 多一个消费者」,不该顺手把删文件塞进来。
|
|
6
|
+
*
|
|
7
|
+
* tty 自己的接线与用例已改为直接引 `@hyzyn/dsh-kit`:
|
|
8
|
+
* - `src/index.ts` 的 `attachTierRestrict`;
|
|
9
|
+
* - `test/restrict-probe.test.ts` 的 `shouldRestrictForTier` / `tierRestrictedNames`。
|
|
10
|
+
* 旧路径 `../src/tier-restrict.js` 由这里继续提供同一组导出(`export *` 转发到 kit 的公开面)。
|
|
11
|
+
*/
|
|
12
|
+
export * from '@hyzyn/dsh-kit';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 实现已上收到 kit(`packages/kit/src/tier-restrict.ts`);本文件仅为兼容转发,维护者确认后可删。
|
|
3
|
+
*
|
|
4
|
+
* 为什么留空壳而不是直接删:**删除 / 改名任何文件属「先问」项**(AGENTS.md § 不可逆的边界),
|
|
5
|
+
* 这一刀只做「搬家 + 多一个消费者」,不该顺手把删文件塞进来。
|
|
6
|
+
*
|
|
7
|
+
* tty 自己的接线与用例已改为直接引 `@hyzyn/dsh-kit`:
|
|
8
|
+
* - `src/index.ts` 的 `attachTierRestrict`;
|
|
9
|
+
* - `test/restrict-probe.test.ts` 的 `shouldRestrictForTier` / `tierRestrictedNames`。
|
|
10
|
+
* 旧路径 `../src/tier-restrict.js` 由这里继续提供同一组导出(`export *` 转发到 kit 的公开面)。
|
|
11
|
+
*/
|
|
12
|
+
export * from '@hyzyn/dsh-kit';
|
|
13
|
+
//# sourceMappingURL=tier-restrict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-restrict.js","sourceRoot":"","sources":["../src/tier-restrict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,cAAc,gBAAgB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyzyn/dsh-tty",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0",
|
|
4
4
|
"description": "DSH Web GUI 的终端面板插件:侧边栏「终端」提供 xterm.js + PTY 全交互终端与 ssh2 原生 SSH 远程连接(连接簿、主机指纹 TOFU、跳板机),支持 tmux 会话持久化、SFTP 文件传输、端口转发与服务器状态条,并向其他插件开放 ttyTerminal / ttyPanel / ttyConnbar 扩展点;Windows 宿主同样可用。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
@@ -46,14 +46,14 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@deepseek-ai/schemastery": "^3.18.4",
|
|
49
|
-
"@hyzyn/dsh-kit": "0.
|
|
49
|
+
"@hyzyn/dsh-kit": "0.7.3",
|
|
50
50
|
"@xterm/headless": "^5.5.0",
|
|
51
51
|
"ssh2": "^1.17.0",
|
|
52
52
|
"ws": "^8.18.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@deepseek-ai/dsh": "^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.2",
|
|
56
|
-
"@deepseek-ai/dsh-tools": "^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.2"
|
|
55
|
+
"@deepseek-ai/dsh": "^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.2 || ^0.2.1-rc.3",
|
|
56
|
+
"@deepseek-ai/dsh-tools": "^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || ^0.2.1-alpha.1 || ^0.2.1-alpha.2 || ^0.2.1-alpha.5 || ^0.2.1-rc.1 || ^0.2.1-rc.2 || ^0.2.1-rc.3"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@deepseek-ai/cordis": "^4.0.4",
|
package/scripts/integration.mjs
CHANGED
|
@@ -1546,6 +1546,16 @@ async function run() {
|
|
|
1546
1546
|
const alive = openSession(port)
|
|
1547
1547
|
await alive.open()
|
|
1548
1548
|
|
|
1549
|
+
/*
|
|
1550
|
+
* 「工具面回归」不能写死个数:0.33.0 起注册是**按配置条件**的(`sftp_*` 要有连接簿条目、
|
|
1551
|
+
* `tunnel_*` 要有隧道)。本脚本跑到 B29 时 B20 / B23 已经把 tunnels 与 sshHosts 清空,
|
|
1552
|
+
* 此刻的注册面就是基础那 9 个——写死 19 等于让「禁用/启用热生效」这条用例去赌前面的用例
|
|
1553
|
+
* 留下了什么配置(2026-10-25 的 CI 实测:报 `当前 9`,而插件行为完全正确)。
|
|
1554
|
+
*
|
|
1555
|
+
* 改成**名字集合相等**:与配置无关,而且比数字更严——漏一个、多一个都会红。
|
|
1556
|
+
*/
|
|
1557
|
+
const surfaceBefore = toolDefs.map((definition) => definition.name).sort()
|
|
1558
|
+
|
|
1549
1559
|
const off = await configPost({ enabled: false })
|
|
1550
1560
|
if (off.status === 200 && off.body.config?.enabled === false) pass('B29a POST /config enabled=false 生效')
|
|
1551
1561
|
else fail('B29a POST /config enabled=false 生效', `status=${String(off.status)}`)
|
|
@@ -1585,9 +1595,11 @@ async function run() {
|
|
|
1585
1595
|
if (on.status === 200 && on.body.config?.enabled === true) pass('B29h 重新启用生效')
|
|
1586
1596
|
else fail('B29h 重新启用生效', `status=${String(on.status)}`)
|
|
1587
1597
|
await sleep(100)
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1598
|
+
const surfaceAfter = toolDefs.map((definition) => definition.name).sort()
|
|
1599
|
+
const missing = surfaceBefore.filter((name) => !surfaceAfter.includes(name))
|
|
1600
|
+
const extra = surfaceAfter.filter((name) => !surfaceBefore.includes(name))
|
|
1601
|
+
if (missing.length === 0 && extra.length === 0) pass(`B29i 重新启用后 agent 工具逐个回归(${String(surfaceAfter.length)} 个,与禁用前一致)`)
|
|
1602
|
+
else fail('B29i 重新启用后 agent 工具逐个回归', `禁用前 ${String(surfaceBefore.length)} 个 / 恢复后 ${String(surfaceAfter.length)} 个;缺=${missing.join(',') || '(无)'} 多=${extra.join(',') || '(无)'}`)
|
|
1591
1603
|
if (promptParts.length === 2) pass('B29j 重新启用后公告与动态快照恢复')
|
|
1592
1604
|
else fail('B29j 重新启用后公告与动态快照恢复', `当前 ${String(promptParts.length)}`)
|
|
1593
1605
|
const again = openSession(port)
|