@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.
@@ -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.32.4",
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.6.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",
@@ -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
- // 0.25.0:tunnel_start / tunnel_stop 加入后是 19 个(0.23.0 加 tty_run 时是 17 个)
1589
- if (toolDefs.length === 19) pass('B29i 重新启用后 19 个 agent 工具回归')
1590
- else fail('B29i 重新启用后 19 个 agent 工具回归', `当前 ${String(toolDefs.length)}`)
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)