(n)
| 39 | const agent = await Agent.create(CONFIG); |
| 40 | |
| 41 | async function run(n) { |
| 42 | const session = agent.session('.', { |
| 43 | autoDelegation: { enabled: true, parallel: true }, |
| 44 | maxParallelTasks: 8, |
| 45 | confirmationPolicy: { enabled: true, yoloLanes: ['control', 'query', 'execute', 'generate'], timeoutAction: 'auto_approve' }, |
| 46 | }); |
| 47 | let progStart = 0, progEnd = 0, programOutput = '', errorSeen = null, ok = false; |
| 48 | const stream = await session.stream(promptFor(n)); |
| 49 | while (true) { |
| 50 | const { value: ev, done } = await stream.next(); |
| 51 | if (done) break; |
| 52 | if (!ev) continue; |
| 53 | if (ev.type === 'tool_start' && ev.toolName === 'program') progStart = Date.now(); |
| 54 | if (ev.type === 'tool_end' && ev.toolName === 'program') { |
| 55 | progEnd = Date.now(); |
| 56 | programOutput = String(ev.toolOutput || ''); |
| 57 | ok = /exit_code=0/.test(programOutput) && /parallel_task \(ok/.test(programOutput); |
| 58 | } |
| 59 | if (ev.type === 'permission_denied') errorSeen = 'permission_denied'; |
| 60 | if (/error/i.test(ev.type || '') && ev.type !== 'tool_input_delta') errorSeen = ev.type; |
| 61 | } |
| 62 | const up = programOutput.toUpperCase(); |
| 63 | const got = WORDS.slice(0, n).filter((w) => up.includes(w)).length; |
| 64 | return { n, progMs: progEnd - progStart, ok, got, errorSeen }; |
| 65 | } |
| 66 | |
| 67 | // 1) Baseline: one task. |
| 68 | const base = await run(1); |
no test coverage detected