Files
dev/packages/agent/test/harness/runtime/test-utils.ts
alexion 67b361f0e9 Squashed 'third_party/pi/' content from commit d981de122
git-subtree-dir: third_party/pi
git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
2026-09-14 10:40:08 -04:00

33 lines
1.1 KiB
TypeScript

import { BACKGROUND_CONTEXT } from "../../../src/harness/context.ts";
import { MemoryStorage } from "../../../src/harness/session/memory.ts";
import type { CommitResult, Write } from "../../../src/harness/session/types.ts";
export class FailingMemoryStorage extends MemoryStorage {
failure: Error | undefined;
override commit(writes: Write[]) {
const failure = this.failure;
this.failure = undefined;
return failure === undefined ? super.commit(writes, BACKGROUND_CONTEXT) : Promise.reject(failure);
}
}
export class ControlledMemoryStorage extends MemoryStorage {
beforeNextCommit: (() => Promise<void>) | undefined;
override async commit(writes: Write[]): Promise<CommitResult> {
const beforeCommit = this.beforeNextCommit;
this.beforeNextCommit = undefined;
await beforeCommit?.();
return super.commit(writes, BACKGROUND_CONTEXT);
}
}
export function deferred(): { promise: Promise<void>; resolve(): void } {
let resolvePromise: (() => void) | undefined;
const promise = new Promise<void>((resolve) => {
resolvePromise = resolve;
});
return { promise, resolve: () => resolvePromise?.() };
}