32 lines
790 B
TypeScript
32 lines
790 B
TypeScript
import type {
|
|
ComputerControlError,
|
|
ComputerControlErrorCode
|
|
} from '../../shared/computer-control-contracts'
|
|
|
|
export class ComputerControlFailure extends Error {
|
|
readonly code: ComputerControlErrorCode
|
|
readonly retryable: boolean
|
|
|
|
constructor(
|
|
code: ComputerControlErrorCode,
|
|
message: string,
|
|
retryable = false
|
|
) {
|
|
super(message)
|
|
this.name = 'ComputerControlFailure'
|
|
this.code = code
|
|
this.retryable = retryable
|
|
}
|
|
|
|
toContract(): ComputerControlError {
|
|
return {
|
|
code: this.code,
|
|
message: this.message.slice(0, 256) || 'Computer control failed',
|
|
retryable: this.retryable
|
|
}
|
|
}
|
|
}
|
|
|
|
export const cancellationFailure = (): ComputerControlFailure =>
|
|
new ComputerControlFailure('cancelled', 'Computer control was cancelled')
|