test(pi): wire packaged confirmation delay
This commit is contained in:
@@ -34,6 +34,7 @@ const NOW = '2026-08-22T16:00:00.000Z';
|
||||
|
||||
class OpenerFakeProcess implements PiWorkerProcessAdapter {
|
||||
readonly generation = 1;
|
||||
readonly proofResponseDelays: Array<{ commandType: string; delayMs: number }> = [];
|
||||
constructor(
|
||||
private readonly sessionId: string,
|
||||
private readonly options: PiWorkerProcessOptions,
|
||||
@@ -60,6 +61,9 @@ class OpenerFakeProcess implements PiWorkerProcessAdapter {
|
||||
|
||||
subscribe(_listener: (event: PiRpcEvent) => void): () => void { return () => undefined; }
|
||||
subscribeInvalidation(_listener: (error: PiProcessError) => void): () => void { return () => undefined; }
|
||||
delayNextResponseForProof(commandType: string, delayMs: number): void {
|
||||
this.proofResponseDelays.push({ commandType, delayMs });
|
||||
}
|
||||
async stop() { return { mode: 'stdin-close' as const, code: 0, signal: null }; }
|
||||
}
|
||||
|
||||
@@ -120,6 +124,7 @@ describe('managed Pi worker opener', () => {
|
||||
updatedAt: NOW,
|
||||
};
|
||||
const processOptions: PiWorkerProcessOptions[] = [];
|
||||
const processes: OpenerFakeProcess[] = [];
|
||||
const telemetry: PiRuntimeTelemetryEvent[] = [];
|
||||
const registry = new PiSessionRegistry({ projectStore });
|
||||
const extensionHost = new PiManagedExtensionHost();
|
||||
@@ -140,7 +145,9 @@ describe('managed Pi worker opener', () => {
|
||||
createProcess: (options) => {
|
||||
processOptions.push(options);
|
||||
const sessionIndex = options.additionalArgs?.indexOf('--session-id') ?? -1;
|
||||
return new OpenerFakeProcess(options.additionalArgs?.[sessionIndex + 1] ?? '', options);
|
||||
const process = new OpenerFakeProcess(options.additionalArgs?.[sessionIndex + 1] ?? '', options);
|
||||
processes.push(process);
|
||||
return process;
|
||||
},
|
||||
});
|
||||
const opener = createOpener(registry);
|
||||
@@ -200,6 +207,9 @@ describe('managed Pi worker opener', () => {
|
||||
expect(JSON.stringify(telemetry)).not.toContain(created.id);
|
||||
expect(JSON.stringify(telemetry)).not.toContain('PRIVATE MANAGED PROMPT');
|
||||
expect(JSON.stringify(telemetry)).not.toContain('provider-secret-value');
|
||||
expect(first.worker.delayNextResponseForProof).toBeTypeOf('function');
|
||||
first.worker.delayNextResponseForProof?.('prompt', 12_000);
|
||||
expect(processes[0]?.proofResponseDelays).toEqual([{ commandType: 'prompt', delayMs: 12_000 }]);
|
||||
await first.worker.stop('test_injection');
|
||||
await reopened.worker.stop('test_injection');
|
||||
await restarted.worker.stop('test_injection');
|
||||
|
||||
Reference in New Issue
Block a user