Repository navigation
feat(launch-control): add the Launch Control travel desk challenge - #44
thisisryanswift wants to merge 1 commit into
Conversation
A 10-minute browser challenge on LaunchDarkly AgentControl: a travel booker on a local page climbs four variations of one agent-mode config (prompt, tools, model) while it keeps running, switched one session target at a time by the package's switch_travel_agent MCP tool. Demo mode runs the same flow against a local stand-in that serves ladder.json; provision.mjs creates the config in a LaunchDarkly project. Closes #43
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Tip 🎯 Customize your risk assessments
✅ Automatic approvals, with your rules
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. CodeRabbit Verify
|
Adds
launch-control, a 10-minute browser challenge built on LaunchDarkly AgentControl. A travel booker climbs four variations of one agent-mode config (prompt, then tools, then model) while it keeps running; each rung is one session target set by the package'sswitch_travel_agentMCP tool. Closes #43.First checkpoint
Run on a LaunchDarkly trial account, not the free Developer plan the issue names:
Gemini, and full tool schemas.addTargets/removeTargetsonPATCH …/ai-configs/{key}/targeting@launchdarkly/ai-server1.0.x sees a change within about 2 s over streamingsendEvents: falseand diagnostics off, the SDK opened onlyGET stream.launchdarkly.com/all.@launchdarkly/ai-server1.0.0 is enough, and the older@launchdarkly/server-sdk-aiis not needed. ItsinitClienttakes no events option, so the page server passes it a@launchdarkly/node-server-sdkclient built with events off. Several targeting PATCHes in quick succession return 429, so the switch tool waits out rate limits.Small model
The suggested request on each rung; "correct" means it booked NV310 + NV311 + Alfama Riverside Guesthouse, 4 nights, $818:
gemini-3.1-flash-litegemini-3.5-flash-litegemini-2.5-flash-litegemini-2.5-flash-litegemini-2.5-flash-litegemini-3.8-flashv1–v3 use
gemini-2.5-flash-lite; v4 usesgemini-3.8-flash.Decide
boothstrap devpasses only*_API_KEYand*_AUTH_TOKENvariables, so the issue'sLAUNCHDARKLY_SDK_KEYandLAUNCHDARKLY_API_TOKENwould never reach the package in dev. Recommend:LAUNCHDARKLY_SDK_API_KEYandLAUNCHDARKLY_API_AUTH_TOKEN(what this PR uses), because they work in dev and on stations alike.launchdarkly-apivault auth. LaunchDarkly's REST API answers 401 toAuthorization: Bearer api-…and accepts only the bare token. Recommend:api-keywith headerAuthorization, the same aslaunchdarkly-sdk, becausebearercannot work.setupandcleanupneed it to reset and remove this session's target, besides the MCP tool. The page server never receives it. Recommend: accept this, because the reset and removal the issue asks for are API calls.gemini-3.8-flashtakes 12–24 s per reply, long for a booth. Recommend: try a lower thinking setting in the v4 variation's model parameters as a follow-up, because it is a config change with no deploy, which is the lesson itself.provision.mjsthere, filllaunchdarkly.json, and addlaunchdarkly-sdkandlaunchdarkly-apito the event vault, as the package README describes. Recommend: do these before the first event that lists the challenge, because without them it runs in demo mode.Ready gate
npm test: 333 tests, 331 pass, 0 fail, 2 skipped.npm run verify:ok …/challenges/launch-controland the other four packages.npm run lint: 0 issues.server/workspace-file.mjsis copied from glitch-invaders, as packages cannot share code. Root README index lists the challenge.travel-desk-state.json, and reporteddebriefafter the participant's explanation.cleanupleft the workspace empty.launchdarkly-sdkandlaunchdarkly-api(see Decide). Tests prove neither key nor the Gemini key appears in any page asset, response, workspace file, tool result, or hook output, and the page server's environment holds no API token.Also verified:
boothstrap dev --verify --live, demo mode, headless Chromium: a script sent the trip on the page whenever a new rung went live. Telemetry showsmeet-booker,add-prompt,add-tools, andadd-modelreported by the monitor, each after the booker had answered on that rung.debriefwas missed, as nobody answers Pi in that mode.cleanupleft no targets, including when run twice.Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.