mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { join } from 'node:path'
|
|
import type { ConfinedArgv, SandboxPolicy } from '@deepseek-ai/dsh-sandbox'
|
|
import { SandboxProvider } from '@deepseek-ai/dsh-sandbox'
|
|
|
|
const NOTICE = 'landlock-run: partial enforcement (older Landlock ABI)'
|
|
const MISSING_RUNNER_ENV = 'DSH_SNAPSHOT_MISSING_SANDBOX_RUNNER'
|
|
|
|
/**
|
|
* Snapshot-only provider for deterministic runner classification. Its default
|
|
* launch reproduces older-ABI Landlock; an explicit scenario flag selects a
|
|
* missing executable under the valid workspace cwd. Keep the Landlock tuple
|
|
* aligned with `RUNNER_FAILURE_RULES` in `packages/sandbox/sandbox-local/src/index.ts`.
|
|
*/
|
|
export default class PartialLandlockSandboxProvider extends SandboxProvider {
|
|
confine(argv: readonly string[], policy: SandboxPolicy): ConfinedArgv {
|
|
if (process.env[MISSING_RUNNER_ENV] === '1') {
|
|
return {
|
|
argv: [join(policy.workspaceRoot, '.dsh-missing-sandbox-runner'), ...argv],
|
|
enforcement: 'full',
|
|
denialSignatures: ['permission denied'],
|
|
runnerFailureRules: [{ fatalSignatures: ['snapshot-runner: '] }],
|
|
}
|
|
}
|
|
return {
|
|
argv: [
|
|
'bash',
|
|
'-c',
|
|
`printf '%s\\n' '${NOTICE}' >&2; exec "$@"`,
|
|
'partial-landlock-run',
|
|
...argv,
|
|
],
|
|
enforcement: 'partial',
|
|
denialSignatures: ['permission denied'],
|
|
runnerFailureRules: [{
|
|
allowedExitCodes: [125],
|
|
fatalSignatures: ['landlock-run: '],
|
|
informationalLines: [NOTICE],
|
|
}],
|
|
}
|
|
}
|
|
}
|