fix(subprocess): contain escaped descendants with native owners

This commit is contained in:
pku-xht
2026-08-28 18:15:49 +08:00
parent c302bedc3a
commit a95f0b368f
98 changed files with 3450 additions and 4183 deletions
+24 -35
View File
@@ -11,8 +11,6 @@ import { fileURLToPath } from 'node:url'
import { loadLayeredEnv } from '@deepseek-ai/dsh-app-boot'
import { parseDshArgs } from './args.ts'
const PACKAGED_RUNNER_ARG = '--dsh-internal-subprocess-runner'
// Both the source tree (apps/cli/src) and the bundled bin (apps/cli/lib) sit
// one directory under apps/cli, so the checked-in manifest resolves with the
// same relative hop from either artifact.
@@ -23,39 +21,30 @@ function readVersion(): string {
return typeof manifest.version === 'string' ? manifest.version : '0.0.0'
}
if (process.argv[2] === PACKAGED_RUNNER_ARG) {
process.argv.splice(2, 1)
const runnerEntry = new URL(
'./lib/spawn-runner.js',
import.meta.resolve('@deepseek-ai/dsh-subprocess-local/package.json'),
)
await import(runnerEntry.href)
} else {
const invocation = parseDshArgs(process.argv.slice(2), readVersion())
const invocation = parseDshArgs(process.argv.slice(2), readVersion())
switch (invocation.mode) {
case 'profile': {
const { runProfile } = await import('./profile-boot.ts')
await runProfile({
environment: loadLayeredEnv('dsh'),
profile: invocation.profile,
patchFiles: invocation.patches,
args: invocation.args,
})
break
}
case 'plugin': {
const { runPlugin } = await import('./plugin.ts')
process.exit(runPlugin(invocation.profile, invocation.args))
break
}
case 'dump-config': {
const { runDumpConfig } = await import('./dump-config.ts')
runDumpConfig(invocation.profile, invocation.defaultOnly, invocation.patches)
break
}
default:
invocation satisfies never
throw new Error(`dsh: unhandled invocation mode ${JSON.stringify(invocation)}`)
switch (invocation.mode) {
case 'profile': {
const { runProfile } = await import('./profile-boot.ts')
await runProfile({
environment: loadLayeredEnv('dsh'),
profile: invocation.profile,
patchFiles: invocation.patches,
args: invocation.args,
})
break
}
case 'plugin': {
const { runPlugin } = await import('./plugin.ts')
process.exit(runPlugin(invocation.profile, invocation.args))
break
}
case 'dump-config': {
const { runDumpConfig } = await import('./dump-config.ts')
runDumpConfig(invocation.profile, invocation.defaultOnly, invocation.patches)
break
}
default:
invocation satisfies never
throw new Error(`dsh: unhandled invocation mode ${JSON.stringify(invocation)}`)
}
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env node
/** Packaging-only entry that keeps private runner dispatch outside the public CLI. */
/* v8 ignore file -- packaged-runtime smoke exercises this physical entry. */
const selectorName = 'DSH_SUBPROCESS_RUNNER'
const selection = process.env[selectorName]
export {}
if (selection === undefined) {
await import('./bin.ts')
} else {
Reflect.deleteProperty(process.env, selectorName)
const { runSelectedSubprocessRunner } = await import('@deepseek-ai/dsh-subprocess-local/runner')
await runSelectedSubprocessRunner(selection)
}