agentcrumbs
Version:
Debug mode for any agent.
39 lines • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MemorySink = void 0;
class MemorySink {
entries = [];
write(crumb) {
this.entries.push(crumb);
}
clear() {
this.entries.length = 0;
}
find(predicate) {
return this.entries.find(predicate);
}
filter(predicate) {
return this.entries.filter(predicate);
}
waitFor(predicate, timeout = 5000) {
const existing = this.find(predicate);
if (existing)
return Promise.resolve(existing);
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
reject(new Error(`waitFor timed out after ${timeout}ms`));
}, timeout);
const origWrite = this.write.bind(this);
this.write = (crumb) => {
origWrite(crumb);
if (predicate(crumb)) {
clearTimeout(timer);
this.write = origWrite;
resolve(crumb);
}
};
});
}
}
exports.MemorySink = MemorySink;
//# sourceMappingURL=memory.js.map