@hyzyn/dsh-tty 0.19.3 → 0.20.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 +47 -7
- package/README.md +38 -8
- package/client.js +155 -38
- package/lib/index.d.ts +80 -0
- package/lib/index.js +431 -91
- package/lib/index.js.map +1 -1
- package/lib/tunnels.js +7 -0
- package/lib/tunnels.js.map +1 -1
- package/package.json +1 -1
- package/scripts/integration.mjs +171 -14
- package/scripts/preview/harness.js +295 -0
- package/scripts/preview/mock-host.js +6 -0
- package/scripts/preview.mjs +3 -0
package/lib/tunnels.js
CHANGED
|
@@ -362,6 +362,13 @@ export class TunnelManager {
|
|
|
362
362
|
}
|
|
363
363
|
/** 失败后按指数退避重连(1s→15s 封顶);重连期间保持 error 态供 UI 展示原因。 */
|
|
364
364
|
scheduleRetry(rt, message) {
|
|
365
|
+
// fatal(本地监听失败 / 连接簿条目缺失)不走重试:这两类故障重试一百次也是
|
|
366
|
+
// 同一个结果,而重试路径会 (a) 把 fatal 清回 false、(b) 经 connectTunnel 把
|
|
367
|
+
// 状态刷成 connecting —— 于是「本地端口压根没监听成功」被粉饰成「正在连接」,
|
|
368
|
+
// 且原来那条错误信息看起来像临时性的(D53)。保持 error 态与原因,等用户修配置
|
|
369
|
+
// (reconcile 收到新规格会重建隧道)。
|
|
370
|
+
if (rt.fatal)
|
|
371
|
+
return;
|
|
365
372
|
rt.error = message;
|
|
366
373
|
rt.state = 'error';
|
|
367
374
|
rt.fatal = false;
|
package/lib/tunnels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnels.js","sourceRoot":"","sources":["../src/tunnels.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tunnels.js","sourceRoot":"","sources":["../src/tunnels.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyzyn/dsh-tty",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "DSH Web GUI 的终端面板插件:侧边栏「终端」大弹窗,xterm.js + PTY 全交互终端(路线1),ssh2 原生 SSH 远程连接(方案 C),tmux 会话持久化(0.10.0),连接栏扩展点 ttyConnbar(0.13.0)、终端服务 ttyTerminal(0.14.0 open / 0.15.0 mount 就地嵌入)、面板内挂载位 ttyPanel(0.16.0 右侧 dock)、服务器状态条(0.17.0:按标签可见性采端主机 CPU / 内存 / 磁盘 / 在线时长 / TCP / 网速 / 温度,SSH 走同连接的非 PTY exec channel、本地走 os/proc,best-effort、不碰 PTY 流)、连接密码存入官方凭据存储(0.18.0:字段里只留 env: 引用、引用名按资源身份派生、候选来自凭据存储 ∪ 连接簿;设置卡片的连接编辑与连接对话框共用同一套表单)、Windows 宿主支持(0.18.1:默认 shell = %COMSPEC%、不做 POSIX 包装层、PowerShell 走 -NoLogo/-Command;shell 集成 / tmux / 状态条三项在 Windows 本地不适用,README 有完整边界)。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
package/scripts/integration.mjs
CHANGED
|
@@ -53,7 +53,7 @@ import path from 'node:path'
|
|
|
53
53
|
import { name, inject, apply } from '../lib/index.js'
|
|
54
54
|
import { parseSshConfig } from '../lib/ssh-config.js'
|
|
55
55
|
import { parseKnownHosts } from '../lib/known-hosts.js'
|
|
56
|
-
import { assertSupportedJsonSchema } from '@deepseek-ai/dsh-tools'
|
|
56
|
+
import { assertSupportedJsonSchema, validateJsonSchemaValue } from '@deepseek-ai/dsh-tools'
|
|
57
57
|
import { startSftpSshd, TEST_USER, TEST_PASSWORD } from './lib/test-sshd.mjs'
|
|
58
58
|
|
|
59
59
|
|
|
@@ -139,6 +139,8 @@ async function run() {
|
|
|
139
139
|
// 最小 settings 服务 stub:让插件的 settings 注入回调触发,并可手动派发
|
|
140
140
|
// settings/updated 事件(与 dsh-settings 的 dispatch 方式一致)来测配置热生效。
|
|
141
141
|
const toolDefs = []
|
|
142
|
+
/** 输出契约违约(§B33:返回值与声明的 output.schema 不符,真实宿主会直接判工具错)。 */
|
|
143
|
+
const outputViolations = []
|
|
142
144
|
const promptParts = []
|
|
143
145
|
const stubFiber = app.plugin({
|
|
144
146
|
name: 'settings-stub',
|
|
@@ -146,6 +148,32 @@ async function run() {
|
|
|
146
148
|
ctx.provide('settings', { register: () => ({ get: () => ({}), update: async () => {} }) })
|
|
147
149
|
ctx.provide('tools', {
|
|
148
150
|
register: (definition) => {
|
|
151
|
+
// 输出契约看门狗(§B33):把 execute 的返回值按**声明的 output.schema**
|
|
152
|
+
// 校验一遍,把违约记进 outputViolations。
|
|
153
|
+
//
|
|
154
|
+
// 为什么在这里做:宿主真的会校验(dsh-tools 用 additionalProperties:false
|
|
155
|
+
// 判非法输出,工具直接返回 Error),而此前的 B12e 只校验「schema 形状是否
|
|
156
|
+
// 受支持」,校验不了「返回值是否符合 schema」——tty_list 加 owner 字段时
|
|
157
|
+
// 漏改 schema 就是这样溜过去的:schema 形状合法、返回值多一个字段,
|
|
158
|
+
// 只有在真实宿主里调用才炸。
|
|
159
|
+
const origin = definition.execute
|
|
160
|
+
if (typeof origin === 'function') {
|
|
161
|
+
definition.execute = async (args, ctx) => {
|
|
162
|
+
const value = await origin(args, ctx)
|
|
163
|
+
try {
|
|
164
|
+
const schema = definition.output?.schema
|
|
165
|
+
if (schema !== undefined) {
|
|
166
|
+
const violations = validateJsonSchemaValue(schema, value)
|
|
167
|
+
if (Array.isArray(violations) && violations.length > 0) {
|
|
168
|
+
outputViolations.push(`${definition.name}: ${violations.join('; ')}`)
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
} catch (error) {
|
|
172
|
+
outputViolations.push(`${definition.name}: 校验抛错 ${String(error && error.message ? error.message : error)}`)
|
|
173
|
+
}
|
|
174
|
+
return value
|
|
175
|
+
}
|
|
176
|
+
}
|
|
149
177
|
toolDefs.push(definition)
|
|
150
178
|
// dispose 必须真摘除:B29 禁用场景要断言「工具全部撤下」
|
|
151
179
|
return () => {
|
|
@@ -463,6 +491,26 @@ async function run() {
|
|
|
463
491
|
}
|
|
464
492
|
if (captured !== null && typeof captured.tail === 'string' && captured.tail.includes('CAPTURE_OK')) pass('B12c tty_capture 读到会话输出')
|
|
465
493
|
else fail('B12c tty_capture 读到会话输出', JSON.stringify(captured === null ? null : captured.tail).slice(0, 120))
|
|
494
|
+
// capture{last:true}:走「上一条已完成命令 + 退出码」分支。这条分支的返回值
|
|
495
|
+
// 带可选 exitCode(曾用 `?? undefined` 留下 undefined 键 → 宿主输出校验判错,
|
|
496
|
+
// 见 B33),此前 B12 只用 lines 路径、恰好绕过了它。这里跑一条会失败的命令,
|
|
497
|
+
// 退出码必然存在,同时也把该分支送进输出契约看门狗。
|
|
498
|
+
let lastResult = null
|
|
499
|
+
for (let i = 0; i < 16; i++) {
|
|
500
|
+
await sleep(250)
|
|
501
|
+
try {
|
|
502
|
+
lastResult = await capture.execute({ sid: 't12', last: true })
|
|
503
|
+
} catch {
|
|
504
|
+
lastResult = null // 命令在途时抛错(inProgress 语义),继续等
|
|
505
|
+
continue
|
|
506
|
+
}
|
|
507
|
+
if (lastResult !== null && lastResult.inProgress !== true) break
|
|
508
|
+
}
|
|
509
|
+
if (lastResult !== null && lastResult.inProgress !== true && typeof lastResult.tail === 'string' && lastResult.tail.includes('CAPTURE_OK')) {
|
|
510
|
+
pass('B12f tty_capture{last:true} 拿到上一条命令输出与退出码')
|
|
511
|
+
} else {
|
|
512
|
+
fail('B12f tty_capture{last:true} 拿到上一条命令输出与退出码', JSON.stringify(lastResult).slice(0, 140))
|
|
513
|
+
}
|
|
466
514
|
let rejected = false
|
|
467
515
|
try {
|
|
468
516
|
await capture.execute({ sid: 'ghost-session' })
|
|
@@ -1259,14 +1307,23 @@ async function run() {
|
|
|
1259
1307
|
else fail('B26c 恢复会话 kill 后 tmux 会话清理', JSON.stringify(listedFinal))
|
|
1260
1308
|
w2.client.close()
|
|
1261
1309
|
|
|
1262
|
-
// B26d: attach
|
|
1263
|
-
|
|
1310
|
+
// B26d: attach 不回放宿主环形缓冲。
|
|
1311
|
+
//
|
|
1312
|
+
// 判据(D51 修订):**不能**数「marker 在屏幕上出现几次」——attach 天然有
|
|
1313
|
+
// 两个重画来源(tmux `-A` 自身 + 宿主 refresh-client),偶尔都落帧就是 2 次,
|
|
1314
|
+
// 而那是观感问题、不是本用例要锁的回归;旧断言因此在真实 PTY 下偶发假红。
|
|
1315
|
+
//
|
|
1316
|
+
// 真正要锁的是「回放 vs 不回放」。用一个滚出可见屏的 marker 区分:
|
|
1317
|
+
// · 回放宿主 256KB 环形缓冲 → 连历史一起送到 → marker 出现(回归)
|
|
1318
|
+
// · 跳过回放、只由 tmux 重画可见屏 → 历史不在屏上 → marker 不出现(正确)
|
|
1319
|
+
// 尾部再打一个 B26TAIL 留在屏上,用它证明「确实重画过了」,避免把
|
|
1320
|
+
// 「什么都没收到」误判成通过。
|
|
1264
1321
|
const w3 = openSession(port)
|
|
1265
1322
|
await w3.open()
|
|
1266
1323
|
w3.client.send(JSON.stringify({ t: 'spawn', sid: 'b26d', cols: 80, rows: 24, persist: true, persistName: 'b26refresh' }))
|
|
1267
1324
|
await w3.waitFor(() => w3.state.ready, 10000, 'b26d ready')
|
|
1268
|
-
w3.client.send(JSON.stringify({ t: 'input', sid: 'b26d', d: 'printf "B26REFRESH-%s\\n" ok\n' }))
|
|
1269
|
-
await w3.waitFor(() => /
|
|
1325
|
+
w3.client.send(JSON.stringify({ t: 'input', sid: 'b26d', d: 'printf "B26REFRESH-%s\\n" ok; for i in $(seq 1 40); do echo "B26FILLER-$i"; done; printf "B26TAIL-%s\\n" ok\n' }))
|
|
1326
|
+
await w3.waitFor(() => /B26TAIL-ok/.test(w3.state.text), 10000, 'b26d 输出(marker 已滚出可见屏)')
|
|
1270
1327
|
await sleep(600) // 等 D 标记与重画尘埃落定
|
|
1271
1328
|
w3.client.close() // 异常断开 → 孤儿(grace=1s,需在回收前尽快 attach)
|
|
1272
1329
|
await sleep(200)
|
|
@@ -1274,16 +1331,20 @@ async function run() {
|
|
|
1274
1331
|
await w4.open()
|
|
1275
1332
|
w4.client.send(JSON.stringify({ t: 'attach', sid: 'b26d' }))
|
|
1276
1333
|
await w4.waitFor(() => w4.state.ready, 10000, 'b26d attach ready')
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1334
|
+
// 等 tmux 把可见屏重画出来(尾部 marker 可见 = 重画确实发生了)
|
|
1335
|
+
await w4.waitFor(() => /B26TAIL-ok/.test(w4.state.text), 10000, 'refresh-client 重画')
|
|
1336
|
+
await sleep(600) // 重画可能多帧落定:等稳定后再判定
|
|
1337
|
+
const replayed = /B26REFRESH-ok/.test(w4.state.text)
|
|
1338
|
+
if (!replayed) pass('B26d attach 跳过缓冲回放(仅 tmux 重画可见屏,无重影/幽灵滚动条)')
|
|
1339
|
+
else fail('B26d attach 跳过缓冲回放(仅 tmux 重画可见屏,无重影/幽灵滚动条)', 'attach 后收到了已滚出屏的历史(宿主环形缓冲被回放)')
|
|
1340
|
+
// refresh 帧:reset 后请宿主 refresh-client 重画(不碰尺寸)。
|
|
1341
|
+
// 判据用屏上可见的尾部 marker(B26REFRESH 已滚出屏,见上一条),且
|
|
1342
|
+
// 只要求「重画后仍可见」——不数次数(多来源重画是正常观感,见 D51)。
|
|
1282
1343
|
w4.client.send(JSON.stringify({ t: 'refresh', sid: 'b26d' }))
|
|
1283
1344
|
await sleep(600)
|
|
1284
|
-
const refreshedOk = (w4.state.text
|
|
1345
|
+
const refreshedOk = /B26TAIL-ok/.test(w4.state.text) && w4.state.errors.length === 0
|
|
1285
1346
|
if (refreshedOk) pass('B26e refresh 帧(refresh-client 重画,无错误)')
|
|
1286
|
-
else fail('B26e refresh 帧(refresh-client 重画,无错误)', `errors=${JSON.stringify(w4.state.errors)}`)
|
|
1347
|
+
else fail('B26e refresh 帧(refresh-client 重画,无错误)', `errors=${JSON.stringify(w4.state.errors)} tailVisible=${String(/B26TAIL-ok/.test(w4.state.text))}`)
|
|
1287
1348
|
w4.client.send(JSON.stringify({ t: 'kill', sid: 'b26d' }))
|
|
1288
1349
|
await w4.waitFor(() => w4.state.exited !== null, 10000, 'b26d exit')
|
|
1289
1350
|
w4.client.close()
|
|
@@ -1447,8 +1508,8 @@ async function run() {
|
|
|
1447
1508
|
if (on.status === 200 && on.body.config?.enabled === true) pass('B29h 重新启用生效')
|
|
1448
1509
|
else fail('B29h 重新启用生效', `status=${String(on.status)}`)
|
|
1449
1510
|
await sleep(100)
|
|
1450
|
-
if (toolDefs.length ===
|
|
1451
|
-
else fail('B29i 重新启用后
|
|
1511
|
+
if (toolDefs.length === 16) pass('B29i 重新启用后 16 个 agent 工具回归')
|
|
1512
|
+
else fail('B29i 重新启用后 16 个 agent 工具回归', `当前 ${String(toolDefs.length)}`)
|
|
1452
1513
|
if (promptParts.length === 2) pass('B29j 重新启用后公告与动态快照恢复')
|
|
1453
1514
|
else fail('B29j 重新启用后公告与动态快照恢复', `当前 ${String(promptParts.length)}`)
|
|
1454
1515
|
const again = openSession(port)
|
|
@@ -1679,6 +1740,102 @@ async function run() {
|
|
|
1679
1740
|
await postConfig({ sshHosts: [] })
|
|
1680
1741
|
}
|
|
1681
1742
|
|
|
1743
|
+
// B32: agent 自开终端(0.20.0 tty_open / tty_close / tty_stats)
|
|
1744
|
+
//
|
|
1745
|
+
// 锁的是「闭环」这件事:agent 能自己开一个会话(不必用户在面板里点)、
|
|
1746
|
+
// 长了长驻进程能读到就绪信号、用完能自己关;同时锁住两条边界:
|
|
1747
|
+
// ① agent 开的会话不被孤儿回收器当孤儿收掉(否则长驻任务一开就没);
|
|
1748
|
+
// ② tty_close 拒绝关用户开的会话(agent 不越权结束用户正在用的标签)。
|
|
1749
|
+
console.log('\n[30] agent 自开终端')
|
|
1750
|
+
{
|
|
1751
|
+
const open = toolDefs.find((d) => d.name === 'tty_open')
|
|
1752
|
+
const close = toolDefs.find((d) => d.name === 'tty_close')
|
|
1753
|
+
const statsT = toolDefs.find((d) => d.name === 'tty_stats')
|
|
1754
|
+
const list = toolDefs.find((d) => d.name === 'tty_list')
|
|
1755
|
+
const expect = toolDefs.find((d) => d.name === 'tty_expect')
|
|
1756
|
+
if (open === undefined || close === undefined || statsT === undefined) {
|
|
1757
|
+
fail('B32 agent 自开终端工具集', '缺工具: ' + toolDefs.map((d) => d.name).join(','))
|
|
1758
|
+
} else {
|
|
1759
|
+
// 面板连接先开着:验证 agent 开的会话会被推到面板(用户可见)
|
|
1760
|
+
const panel = openSession(port)
|
|
1761
|
+
await panel.open()
|
|
1762
|
+
|
|
1763
|
+
const opened = await open.execute({ cwd: '/tmp' })
|
|
1764
|
+
const sid = opened.sid
|
|
1765
|
+
if (typeof sid === 'string' && sid !== '') pass('B32a tty_open 开出会话')
|
|
1766
|
+
else fail('B32a tty_open 开出会话', JSON.stringify(opened))
|
|
1767
|
+
|
|
1768
|
+
// owner=agent 出现在 tty_list 里
|
|
1769
|
+
const listed = await list.execute({})
|
|
1770
|
+
const mine = (listed.sessions ?? []).find((x) => x.sid === sid)
|
|
1771
|
+
if (mine !== undefined && mine.owner === 'agent') pass('B32b tty_list 标出 owner=agent')
|
|
1772
|
+
else fail('B32b tty_list 标出 owner=agent', JSON.stringify(mine))
|
|
1773
|
+
|
|
1774
|
+
// 面板可见(sessions 帧广播带 owner=agent,且 attachable)
|
|
1775
|
+
let visible = false
|
|
1776
|
+
for (let i = 0; i < 20; i++) {
|
|
1777
|
+
await sleep(150)
|
|
1778
|
+
const frame = panel.state.frames.filter((f) => f.t === 'sessions').at(-1)
|
|
1779
|
+
const entry = (frame?.list ?? []).find((x) => x.sid === sid)
|
|
1780
|
+
if (entry !== undefined && entry.owner === 'agent' && entry.attachable === true) { visible = true; break }
|
|
1781
|
+
}
|
|
1782
|
+
if (visible) pass('B32c agent 开的会话对面板可见(owner=agent + attachable)')
|
|
1783
|
+
else fail('B32c agent 开的会话对面板可见', '面板没收到该会话的 sessions 帧')
|
|
1784
|
+
|
|
1785
|
+
// 长驻任务闭环:起一个「先等一拍再打印就绪」的进程,用 tty_expect 等它
|
|
1786
|
+
const send = toolDefs.find((d) => d.name === 'tty_send')
|
|
1787
|
+
await send.execute({ sid, data: 'sleep 1; printf "B32READY-%s\\n" go\n' })
|
|
1788
|
+
const waited = await expect.execute({ sid, pattern: 'B32READY-go', timeoutSec: 15 })
|
|
1789
|
+
if (waited.matched === true) pass('B32d tty_open + tty_expect 长任务就绪闭环')
|
|
1790
|
+
else fail('B32d tty_open + tty_expect 长任务就绪闭环', JSON.stringify(waited).slice(0, 120))
|
|
1791
|
+
|
|
1792
|
+
// 用户开一个会话,验证 agent 关不掉它
|
|
1793
|
+
panel.client.send(JSON.stringify({ t: 'spawn', sid: 'b32user', cols: 80, rows: 24 }))
|
|
1794
|
+
await panel.waitFor(() => panel.state.ready, 10000, 'b32user ready')
|
|
1795
|
+
let refused = false
|
|
1796
|
+
try {
|
|
1797
|
+
await close.execute({ sid: 'b32user' })
|
|
1798
|
+
} catch {
|
|
1799
|
+
refused = true
|
|
1800
|
+
}
|
|
1801
|
+
const stillAlive = (await list.execute({})).sessions.some((x) => x.sid === 'b32user')
|
|
1802
|
+
if (refused && stillAlive) pass('B32e tty_close 拒绝关用户开的会话(不越权)')
|
|
1803
|
+
else fail('B32e tty_close 拒绝关用户开的会话', `refused=${String(refused)} alive=${String(stillAlive)}`)
|
|
1804
|
+
|
|
1805
|
+
// agent 关自己的会话
|
|
1806
|
+
const closed = await close.execute({ sid })
|
|
1807
|
+
if (closed.ok === true) pass('B32f tty_close 关掉 agent 自己的会话')
|
|
1808
|
+
else fail('B32f tty_close 关掉 agent 自己的会话', JSON.stringify(closed))
|
|
1809
|
+
await sleep(300)
|
|
1810
|
+
const gone = !(await list.execute({})).sessions.some((x) => x.sid === sid)
|
|
1811
|
+
if (gone) pass('B32g 关闭后会话从清单消失')
|
|
1812
|
+
else fail('B32g 关闭后会话从清单消失', '仍在 sessions 里')
|
|
1813
|
+
|
|
1814
|
+
// tty_stats:本地会话取宿主机指标(本机是 macOS,部分字段可采;只要有数据即通过)
|
|
1815
|
+
const stat = await statsT.execute({ sid: 'b32user' })
|
|
1816
|
+
if (stat.available === true && (typeof stat.memPct === 'number' || typeof stat.cpuPct === 'number')) {
|
|
1817
|
+
pass('B32h tty_stats 取到本机指标')
|
|
1818
|
+
} else {
|
|
1819
|
+
fail('B32h tty_stats 取到本机指标', JSON.stringify(stat).slice(0, 160))
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
panel.client.send(JSON.stringify({ t: 'kill', sid: 'b32user' }))
|
|
1823
|
+
await panel.waitFor(() => panel.state.exited !== null, 10000, 'b32user exit')
|
|
1824
|
+
panel.client.close()
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
|
|
1828
|
+
// B33: 输出契约(所有已调用工具的真实返回值都符合各自声明的 output.schema)
|
|
1829
|
+
//
|
|
1830
|
+
// 这一条是 §B12e 的补充:B12e 只证明 schema 形状受支持,证明不了返回值合法。
|
|
1831
|
+
// 真实宿主对输出做 additionalProperties:false 校验,违约会直接把工具调用变成
|
|
1832
|
+
// Error(tty_list 加 owner 漏改 schema 即此)。
|
|
1833
|
+
console.log('\n[31] 输出契约')
|
|
1834
|
+
{
|
|
1835
|
+
if (outputViolations.length === 0) pass('B33 工具返回值符合声明的 output.schema')
|
|
1836
|
+
else fail('B33 工具返回值符合声明的 output.schema', outputViolations.slice(0, 3).join(' | '))
|
|
1837
|
+
}
|
|
1838
|
+
|
|
1682
1839
|
const failed = RESULTS.filter(([kind]) => kind === 'FAIL')
|
|
1683
1840
|
console.log(`\n==== 集成测试:${RESULTS.length - failed.length}/${RESULTS.length} PASS ====`)
|
|
1684
1841
|
for (const [kind, name, detail] of RESULTS) console.log(` ${kind === 'PASS' ? '✔' : '✘'} ${name}${detail ? ' — ' + detail : ''}`)
|