fix(examples): restore the tui-demo pre-boot TTY refusal and stabilize the PTY smoke
The built-bin fail-loud test needs the TTY refusal before Loader boot (a compose-time throw is logged per-entry, not rethrown); the PTY driver drops COLORTERM so a developer's truecolor shell cannot flip the banner to the gradient path mid-assertion; the scripted fixture persists raw JSONL so the smoke's system-prompt inspection can read the log.
This commit is contained in:
@@ -21,6 +21,9 @@
|
|||||||
provider: tui-scripted
|
provider: tui-scripted
|
||||||
model: tui-scripted-model
|
model: tui-scripted-model
|
||||||
persistenceRoot: './.sessions'
|
persistenceRoot: './.sessions'
|
||||||
|
# The smoke's log inspection reads plain `.jsonl`; keep the scripted
|
||||||
|
# fixture uncompressed like the other snapshot-facing configs.
|
||||||
|
persistenceCompression: none
|
||||||
workspaceContext:
|
workspaceContext:
|
||||||
maxBytes: 65536
|
maxBytes: 65536
|
||||||
welcome: 'scripted TUI ready.'
|
welcome: 'scripted TUI ready.'
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ env.update({
|
|||||||
"COLUMNS": "100",
|
"COLUMNS": "100",
|
||||||
"LINES": "30",
|
"LINES": "30",
|
||||||
})
|
})
|
||||||
|
# Deterministic banner: a developer shell's COLORTERM=truecolor would switch the
|
||||||
|
# banner to the per-letter gradient (one SGR per letter), breaking the literal
|
||||||
|
# DEEPSEEK assertions. The gradient path has its own unit and snapshot coverage.
|
||||||
|
env.pop("COLORTERM", None)
|
||||||
if resume_session_id:
|
if resume_session_id:
|
||||||
env["RESUME_SESSION_ID"] = resume_session_id
|
env["RESUME_SESSION_ID"] = resume_session_id
|
||||||
pid, fd = pty.fork()
|
pid, fd = pty.fork()
|
||||||
|
|||||||
@@ -11,8 +11,16 @@ import { boot, installFailLoud, loadEnv, resolveConfigPath } from '@deepseek-ai/
|
|||||||
const NAME = 'dsh-tui-demo'
|
const NAME = 'dsh-tui-demo'
|
||||||
|
|
||||||
/* v8 ignore start -- thin self-executing composition over the unit-tested
|
/* v8 ignore start -- thin self-executing composition over the unit-tested
|
||||||
dsh-app-boot helpers; exercised end-to-end by the keyless Loader-path and
|
dsh-app-boot helpers; exercised end-to-end by the tui-agent PTY smoke and
|
||||||
built-bin smokes */
|
the built-bin fail-loud smoke */
|
||||||
|
// Refuse pipes BEFORE booting: a compose-time throw inside the Loader tree is
|
||||||
|
// logged per-entry rather than rethrown, so a piped launch would otherwise
|
||||||
|
// settle into an idle UI-less process instead of exiting nonzero.
|
||||||
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
||||||
|
process.stderr.write(`${NAME}: the TUI requires stdin and stdout to be interactive TTYs; `
|
||||||
|
+ 'use the one-shot dsh-cli-demo bin for pipes and automation\n')
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
installFailLoud(NAME)
|
installFailLoud(NAME)
|
||||||
loadEnv(NAME)
|
loadEnv(NAME)
|
||||||
await boot(NAME, resolveConfigPath(process.argv[2] ?? './cordis.yml', undefined))
|
await boot(NAME, resolveConfigPath(process.argv[2] ?? './cordis.yml', undefined))
|
||||||
|
|||||||
Reference in New Issue
Block a user