MCPcopy Create free account
hub / github.com/QodeXcli/QodeX / runOne

Function runOne

src/orchestration/fanout.ts:69–104  ·  view source on GitHub ↗
(job: FanoutJob, index: number)

Source from the content-addressed store, hash-verified

67 const results = new Array<FanoutJobResult>(jobs.length);
68
69 const runOne = async (job: FanoutJob, index: number): Promise<void> => {
70 const start = now();
71 opts.onEvent?.({ type: 'job-start', label: job.label, index, total: jobs.length });
72 try {
73 const r = await runner(job.prompt, {
74 maxIterations: job.maxIterations ?? 8,
75 signal: opts.signal,
76 sessionId: job.sessionId,
77 modelOverride: job.model,
78 role: job.role,
79 });
80 results[index] = {
81 label: job.label,
82 ok: r.ok,
83 finalText: r.finalText ?? '',
84 toolCallsRun: r.toolCallsRun ?? 0,
85 error: r.error,
86 modelUsed: r.modelUsed,
87 elapsedMs: now() - start,
88 };
89 } catch (err: any) {
90 // A runner that throws (rather than returning ok:false) must not kill the pool.
91 logger.warn('fanout job threw', { label: job.label, err: err?.message ?? String(err) });
92 results[index] = {
93 label: job.label,
94 ok: false,
95 finalText: '',
96 toolCallsRun: 0,
97 error: err?.message ?? String(err),
98 elapsedMs: now() - start,
99 };
100 } finally {
101 const res = results[index]!;
102 opts.onEvent?.({ type: 'job-done', label: job.label, index, ok: res.ok, elapsedMs: res.elapsedMs, toolCallsRun: res.toolCallsRun });
103 }
104 };
105
106 let next = 0;
107 const inFlight = new Set<Promise<void>>();

Callers 1

runFanoutFunction · 0.70

Calls 2

onEventMethod · 0.80
warnMethod · 0.80

Tested by

no test coverage detected