# Conflicts: # docs/config-catalog.md # docs/core-data-structures/bash.md # packages/bash/bash-local/src/index.ts # packages/bash/bash/src/types.ts # packages/bash/bash/tests/service.spec.ts # packages/bash/tool-bash/README.md # packages/bash/tool-bash/src/index.ts # packages/bash/tool-bash/tests/tools.spec.ts # packages/cordis/tool-cordis/src/api-catalog.ts
28 lines
1.3 KiB
TypeScript
28 lines
1.3 KiB
TypeScript
/**
|
|
* Generic-task adaptation for background bash process handles.
|
|
*
|
|
* @module @deepseek-ai/dsh-tool-bash/background
|
|
*/
|
|
|
|
import type { BashProcess } from '@deepseek-ai/dsh-bash'
|
|
|
|
/**
|
|
* Map a settled background process onto the generic task-outcome vocabulary:
|
|
* `killed` stays `killed` (detail: the signal when one is known), everything
|
|
* else is `completed` with the exit code as detail. A nonzero command exit is
|
|
* reported, not failed, exactly like the foreground rendering.
|
|
* @param proc - the settled process handle.
|
|
* @returns the outcome for the `ctx.tasks` registration.
|
|
*/
|
|
export function processOutcome(proc: BashProcess): { status: 'completed' | 'killed'; detail: string } {
|
|
// TODO(background-infrastructure-outcome): widen BashProcess with an explicit
|
|
// infrastructure-failure outcome, then map spawn failures and
|
|
// sandbox.runnerFailed to task `failed`. The current seam aliases a spawn
|
|
// failure with a signal-less kill and a runner failure with an ordinary
|
|
// wrapper exit; real nonzero command exits must remain `completed`.
|
|
if (proc.status === 'killed') {
|
|
return { status: 'killed', detail: proc.signal !== null ? `signal: ${proc.signal}` : 'killed before exit' }
|
|
}
|
|
return { status: 'completed', detail: `exit code: ${proc.exitCode ?? 0}` }
|
|
}
|