Node 26.0.0 removed --experimental-transform-types, so the native source-launch chain cannot start anywhere on that line, and strip-only mode rejects the vendored syntax (parameter properties, decorators, runtime enums/namespaces). Switch bin/dsh, the root dsh/demo:tui/ demo:web scripts, and the Code Mode TUI overlay to node --import tsx/esm: one launch vector across the whole engines range, ~0.4s faster than the full tsx default (the CJS hook stays off; the graph is ESM-only). Delete scripts/tspath-loader.ts and apps/cli/src/tsconfig-paths-loader.ts: tsx owns both transformation and tsconfig paths projection. Add dsh-source-launch-smoke to the node-compat gates so the 22.19/26 matrix executes the real launch vector; no CI job did, which is how the Node 26 breakage shipped silently. Supersedes the native-TypeScript-source-launch Agent Note (new note records the profiling evidence and rejected alternatives).
29 lines
988 B
JavaScript
29 lines
988 B
JavaScript
/**
|
|
* Boot the TUI or ACP Code Mode overlay, defaulting to TUI. Each overlay
|
|
* includes its base example, selects Code Mode, and adds the worker runtime.
|
|
* All require a DeepSeek API key; unsupported arguments fail with usage.
|
|
*/
|
|
import { spawn } from 'node:child_process'
|
|
|
|
// Each UI's node invocation matches its base demo script plus the overlay config.
|
|
const UIS = new Map([
|
|
['tui', [
|
|
'--import',
|
|
'tsx/esm',
|
|
'apps/cli/src/bin.ts',
|
|
'--config',
|
|
'examples/tui-agent/code-mode.cordis.yml',
|
|
]],
|
|
['acp', ['--import', 'tsx', 'packages/examples/acp-demo/src/bin.ts', '--config', 'examples/acp-agent/code-mode.cordis.yml']],
|
|
])
|
|
|
|
const ui = process.argv[2] ?? 'tui'
|
|
const args = UIS.get(ui)
|
|
if (!args || process.argv.length > 3) {
|
|
console.error('usage: pnpm run demo:code-mode [tui|acp]')
|
|
process.exit(2)
|
|
}
|
|
|
|
const child = spawn(process.execPath, args, { stdio: 'inherit' })
|
|
child.on('exit', (code, signal) => { process.exit(signal !== null ? 1 : code ?? 1) })
|