From cf46f6518d35cdf9156c1c5310148c8bec64863e Mon Sep 17 00:00:00 2001 From: Christopher Nelson Date: Sun, 20 Sep 2026 10:01:54 -0400 Subject: [PATCH 1/6] fix(world-lab): expose zero swarm mode in setup --- .../src/components/world-lab.test.tsx | 59 +++++++++++++++++++ apps/world-lab/src/components/world-lab.tsx | 30 +++++++++- docs/LIVE_SWARM_COMPARISON.md | 11 ++++ 3 files changed, 99 insertions(+), 1 deletion(-) diff --git a/apps/world-lab/src/components/world-lab.test.tsx b/apps/world-lab/src/components/world-lab.test.tsx index 36026a0..1588fac 100644 --- a/apps/world-lab/src/components/world-lab.test.tsx +++ b/apps/world-lab/src/components/world-lab.test.tsx @@ -1353,6 +1353,65 @@ describe('WorldLab', () => { expect(overflowTrigger.closest('details')).not.toHaveAttribute('open'); }); + it('lets an operator create a zero-swarm experiment from World Setup', async () => { + const swarm = simulationSnapshotSchema.parse({ + ...initial, + scenario: { ...initial.scenario, cognitionMode: 'zero-swarm-v1' }, + swarmProviderStatus: { + plannerMode: 'scripted-swarm-test', + plannerConfigured: false, + reflexMode: 'scripted-reflex-test', + reflexConfigured: false, + }, + }); + let previewMode: string | undefined; + let appliedMode: string | undefined; + vi.stubGlobal( + 'fetch', + vi.fn((input: RequestInfo | URL, init?: RequestInit) => { + const url = String(input); + if (url.endsWith('/setup/preview')) { + const request = JSON.parse(String(init?.body)) as ReturnType< + typeof defaultWorldSetupRequest + >; + previewMode = request.cognitionMode; + return jsonResponse(previewWorldSetup(request)); + } + if (url.endsWith('/experiment/setup')) { + appliedMode = ( + JSON.parse(String(init?.body)) as ReturnType< + typeof defaultWorldSetupRequest + > + ).cognitionMode; + return jsonResponse({ snapshot: swarm }); + } + return jsonResponse(initial); + }), + ); + const user = userEvent.setup(); + render(); + expect( + await screen.findByText('Legacy multi-agent experiment'), + ).toBeVisible(); + await openOverflow(user); + await user.click(screen.getByRole('button', { name: 'World setup' })); + await user.selectOptions( + screen.getByLabelText('Cognition mode'), + 'zero-swarm-v1', + ); + await user.click(screen.getByRole('button', { name: 'Preview' })); + expect(previewMode).toBe('zero-swarm-v1'); + await user.click( + screen.getByRole('button', { name: 'Apply / Create Experiment' }), + ); + expect(appliedMode).toBe('zero-swarm-v1'); + expect(await screen.findByText('Zero swarm v1 experiment')).toBeVisible(); + expect(screen.getByRole('tab', { name: 'Swarm' })).toBeInTheDocument(); + expect( + screen.queryByRole('tab', { name: 'Public chat' }), + ).not.toBeInTheDocument(); + }); + it.each(['balanced-random', 'fully-random'] as const)( 'previews and applies reproducible seed edits with regenerated %s assignments', async (behaviorMode) => { diff --git a/apps/world-lab/src/components/world-lab.tsx b/apps/world-lab/src/components/world-lab.tsx index 95b1fb8..adec872 100644 --- a/apps/world-lab/src/components/world-lab.tsx +++ b/apps/world-lab/src/components/world-lab.tsx @@ -843,7 +843,9 @@ export function WorldLab() { WL
-

Developer simulation

+

+ {swarmMode ? 'Zero swarm v1' : 'Legacy multi-agent'} experiment +

World Lab