test(pi): hold packaged rpc confirmation past timeout

This commit is contained in:
2026-08-26 07:40:55 +08:00
parent 4b75d201b8
commit 26d616c9b6
8 changed files with 105 additions and 0 deletions

View File

@@ -38,6 +38,7 @@ export interface PiConversationWorker {
subscribeInvalidation(listener: (error: PiProcessError) => void): () => void;
stop(reason: PiWorkerStopReason): Promise<PiWorkerStopResult>;
injectFailureForProof?(failure: PiWorkerProofFailure): Promise<void>;
delayNextResponseForProof?(commandType: string, delayMs: number): void;
}
export interface PiWorkerSessionBinding {
@@ -677,6 +678,21 @@ export class PiWorkerPool {
return true;
}
delayNextTopLevelConfirmationForProof(
conversationId: string,
commandType: string,
delayMs: number,
): void {
const record = this.workers.get(conversationId);
if (!record || record.state === 'crashed') {
throw new Error('Conversation worker is not available for proof response delay');
}
if (!record.worker.delayNextResponseForProof) {
throw new Error('Conversation worker does not support proof response delay');
}
record.worker.delayNextResponseForProof(commandType, delayMs);
}
private async performShutdown(): Promise<void> {
this.shuttingDown = true;
this.shutdownController.abort();