test/helpers/codex-recovery-delivery.cjs
Rama main · réplica de lectura del repositorio original.
var fs = require('node:fs');
var os = require('node:os');
var path = require('node:path');
var fixtures = require('./codex-recovery-fixture.cjs');
function fixture(t, override, options) {
var kit = fixtures.fixture(t, override, options);
var directory = fs.mkdtempSync(path.join(os.tmpdir(), 'clay-codex-delivery-'));
t.after(async function() {
await Promise.all(Array.from(sm.sessions.values()).map(function(session) { return session.streamPromise; }));
fs.rmSync(directory, { recursive: true, force: true });
});
var sm = require('../../lib/sessions').createSessionManager({
cwd: directory, sessionsBase: path.join(directory, 'sessions'), cliSessionsDir: path.join(directory, 'cli'), send: function() {},
});
var driver = sm.createSessionRaw({ vendor: 'codex', cliSessionId: 'saved-thread' });
driver.title = 'Fixture Driver';
driver.titleManuallySet = true;
var worker = sm.createSessionRaw({ vendor: 'codex' });
worker._pairGeneration = 13;
sm.saveSessionFile(driver);
sm.saveSessionFile(worker);
var group = { id: 'pair', members: [driver.localId, worker.localId], pair: { driverId: driver.localId, workerId: worker.localId } };
var store = { groupForMember: function() { return group; } };
var turnControl = require('../../lib/session-pair-turn-control').attachPairTurnControl({ sm: sm, splitStore: store });
var outbox = require('../../lib/project-pair-result-outbox').attachPairResultOutbox({ filePath: path.join(directory, 'outbox.json') });
var sdk = require('../../lib/sdk-bridge').createSDKBridge({ cwd: process.cwd(), adapter: kit.adapter,
adapters: { codex: kit.adapter }, sessionManager: sm, send: function() {},
getSessionToolDefs: function() { return [{ name: 'create_issue', description: 'Fixture tool', inputSchema: { type: 'object' }, handler: function() { return {}; } }]; },
});
var pipeline = require('../../lib/project-pair-result-pipeline').attachPairResultPipeline({
sm: sm, store: store, resultOutbox: outbox,
getSdk: function() { return sdk; }, getLinuxUserForSession: function() { return null; }, acceptanceTimeoutMs: 30,
blockedReason: turnControl.blockedReason,
finishDelegation: function(currentGroup, caller, partner) { delete partner._pairDelegation; }, drain: function() {},
});
var token = { groupId: group.id, taskId: 'task-13', generation: 13, workerSessionId: worker.localId,
startIndex: 0, message: 'Verify the replacement Worker result', response: 'Verified Worker evidence', from: driver.localId };
worker._pairDelegation = token;
var begun = pipeline.capture.begin(driver, worker, token, token.message, 'fixture');
if (!begun.ok) throw new Error(begun.error);
return Object.assign(kit, { sdk: sdk, sm: sm, driver: driver, worker: worker, token: token, pipeline: pipeline, outbox: outbox,
stop: function() { turnControl.markHumanStop(driver); driver.taskStopRequested = true; },
complete: function() { return pipeline.capture.capture(driver, worker, token, { status: 'completed', response: token.response }); },
record: function() { return outbox.get(token.outboxKey); },
});
}
module.exports = { fixture: fixture };