chorus-codes 0.8.37 → 0.8.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -1
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/server/app/_global-error.html +1 -1
  7. package/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/connect/page.js +1 -1
  24. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/demo/[scenario]/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/new/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/new.html +1 -1
  28. package/.next/server/app/new.rsc +1 -1
  29. package/.next/server/app/new.segments/_full.segment.rsc +1 -1
  30. package/.next/server/app/new.segments/_head.segment.rsc +1 -1
  31. package/.next/server/app/new.segments/_index.segment.rsc +1 -1
  32. package/.next/server/app/new.segments/_tree.segment.rsc +1 -1
  33. package/.next/server/app/new.segments/new/__PAGE__.segment.rsc +1 -1
  34. package/.next/server/app/new.segments/new.segment.rsc +1 -1
  35. package/.next/server/app/onboarding/page.js +1 -1
  36. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/onboarding.html +1 -1
  38. package/.next/server/app/onboarding.rsc +2 -2
  39. package/.next/server/app/onboarding.segments/_full.segment.rsc +2 -2
  40. package/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  41. package/.next/server/app/onboarding.segments/_index.segment.rsc +1 -1
  42. package/.next/server/app/onboarding.segments/_tree.segment.rsc +1 -1
  43. package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +2 -2
  44. package/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
  45. package/.next/server/app/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/personas/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/personas.html +1 -1
  48. package/.next/server/app/personas.rsc +1 -1
  49. package/.next/server/app/personas.segments/_full.segment.rsc +1 -1
  50. package/.next/server/app/personas.segments/_head.segment.rsc +1 -1
  51. package/.next/server/app/personas.segments/_index.segment.rsc +1 -1
  52. package/.next/server/app/personas.segments/_tree.segment.rsc +1 -1
  53. package/.next/server/app/personas.segments/personas/__PAGE__.segment.rsc +1 -1
  54. package/.next/server/app/personas.segments/personas.segment.rsc +1 -1
  55. package/.next/server/app/runs/[runId]/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/runs/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  58. package/.next/server/app/settings/permissions/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/settings.html +1 -1
  60. package/.next/server/app/settings.rsc +1 -1
  61. package/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  62. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  63. package/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  64. package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  65. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  66. package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  67. package/.next/server/app/templates/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/templates.html +1 -1
  69. package/.next/server/app/templates.rsc +1 -1
  70. package/.next/server/app/templates.segments/_full.segment.rsc +1 -1
  71. package/.next/server/app/templates.segments/_head.segment.rsc +1 -1
  72. package/.next/server/app/templates.segments/_index.segment.rsc +1 -1
  73. package/.next/server/app/templates.segments/_tree.segment.rsc +1 -1
  74. package/.next/server/app/templates.segments/templates/__PAGE__.segment.rsc +1 -1
  75. package/.next/server/app/templates.segments/templates.segment.rsc +1 -1
  76. package/.next/server/app-paths-manifest.json +1 -1
  77. package/.next/server/middleware-build-manifest.js +1 -1
  78. package/.next/server/pages/404.html +1 -1
  79. package/.next/server/pages/500.html +1 -1
  80. package/.next/server/server-reference-manifest.json +1 -1
  81. package/.next/static/chunks/app/onboarding/page-66e7f39dc92dd401.js +1 -0
  82. package/.next/trace +20 -20
  83. package/.next/trace-build +1 -1
  84. package/dist/cli/commands/doctor.js +1 -0
  85. package/dist/cli/commands/doctor.js.map +1 -1
  86. package/dist/cli/commands/init.js +2 -0
  87. package/dist/cli/commands/init.js.map +1 -1
  88. package/dist/cli/commands/quickstart.js +18 -10
  89. package/dist/cli/commands/quickstart.js.map +1 -1
  90. package/dist/daemon/orchestrators/grok.js +101 -0
  91. package/dist/daemon/orchestrators/grok.js.map +1 -0
  92. package/dist/daemon/orchestrators/index.js +2 -0
  93. package/dist/daemon/orchestrators/index.js.map +1 -1
  94. package/dist/daemon/orchestrators/shared.js.map +1 -1
  95. package/dist/lib/cli-detect.js +13 -0
  96. package/dist/lib/cli-detect.js.map +1 -1
  97. package/dist/lib/cli-paths.js +1 -0
  98. package/dist/lib/cli-paths.js.map +1 -1
  99. package/package.json +1 -1
  100. package/.next/static/chunks/app/onboarding/page-0ad8dceca7279475.js +0 -1
  101. /package/.next/static/{PLVy0iTepN1xpE0hbQBjx → K8p7q94EZUywXFc1L87FJ}/_buildManifest.js +0 -0
  102. /package/.next/static/{PLVy0iTepN1xpE0hbQBjx → K8p7q94EZUywXFc1L87FJ}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
1
  (()=>{var a={};a.id=566,a.ids=[566],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},6506:(a,b,c)=>{"use strict";c.d(b,{JR:()=>k,QJ:()=>f,VW:()=>g,YM:()=>m,m_:()=>h,r2:()=>n,u5:()=>j,x0:()=>l,ze:()=>d});let d={anthropic:"Claude",openai:"Codex",google:"Gemini",opencode:"OpenCode",moonshot:"Kimi",local:"Local LLM"},e={anthropic:"bg-violet-400",openai:"bg-orange-400",google:"bg-blue-400",opencode:"bg-emerald-400",moonshot:"bg-pink-400",local:"bg-teal-400"};function f(a){return a?d[a]??a:""}function g(a){return a?e[a]??"bg-muted":"bg-muted"}let h={claude:"Claude",codex:"Codex",gemini:"Gemini",opencode:"OpenCode",kimi:"Kimi",openrouter:"OpenRouter",local:"Local LLM"},i={claude:"bg-violet-400",codex:"bg-orange-400",gemini:"bg-blue-400",opencode:"bg-emerald-400",kimi:"bg-pink-400",openrouter:"bg-cyan-400",local:"bg-teal-400"};function j(a){return a?h[a]??a:""}function k(a){return a?i[a]??"bg-muted":"bg-muted"}let l={claude:"claude-opus-4-7",codex:"gpt-5.5",gemini:"gemini-2.5-pro",opencode:"kimi-k2.6",kimi:"kimi-k2.6",openrouter:"",local:""};function m(a){if(a)return l[a]}let n={claude:{dot:"bg-violet-400",ring:"ring-violet-400/40",gradient:"bg-gradient-to-b from-violet-500/15 to-card"},codex:{dot:"bg-orange-400",ring:"ring-orange-400/40",gradient:"bg-gradient-to-b from-orange-500/15 to-card"},gemini:{dot:"bg-blue-400",ring:"ring-blue-400/40",gradient:"bg-gradient-to-b from-blue-500/15 to-card"},opencode:{dot:"bg-emerald-400",ring:"ring-emerald-400/40",gradient:"bg-gradient-to-b from-emerald-500/15 to-card"},kimi:{dot:"bg-pink-400",ring:"ring-pink-400/40",gradient:"bg-gradient-to-b from-pink-500/15 to-card"},openrouter:{dot:"bg-cyan-400",ring:"ring-cyan-400/40",gradient:"bg-gradient-to-b from-cyan-500/15 to-card"},local:{dot:"bg-teal-400",ring:"ring-teal-400/40",gradient:"bg-gradient-to-b from-teal-500/15 to-card"}}},10399:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]])},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},16169:(a,b,c)=>{"use strict";c.r(b),c.d(b,{__next_app__:()=>M,handler:()=>O,routeModule:()=>N});var d=c(15828),e=c(97067),f=c(38261),g=c(94322),h=c(64428),i=c(85126),j=c(48669),k=c(98846),l=c(6916),m=c(9958),n=c(50248),o=c(414),p=c(90667),q=c(261),r=c(8399),s=c(47796),t=c(26713),u=c(53846),v=c(65275),w=c(17695),x=c(33608),y=c(67040),z=c(54908),A=c(74840),B=c(86439),C=c(77068),D=c(72308),E=c(71708),F=c(91957),G=c(70722),H=c(4804),I=c(43954),J=c(17891),K={};for(let a in E)0>["default","__next_app__","routeModule","handler"].indexOf(a)&&(K[a]=()=>E[a]);c.d(b,K);let L={children:["",{children:["onboarding",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,86114)),"/home/ubuntu/dev/chorus/src/app/onboarding/page.tsx"]}]},{"global-error":[()=>Promise.resolve().then(c.t.bind(c,10312,23)),"next/dist/client/components/builtin/global-error.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,11305))).default(a),async a=>(await Promise.resolve().then(c.bind(c,89796))).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}},[]]},{layout:[()=>Promise.resolve().then(c.bind(c,65979)),"/home/ubuntu/dev/chorus/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,10312,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,43790,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,27431,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,6906,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,11305))).default(a),async a=>(await Promise.resolve().then(c.bind(c,89796))).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}},[]]}.children,M={require:c,loadChunk:()=>Promise.resolve()},N=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/onboarding/page",pathname:"/onboarding",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:L},distDir:".next",relativeProjectDir:""});async function O(a,b,d){var K,P,Q,R,S;d.requestMeta&&(0,h.setRequestMeta)(a,d.requestMeta),N.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let T=!!(0,h.getRequestMeta)(a,"minimalMode"),U="/onboarding/page";"/index"===U&&(U="/");let V=await N.prepare(a,b,{srcPage:U,multiZoneDraftMode:!1});if(!V)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:W,query:X,params:Y,pageIsDynamic:Z,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,serverActionsManifest:ab,clientReferenceManifest:ac,subresourceIntegrityManifest:ad,prerenderManifest:ae,isDraftMode:af,resolvedPathname:ag,revalidateOnlyGenerated:ah,routerServerContext:ai,nextConfig:aj,parsedUrl:ak,interceptionRoutePatterns:al,deploymentId:am,clientAssetToken:an}=V,ao=(0,q.normalizeAppPath)(U),{isOnDemandRevalidate:ap}=V,aq=aj.experimental.ppr&&!aj.cacheComponents&&(0,I.isInterceptionRouteAppPath)(ag)?null:N.match(ag,ae),ar=(null==aq?void 0:aq.route)??null,as=!!ae.routes[ag],at=a.headers["user-agent"]||"",au=(0,t.getBotType)(at),av=(0,p.isHtmlBotRequest)(a),aw=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ax=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ay=(0,r.getIsPossibleServerAction)(a),az=(0,m.checkIsAppPPREnabled)(aj.experimental.ppr),aA=a.headers[x.NEXT_RESUME_STATE_LENGTH_HEADER];if(!(0,h.getRequestMeta)(a,"postponed")&&T&&az&&ay&&aA&&"string"==typeof aA){let e=parseInt(aA,10),{maxPostponedStateSize:f,maxPostponedStateSizeBytes:g}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize);if(!isNaN(e)&&e>0){if(e>g)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(f)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let i="1 MB",j=(null==(S=aj.experimental.serverActions)?void 0:S.bodySizeLimit)??i,k=e+(j!==i?c(58965).parse(j):1048576),l=await (0,D.readBodyWithSizeLimit)(a,k);if(null===l)return b.statusCode=413,b.end("Request body exceeded limit. To configure the body size limit for Server Actions, see: https://nextjs.org/docs/app/api-reference/next-config-js/serverActions#bodysizelimit"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;if(l.length>=e){let b=l.subarray(0,e).toString("utf8");(0,h.addRequestMeta)(a,"postponed",b);let c=l.subarray(e);(0,h.addRequestMeta)(a,"actionBody",c)}else throw Object.defineProperty(Error(`invariant: expected ${e} bytes of postponed state but only received ${l.length} bytes`),"__NEXT_ERROR_CODE",{value:"E979",enumerable:!1,configurable:!0})}}if(!(0,h.getRequestMeta)(a,"postponed")&&az&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let{maxPostponedStateSize:c,maxPostponedStateSizeBytes:e}=(0,D.getMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize),f=await (0,D.readBodyWithSizeLimit)(a,e);if(null===f)return b.statusCode=413,b.end((0,D.getPostponedStateExceededErrorMessage)(c)),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let g=f.toString("utf8");(0,h.addRequestMeta)(a,"postponed",g)}let aB=!0===N.isDev||!0===aj.experimental.exposeTestingApiInProductionBuild,aC=aB&&("1"===a.headers[s.NEXT_INSTANT_PREFETCH_HEADER]||void 0===a.headers[s.RSC_HEADER]&&"string"==typeof a.headers.cookie&&a.headers.cookie.includes(s.NEXT_INSTANT_TEST_COOKIE+"=")),aD=(az||aC)&&((null==(K=ae.routes[ao]??ae.dynamicRoutes[ao])?void 0:K.renderingMode)==="PARTIALLY_STATIC"||aC&&(aB||(null==ai?void 0:ai.experimentalTestProxy)===!0)),aE=aC&&aD,aF=aE&&!0===N.isDev,aG=!1,aH=aD?(0,h.getRequestMeta)(a,"postponed"):void 0,aI=null==(P=ae.routes[ag])?void 0:P.prefetchDataRoute,aJ=aD&&ax&&!aw&&!aI;T&&(aJ=aJ&&!!aH);let aK=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),aL=(!au||!aD)&&(!at||(0,p.shouldServeStreamingMetadata)(at,aj.htmlLimitedBots)),aM=!!((ar||as||ae.routes[ao])&&!(au&&aD)),aN=aD&&!0===aj.cacheComponents,aO=!0===N.isDev||!aM||"string"==typeof aH||(aN&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?aJ&&!T:aJ),aP=!!au&&aD,aQ=(null==ar?void 0:ar.remainingPrerenderableParams)??[],aR=(null==ar?void 0:ar.fallback)===null&&((null==(Q=ar.fallbackRootParams)?void 0:Q.length)??0)>0,aS=null;if(!af&&aM&&!aO&&!ay&&!aH&&!aJ){let a=aq?"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:aq.source:null;if(!0===aj.experimental.partialFallbacks&&a&&(null==ar?void 0:ar.fallbackRouteParams)&&!aR){if(aQ.length>0){let b,c=(b=new Map(aQ.map(a=>[a.paramName,a])),a.split("/").map(a=>{let c=(0,J.getSegmentParam)(a);if(!c)return a;let d=b.get(c.paramName);if(!d)return a;let e=null==Y?void 0:Y[d.paramName];if(!e)return a;let f=Array.isArray(e)?e.map(a=>encodeURIComponent(a)).join("/"):encodeURIComponent(e);return a.replace(function(a){let{repeat:b,optional:c}=(0,J.getParamProperties)(a.paramType);return c?`[[...${a.paramName}]]`:b?`[...${a.paramName}]`:`[${a.paramName}]`}(d),f)}).join("/")||"/");aS=c!==a?c:null}}else aS=ag}let aT=aS;!aT&&(N.isDev||aM&&Z&&(null==ar?void 0:ar.fallbackRouteParams)&&!ay)&&(aT=ag),N.isDev||af||!aM||!ax||aJ||(0,k.d)(a.headers);let aU={...E,tree:L,handler:O,routeModule:N,__next_app__:M};ab&&ac&&(0,o.setManifestsSingleton)({page:U,clientReferenceManifest:ac,serverActionsManifest:ab});let aV=a.method||"GET",aW=(0,g.getTracer)(),aX=aW.getActiveScopeSpan(),aY=!!(null==ai?void 0:ai.isWrappedByNextServer),aZ=!0===aj.experimental.partialFallbacks&&aQ.length>0?(null==ar||null==(R=ar.fallbackRouteParams)?void 0:R.filter(a=>!aQ.some(b=>b.paramName===a.paramName)))??[]:[],a$=async()=>((null==ai?void 0:ai.render404)?await ai.render404(a,b,ak,!1):b.end("This page could not be found"),null);try{let k,m=N.getVaryHeader(ag,al);b.setHeader("Vary",m);let o=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return N.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aW.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aV} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a),k&&k!==c&&(k.setAttribute("http.route",d),k.updateName(a))}else c.updateName(`${aV} ${U}`)})},p=(0,h.getRequestMeta)(a,"incrementalCache")||await N.getIncrementalCache(a,aj,ae,T);null==p||p.resetRequestCache(),globalThis.__incrementalCache=p;let q=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let k={query:X,params:Y,page:ao,sharedContext:{buildId:W,deploymentId:am,clientAssetToken:an},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aU,Component:(0,j.T)(aU),params:Y,routeModule:N,page:U,postponed:f,shouldWaitOnAllReady:aP,serveStreamingMetadata:aL,supportsDynamicResponse:"string"==typeof f||aO,buildManifest:$,nextFontManifest:_,reactLoadableManifest:aa,subresourceIntegrityManifest:ad,setCacheStatus:null==ai?void 0:ai.setCacheStatus,setIsrStatus:null==ai?void 0:ai.setIsrStatus,setReactDebugChannel:null==ai?void 0:ai.setReactDebugChannel,sendErrorsToBrowser:null==ai?void 0:ai.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),N.relativeProjectDir),isDraftMode:af,botType:au,isOnDemandRevalidate:ap,isPossibleServerAction:ay,assetPrefix:aj.assetPrefix,nextConfigOutput:aj.output,crossOrigin:aj.crossOrigin,trailingSlash:aj.trailingSlash,images:aj.images,previewProps:ae.preview,enableTainting:aj.experimental.taint,htmlLimitedBots:aj.htmlLimitedBots,reactMaxHeadersLength:aj.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:p,cacheLifeProfiles:aj.cacheLife,basePath:aj.basePath,serverActions:aj.experimental.serverActions,logServerFunctions:"object"==typeof aj.logging&&!!aj.logging.serverFunctions,...aE||aF||aG?{isBuildTimePrerendering:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:aF}:{},cacheComponents:!!aj.cacheComponents,experimental:{isRoutePPREnabled:aD,expireTime:aj.expireTime,staleTimes:aj.experimental.staleTimes,dynamicOnHover:!!aj.experimental.dynamicOnHover,optimisticRouting:!!aj.experimental.optimisticRouting,inlineCss:!!aj.experimental.inlineCss,prefetchInlining:aj.experimental.prefetchInlining??!1,authInterrupts:!!aj.experimental.authInterrupts,cachedNavigations:!!aj.experimental.cachedNavigations,clientTraceMetadata:aj.experimental.clientTraceMetadata||[],clientParamParsingOrigins:aj.experimental.clientParamParsingOrigins,maxPostponedStateSizeBytes:(0,C.parseMaxPostponedStateSize)(aj.experimental.maxPostponedStateSize)},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>N.onRequestError(a,b,d,e,ai),err:(0,h.getRequestMeta)(a,"invokeError")}};i&&(k.renderOpts.supportsDynamicResponse=!1);let l=await o(e,k),{metadata:m}=l,{cacheControl:n,headers:q={},fetchTags:r,fetchMetrics:s}=m;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,aM&&(null==n?void 0:n.revalidate)===0&&!N.isDev&&!aD){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ag}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===N.isDev,m=c||b.writableEnded;try{let f;if(ap&&ah&&!g&&!T)return(null==ai?void 0:ai.render404)?await ai.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ar&&(f=(0,v.parseFallbackField)(ar.fallback)),!0===aj.experimental.partialFallbacks&&(null==ar?void 0:ar.fallback)===null&&!aR&&aQ.length>0&&(f=v.FallbackMode.PRERENDER),f===v.FallbackMode.PRERENDER&&(0,t.isBot)(at)&&(!aD||av)&&(f=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ap=!0),ap&&(f!==v.FallbackMode.NOT_FOUND||g)&&(f=v.FallbackMode.BLOCKING_STATIC_RENDER),!T&&f!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aT&&!m&&!af&&Z&&(l||!as)){if((l||ar)&&f===v.FallbackMode.NOT_FOUND){if(aj.adapterPath)return await a$();throw new B.NoFallbackError}if(aD&&(aj.cacheComponents?!aJ:!ax)){let b=l&&"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:ao,f=(l||aE)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;aE&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await N.handleResponse({cacheKey:b,req:a,nextConfig:aj,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ae,isRoutePPREnabled:aD,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:T});if(null===g)return null;if(g)return T||!aD||!(aQ.length>0)||!0!==aj.experimental.partialFallbacks||!aS||!p||ap||aG||aB||aC||aw||(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(aS,p,aD,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:aZ.length>0?(0,n.createOpaqueFallbackRouteParams)(aZ):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let o=ap||i||!aH?void 0:aH;if(aN&&!T&&p&&(aJ||ay)&&!k){let b=await p.get(ag,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(o=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(ag,p,aD,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aE||aF)&&void 0!==o)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||aE&&!as)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;if((l||aE)&&aj.cacheComponents&&!as&&(null==ar?void 0:ar.fallbackRouteParams)){let b=(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:o,fallbackRouteParams:s,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await N.onRequestError(a,b,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),b}},D=async c=>{var f,g,i,j,k;let l,m=await N.handleResponse({cacheKey:aS,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ap,isRoutePPREnabled:aD,req:a,nextConfig:aj,prerenderManifest:ae,waitUntil:d.waitUntil,isMinimalMode:T});if(af&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),N.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!m){if(aS)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ax&&!ay&&am&&b.setHeader(x.NEXT_NAV_DEPLOYMENT_ID_HEADER,am),aM&&!aJ&&(!n||aw)&&(T||b.setHeader("x-nextjs-cache",ap?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:o}=m;if(aH)l={revalidate:0,expire:void 0};else if(aJ)l={revalidate:0,expire:void 0};else if(!N.isDev)if(af)l={revalidate:0,expire:void 0};else if(aM){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??aj.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aK&&(null==o?void 0:o.kind)===u.CachedRouteKind.APP_PAGE&&o.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=o.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];T&&aM&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=o.segmentData.get(aK);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let p=aN?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(p&&await p(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(o.headers){let a={...o.headers};for(let[c,d]of(T&&aM||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=o.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(T&&aM&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!o.status||ax&&aD||(b.statusCode=o.status),!T&&o.status&&F.RedirectStatusCode[o.status]&&ax&&(b.statusCode=200),n&&!aJ&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ax&&!af){if(void 0===o.rscData){if(o.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(aj.cacheComponents)return b.statusCode=404,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new G.InvariantError(`Expected RSC response, got ${o.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:o.html,cacheControl:m.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(o.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=o.html;if(aC&&aE){let c=!0===N.isDev?crypto.randomUUID():null;return v.pipeThrough((0,z.createInstantTestScriptInsertionTransformStream)(c)),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})}if(!n||T||ax)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:m.cacheControl});if(aE||aF)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let B=new TransformStream;return v.push(B.readable),q({span:c,postponed:o.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(B.writable)}).catch(a=>{B.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aY||!aX)return k=aW.getActiveScopeSpan(),await aW.withPropagatedContext(a.headers,()=>aW.trace(i.BaseServerSpan.handleRequest,{spanName:`${aV} ${U}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aV,"http.target":a.url}},D),void 0,!aY);await D(aX)}catch(b){throw b instanceof B.NoFallbackError||await N.onRequestError(a,b,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),b}}},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},26624:(a,b,c)=>{Promise.resolve().then(c.bind(c,74679))},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},50133:(a,b,c)=>{"use strict";c.d(b,{Zp:()=>f});var d=c(66722);c(31131);var e=c(16276);function f({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card",className:(0,e.cn)("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",a),...b})}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65850:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},66635:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},72069:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},72827:(a,b,c)=>{"use strict";c.d(b,{$:()=>i});var d=c(66722);c(31131);var e=c(82786),f=c(29399),g=c(16276);let h=(0,e.F)("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function i({className:a,variant:b="default",size:c="default",asChild:e=!1,...j}){let k=e?f.bL:"button";return(0,d.jsx)(k,{"data-slot":"button","data-variant":b,"data-size":c,className:(0,g.cn)(h({variant:b,size:c,className:a})),...j})}},74679:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>K});var d=c(66722),e=c(66635),f=c(95047),g=c(260),h=c(31131),i=c(61296),j=c(72827),k=c(32673);c(35075);var l=c(29843),m=c(50133),n=c(16276);function o({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,n.cn)("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",a),...c})}var p=c(10399),q=c(72069),r=c(65850),s=c(82257);let t=["anthropic/claude-sonnet-4.5","openai/gpt-5","google/gemini-2.5-pro","deepseek/deepseek-chat-v3.1","moonshotai/kimi-k2"];function u({apiKeys:a,updateApiKey:b}){let c=a.openrouter??"",[f,g]=(0,h.useState)({kind:"idle"}),[i,j]=(0,h.useState)(null),[k,l]=(0,h.useState)(new Set(t)),[v,w]=(0,h.useState)(!1),[x,y]=(0,h.useState)(null);async function z(){if(0!==c.trim().length&&"saving"!==f.kind){g({kind:"saving"});try{let a=await (0,s.M5)(c.trim());if(!a.valid)return void g({kind:"invalid",message:a.error??"OpenRouter rejected this key."});await A()}catch(a){g({kind:"invalid",message:a instanceof Error?a.message:String(a)})}}}async function A(){g({kind:"loading_catalog"});try{let{models:a}=await (0,s.Y8)();a.sort((a,b)=>a.id.localeCompare(b.id)),j(a),g({kind:"valid",modelCount:a.length})}catch(a){g({kind:"catalog_failed",message:a instanceof Error?a.message:String(a)})}}async function B(){if(0!==k.size&&!v){w(!0),y(null);try{let a=await (0,s.Eu)(Array.from(k)),b=a.added.length,c=a.skipped.length;y(`Added ${b} voice${1===b?"":"s"}`+(c>0?` \xb7 skipped ${c} (unknown id)`:""))}catch(a){y(`Couldn't add voices: ${a instanceof Error?a.message:String(a)}`)}finally{w(!1)}}}return(0,d.jsxs)("section",{className:"mb-8",children:[(0,d.jsxs)("h2",{className:"mb-3 flex flex-wrap items-baseline gap-x-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:[(0,d.jsx)("span",{children:"API access"}),(0,d.jsx)("span",{className:"font-normal normal-case text-muted-foreground/70",children:"optional — gives you any model on OpenRouter as a chorus voice"})]}),(0,d.jsxs)(m.Zp,{className:"space-y-3 bg-card p-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("label",{htmlFor:"apikey-openrouter",className:"text-sm font-medium",children:"OpenRouter API key"}),(0,d.jsxs)("a",{href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground",children:["Get a key ",(0,d.jsx)(p.A,{className:"h-2.5 w-2.5"})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(o,{id:"apikey-openrouter",type:"password",autoComplete:"off",spellCheck:!1,placeholder:"sk-or-v1-…",value:c,onChange:a=>{b("openrouter",a.target.value),"idle"!==f.kind&&g({kind:"idle"}),j(null)},className:"flex-1 font-mono text-xs",disabled:"saving"===f.kind||"loading_catalog"===f.kind}),(0,d.jsxs)("button",{type:"button",onClick:z,disabled:0===c.trim().length||"saving"===f.kind||"loading_catalog"===f.kind||"valid"===f.kind,className:(0,n.cn)("inline-flex h-9 items-center gap-1.5 rounded-md border px-3 text-[11px] font-medium transition disabled:cursor-not-allowed disabled:opacity-50","valid"===f.kind?"border-emerald-500/40 bg-emerald-500/10 text-emerald-300":"border-primary/40 bg-primary/10 text-primary hover:bg-primary/20"),children:[("saving"===f.kind||"loading_catalog"===f.kind)&&(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"}),"valid"===f.kind&&(0,d.jsx)(q.A,{className:"h-3 w-3"}),"saving"===f.kind?"Validating…":"loading_catalog"===f.kind?"Loading models…":"valid"===f.kind?"Validated":"Validate & save"]})]}),"invalid"===f.kind&&(0,d.jsxs)("p",{className:"flex items-center gap-1.5 text-xs text-destructive",children:[(0,d.jsx)(r.A,{className:"h-3 w-3"}),f.message]}),"catalog_failed"===f.kind&&(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 rounded-md border border-amber-500/40 bg-amber-500/5 px-3 py-2",children:[(0,d.jsxs)("p",{className:"flex items-start gap-1.5 text-xs text-amber-100",children:[(0,d.jsx)(r.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,d.jsxs)("span",{children:["Key saved, but couldn't load the model catalog:"," ",f.message]})]}),(0,d.jsx)("button",{type:"button",onClick:A,className:"shrink-0 rounded-md border border-amber-500/40 bg-amber-500/10 px-2.5 py-1 text-[11px] font-medium text-amber-100 hover:bg-amber-500/20",children:"Reload models"})]}),"valid"===f.kind&&i&&(0,d.jsxs)("div",{className:"space-y-2 rounded-md border border-emerald-500/20 bg-emerald-500/5 p-3",children:[(0,d.jsxs)("p",{className:"text-[11px] text-emerald-300",children:["✓ Key valid \xb7 ",f.modelCount," models available. Pick a starter set now or browse the full catalog on the Connect page later."]}),(0,d.jsx)("div",{className:"grid grid-cols-1 gap-1 sm:grid-cols-2",children:t.filter(a=>i.some(b=>b.id===a)).map(a=>{let b=k.has(a),c=i.find(b=>b.id===a);return(0,d.jsxs)("label",{className:(0,n.cn)("flex cursor-pointer items-center gap-2 rounded border px-2 py-1.5 text-[11px] transition",b?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,d.jsx)("input",{type:"checkbox",checked:b,onChange:b=>{l(c=>{let d=new Set(c);return b.target.checked?d.add(a):d.delete(a),d})},className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate font-mono",children:c?.id??a})]},a)})}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsxs)("button",{type:"button",onClick:B,disabled:0===k.size||v,className:"inline-flex h-7 items-center gap-1.5 rounded-md border border-primary/40 bg-primary/10 px-2.5 text-[11px] font-medium text-primary transition hover:bg-primary/20 disabled:cursor-not-allowed disabled:opacity-50",children:[v?(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"}):null,"Add ",k.size>0?k.size:""," voice",1===k.size?"":"s"]}),x&&(0,d.jsx)("p",{className:"text-[11px] text-emerald-300",children:x})]})]}),(0,d.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground/80",children:["Stored locally in ",(0,d.jsx)("code",{children:"~/.chorus/chorus.db"}),". Used only to call OpenRouter on your behalf. Direct API support for other providers (Anthropic, OpenAI, Google, xAI) is on the roadmap — today, route those models via OpenRouter."]})]})]})}var v=c(6506);let w=[{id:"claude-code",provider:"anthropic",label:"Claude Code",hint:"Anthropic — uses your existing Claude login"},{id:"codex-cli",provider:"openai",label:"Codex CLI",hint:"OpenAI — ChatGPT Plus/Pro subscription"},{id:"gemini-cli",provider:"google",label:"Gemini CLI",hint:"Google — uses your gcloud auth"},{id:"opencode-cli",provider:"opencode",label:"OpenCode",hint:"OpenCode Go — routes Kimi, DeepSeek, Grok"},{id:"kimi-cli",provider:"moonshot",label:"Kimi CLI",hint:"MoonshotAI — kimi-k2 plan"},{id:"cursor",provider:"cursor",label:"Cursor",hint:"Cursor IDE — invoke chorus from inside it"},{id:"windsurf",provider:"windsurf",label:"Windsurf",hint:"Windsurf IDE — invoke chorus from inside it"}],x={"claude-code":"claude","codex-cli":"codex","gemini-cli":"gemini","opencode-cli":"opencode","kimi-cli":"kimi"},y={"claude-code":"claude-code","codex-cli":"codex-cli","gemini-cli":"gemini-cli","opencode-cli":"opencode-cli","kimi-cli":"kimi-cli"},z={dot:"bg-muted-foreground/40",gradient:"bg-gradient-to-br from-muted/30 via-card to-card"},A=w.filter(a=>"cursor"!==a.id&&"windsurf"!==a.id);function B(a){return(0,d.jsxs)("section",{className:"mb-8",children:[(0,d.jsx)("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:"CLI subscriptions"}),(0,d.jsx)("div",{className:"grid grid-cols-1 items-start gap-2 lg:grid-cols-2",children:A.map(b=>{let c=a.selectedClis.has(b.id),f=a.detection[b.id],g=f?.found===!0,h=a.detecting&&!f,i=!g&&!h&&a.manualOpen.has(b.id),j=a.manualBusy.has(b.id),k=g?v.r2[x[b.id]]??z:z;return(0,d.jsxs)("div",{className:(0,n.cn)("flex h-72 flex-col rounded-lg border transition",g?"border-border":"border-border/60 opacity-70",k.gradient),children:[(0,d.jsxs)("button",{type:"button",onClick:()=>g&&a.toggleCli(b.id),disabled:!g,className:(0,n.cn)("flex shrink-0 items-center gap-3 px-4 py-3 text-left transition",g?"hover:bg-card/30":"cursor-not-allowed"),children:[(0,d.jsx)("div",{className:(0,n.cn)("grid h-5 w-5 shrink-0 place-items-center rounded border transition",!g&&"opacity-50",c?"border-primary bg-primary text-primary-foreground":"border-border"),children:c&&(0,d.jsx)(q.A,{className:"h-3 w-3"})}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,d.jsx)("span",{className:(0,n.cn)("h-2 w-2 shrink-0 rounded-full",k.dot)}),(0,d.jsx)("h3",{className:"whitespace-nowrap text-sm font-semibold",children:b.label}),g?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-emerald-300",children:[(0,d.jsx)(q.A,{className:"h-3 w-3"})," Installed"]}):h?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"})," Searching…"]}):(0,d.jsx)("span",{className:"inline-flex items-center rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:"Not found"})]})]}),(0,d.jsxs)("div",{className:"flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4",children:[(0,d.jsx)("p",{className:"text-[11px] leading-relaxed text-muted-foreground",children:g&&f.path?(0,d.jsx)("code",{className:"rounded bg-muted/60 px-1.5 py-0.5 font-mono",children:f.path}):h?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"}),"Probing PATH and known install dirs…"]}):b.hint}),!g&&!h&&(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>a.toggleManual(b.id),className:"text-[11px] text-muted-foreground transition hover:text-foreground",children:i?"Cancel":"Don't see it? Set path manually →"}),i&&(0,d.jsx)(E,{cliId:b.id,value:a.manualPath[b.id]??"",onChange:c=>a.setManualPath(a=>({...a,[b.id]:c})),error:a.manualError[b.id],busy:j,onSubmit:()=>a.submitManualPath(b.id)})]}),g&&"opencode-cli"===b.id&&c&&(0,d.jsx)(D,{loading:a.opencodeModelsLoading,error:a.opencodeModelsError,models:a.opencodeModels,selected:a.selectedOpencodeModels,onToggle:a.toggleOpencodeModel}),g&&"opencode-cli"!==b.id&&c&&(0,d.jsx)(C,{cliId:b.id,voices:a.cliVoices,savingVoiceIds:a.savingVoiceIds,saveError:a.voiceSaveError,onToggle:a.toggleVoice})]})]},b.id)})}),(0,d.jsx)("p",{className:"mt-3 text-[11px] text-muted-foreground",children:"Cursor and Windsurf are IDEs that invoke chorus, not voices — wire them up on the Connect page after onboarding."})]})}function C({cliId:a,voices:b,savingVoiceIds:c,saveError:e,onToggle:f}){let g=y[a],h=b.filter(a=>a.provider===g).slice().sort((a,b)=>a.id===g?-1:b.id===g?1:a.model_id.localeCompare(b.model_id));if(0===h.length)return(0,d.jsx)("p",{className:"text-[11px] italic text-muted-foreground/70",children:"Models will populate after the daemon finishes seeding (refresh in a few seconds)."});let i=h.filter(a=>a.enabled).length;return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:"Models"}),(0,d.jsxs)("p",{className:"text-[11px] text-muted-foreground/70",children:[i,"/",h.length," enabled"]})]}),e&&(0,d.jsx)("p",{className:"text-[11px] text-destructive",children:e}),(0,d.jsx)("div",{className:"grid grid-cols-1 gap-1",children:h.map(a=>{let b=a.enabled,e=a.id===g;return(0,d.jsxs)("button",{type:"button",disabled:c.has(a.id),onClick:()=>f(a),title:a.model_id,className:(0,n.cn)("flex items-center gap-2 rounded border px-2 py-1.5 text-left text-[11px] transition disabled:opacity-60",b?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,d.jsx)("div",{className:(0,n.cn)("grid h-3 w-3 shrink-0 place-items-center rounded-sm border transition",b?"border-primary bg-primary text-primary-foreground":"border-border"),children:b&&(0,d.jsx)(q.A,{className:"h-2 w-2"})}),(0,d.jsx)("span",{className:"truncate font-mono",children:a.model_id}),e&&(0,d.jsx)("span",{className:"shrink-0 rounded-full bg-emerald-500/10 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wider text-emerald-300",children:"current"})]},a.id)})})]})}function D({loading:a,error:b,models:c,selected:f,onToggle:g}){return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:"Pick models to enable"}),(0,d.jsxs)("p",{className:"text-[11px] text-muted-foreground/70",children:[f.size," selected"]})]}),a&&(0,d.jsxs)("p",{className:"flex items-center gap-2 text-[11px] text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"}),"Listing models from"," ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:"opencode models"}),"…"]}),b&&(0,d.jsx)("p",{className:"text-[11px] text-destructive",children:b}),c&&(0,d.jsxs)("div",{className:"space-y-2",children:[Object.entries(c.gateways).filter(([a])=>a.startsWith("opencode")).sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsxs)("p",{className:"text-[10px] font-mono text-muted-foreground/80",children:[a,"/"]}),(0,d.jsx)("div",{className:"grid grid-cols-1 gap-1",children:b.map(b=>{let c=f.has(b);return(0,d.jsxs)("button",{type:"button",onClick:()=>g(b),title:b,className:(0,n.cn)("flex items-center gap-2 rounded border px-2 py-1.5 text-left text-[11px] transition",c?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,d.jsx)("div",{className:(0,n.cn)("grid h-3 w-3 shrink-0 place-items-center rounded-sm border transition",c?"border-primary bg-primary text-primary-foreground":"border-border"),children:c&&(0,d.jsx)(q.A,{className:"h-2 w-2"})}),(0,d.jsx)("span",{className:"truncate font-mono",children:b.slice(a.length+1)})]},b)})})]},a)),(0,d.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground/70",children:["Pre-selected: ",c.defaultPicks.join(", ")||"none",". Change anytime in ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:"Settings"}),"."]})]})]})}function E({cliId:a,value:b,onChange:c,error:f,busy:g,onSubmit:h}){let i=function(a){switch(a){case"claude-code":return"claude";case"codex-cli":return"codex";case"gemini-cli":return"gemini";case"opencode-cli":return"opencode";default:return"kimi"}}(a);return(0,d.jsxs)("div",{className:"space-y-2 rounded-md border border-border bg-card/50 p-3",children:[(0,d.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground",children:["Paste the full path to the"," ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:i})," binary. Run"," ",(0,d.jsxs)("code",{className:"rounded bg-muted px-1",children:["which ",i]})," (macOS / Linux) or ",(0,d.jsxs)("code",{className:"rounded bg-muted px-1",children:["where ",i]})," ","(Windows) to find it. The daemon will run"," ",(0,d.jsxs)("code",{className:"rounded bg-muted px-1",children:[i," --version"]})," with a 2s timeout to confirm the binary works and identifies as the"," ",i," CLI."]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(o,{value:b,onChange:a=>c(a.target.value),placeholder:`/full/path/to/${i}`,className:"flex-1 font-mono text-xs",spellCheck:!1,autoComplete:"off"}),(0,d.jsx)(j.$,{type:"button",variant:"secondary",disabled:g,onClick:h,children:g?(0,d.jsx)(e.A,{className:"h-4 w-4 animate-spin"}):"Verify"})]}),f&&(0,d.jsx)("p",{className:"text-[11px] text-destructive",children:f})]})}let F=[{id:"strict",label:"Strict",hint:"Read-only. Reviewers can inspect code but can't write files, exec shell, or hit the network."},{id:"workspace",label:"Workspace (recommended)",hint:"Read+write inside the chat dir, scoped shell, no network. Default for most teams."},{id:"full",label:"Full access",hint:"No sandbox at all. Only on a personal machine you fully trust."}];function G({sandboxProfile:a,setSandboxProfile:b,autoApprovePrompts:c,setAutoApprovePrompts:e,networkAccess:f,setNetworkAccess:g}){return(0,d.jsxs)("section",{className:"mb-8",children:[(0,d.jsx)("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:"Permissions & sandbox"}),(0,d.jsx)("p",{className:"mb-4 text-xs leading-relaxed text-muted-foreground",children:"Controls what reviewers can do on your machine. You can change this anytime in Settings → Permissions."}),(0,d.jsx)("div",{className:"space-y-2",children:F.map(c=>{let e=a===c.id;return(0,d.jsxs)("button",{type:"button",onClick:()=>b(c.id),className:(0,n.cn)("flex w-full items-start gap-3 rounded-lg border p-4 text-left transition",e?"border-primary/50 bg-primary/10":"border-border bg-card hover:border-muted-foreground/30"),children:[(0,d.jsx)("div",{className:(0,n.cn)("mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition",e?"border-primary bg-primary text-primary-foreground":"border-border"),children:e&&(0,d.jsx)(q.A,{className:"h-3 w-3"})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("div",{className:"text-sm font-medium",children:c.label}),(0,d.jsx)("div",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:c.hint})]})]},c.id)})}),(0,d.jsxs)("div",{className:"mt-3 space-y-2",children:[(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3",children:[(0,d.jsx)("input",{type:"checkbox",checked:c,onChange:a=>e(a.target.checked),className:"mt-1 h-4 w-4 cursor-pointer accent-primary"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1 text-xs leading-relaxed",children:[(0,d.jsx)("div",{className:"text-sm font-medium",children:"Skip in-CLI permission prompts"}),(0,d.jsxs)("div",{className:"mt-0.5 text-muted-foreground",children:["Passes ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:"--afk"})," /"," ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:"auto_edit"}),"to spawned reviewers so they don't hang on per-tool prompts. Off = every action requires explicit consent in the CLI's TUI."]})]})]}),(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3",children:[(0,d.jsx)("input",{type:"checkbox",checked:f,onChange:a=>g(a.target.checked),className:"mt-1 h-4 w-4 cursor-pointer accent-primary"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1 text-xs leading-relaxed",children:[(0,d.jsx)("div",{className:"text-sm font-medium",children:"Allow outbound network from reviewers"}),(0,d.jsx)("div",{className:"mt-0.5 text-muted-foreground",children:"Off by default. Templates that explicitly need network override per phase."})]})]})]})]})}var H=c(66152);async function I(a){for(let b of a.selectedClis){let a=w.find(a=>a.id===b);a&&await (0,H.WH)(a.provider,{kind:"cli_subscription",value:a.id,updatedAt:Date.now()})}for(let[b,c]of Object.entries(a.apiKeys)){let a=c.trim();a&&await (0,H.WH)(b,{kind:"api_key",value:a,updatedAt:Date.now()})}await (0,k.Ep)({sandboxProfile:a.sandboxProfile,autoApprovePrompts:a.autoApprovePrompts,networkAccess:a.networkAccess}),a.selectedClis.has("opencode-cli")&&a.opencodeModels&&await J(a),await (0,H.Xx)({onboarded:!0})}async function J(a){let{listVoices:b,updateVoice:d,createVoice:e}=await Promise.resolve().then(c.bind(c,29843)),f=new Map((await b({provider:"opencode-cli"}).catch(()=>[])).map(a=>[a.id,a])),g=a.opencodeModels;g&&await Promise.all(g.flat.map(async b=>{let c=`opencode-cli:${b}`,g=a.selectedOpencodeModels.has(b),h=f.get(c);try{if(h)h.enabled!==g&&await d(c,{enabled:g});else{let a,c,{lineage:d,vendor_family:f}=(c=((a=b.indexOf("/"))>=0?b.slice(a+1):b).toLowerCase()).includes("kimi")?{lineage:"moonshot",vendor_family:null}:c.includes("claude")?{lineage:"anthropic",vendor_family:null}:c.includes("gpt")||/(?:^|[^a-z])o[1-9](?:$|[^a-z0-9])/.test(c)?{lineage:"openai",vendor_family:null}:c.includes("gemini")?{lineage:"google",vendor_family:null}:c.includes("deepseek")?{lineage:"opencode",vendor_family:"deepseek"}:c.includes("llama")||c.includes("meta")?{lineage:"opencode",vendor_family:"meta"}:c.includes("mistral")||c.includes("mixtral")?{lineage:"opencode",vendor_family:"mistral"}:c.includes("grok")||c.includes("xai")?{lineage:"opencode",vendor_family:"xai"}:{lineage:"opencode",vendor_family:null};await e({provider:"opencode-cli",model_id:b,label:b,source:"cli",lineage:d,vendor_family:f,enabled:g})}}catch{}}))}function K(){let a=(0,g.useRouter)(),[b,c]=(0,h.useTransition)(),[m,n]=(0,h.useState)(null),[o,p]=(0,h.useState)(new Set),[q,r]=(0,h.useState)([]),[s,t]=(0,h.useState)(new Set),[v,w]=(0,h.useState)(null),[x,y]=(0,h.useState)({}),[z,A]=(0,h.useState)("workspace"),[C,D]=(0,h.useState)(!0),[E,F]=(0,h.useState)(!1),[J,K]=(0,h.useState)({}),[L,M]=(0,h.useState)(!0),[N,O]=(0,h.useState)(new Set),[P,Q]=(0,h.useState)({}),[R,S]=(0,h.useState)({}),[T,U]=(0,h.useState)(new Set),[V,W]=(0,h.useState)(null),[X,Y]=(0,h.useState)(null),[Z,$]=(0,h.useState)(!1),[_,aa]=(0,h.useState)(new Set),ab=async a=>{t(b=>new Set(b).add(a.id)),w(null);try{let b=await (0,l.updateVoice)(a.id,{enabled:!a.enabled});r(a=>a.map(a=>a.id===b.id?b:a))}catch(a){w(a instanceof Error?a.message:"Couldn't save voice toggle.")}finally{t(b=>{let c=new Set(b);return c.delete(a.id),c})}},ac=async a=>{let b=(P[a]||"").trim();if(!b)return void S(b=>({...b,[a]:"Enter the full path to the CLI program (e.g. /usr/local/bin/claude)."}));U(b=>new Set(b).add(a)),S(b=>({...b,[a]:""}));try{let c=await (0,k.iW)(a,b);if(c.found){try{await (0,k.Df)(a,c.path??b)}catch(b){S(c=>({...c,[a]:`Validation passed but save failed: ${b instanceof Error?b.message:"unknown error"}. Try again, or paste the path again.`}));return}K(b=>({...b,[a]:c})),p(b=>new Set(b).add(a)),(0,l.listVoices)({source:"cli"}).then(r).catch(()=>{}),O(b=>{let c=new Set(b);return c.delete(a),c})}else{let b=c.reason??"couldn't run that path";S(c=>({...c,[a]:`Validation failed: ${b}.`}))}}catch{S(b=>({...b,[a]:"Validation failed. Is the daemon running?"}))}finally{U(b=>{let c=new Set(b);return c.delete(a),c})}},ad=o.size+Object.values(x).filter(a=>a.trim().length>0).length;return(0,d.jsx)("main",{className:"min-h-screen bg-background text-foreground",children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-5xl px-4 py-10 sm:px-6 sm:py-14",children:[(0,d.jsxs)("div",{className:"mb-8 flex items-center gap-3",children:[(0,d.jsx)("div",{className:"grid h-10 w-10 place-items-center rounded-md bg-primary/15 text-primary",children:(0,d.jsx)(i.U,{className:"h-6 w-6"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Welcome to Chorus"}),(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Connect at least one model to begin"})]})]}),(0,d.jsx)("p",{className:"mb-8 text-sm leading-relaxed text-muted-foreground",children:"Chorus runs your prompt past 2–4 LLMs of different lineages and synthesises consensus. Pick the CLI subscriptions you already have, or paste API keys. You can change these later in Settings."}),(0,d.jsx)(B,{selectedClis:o,toggleCli:a=>{p(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},detection:J,detecting:L,cliVoices:q,savingVoiceIds:s,voiceSaveError:v,toggleVoice:ab,manualOpen:N,toggleManual:a=>{O(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),S(b=>({...b,[a]:""}))},manualPath:P,setManualPath:Q,manualError:R,manualBusy:T,submitManualPath:ac,opencodeModels:V,opencodeModelsError:X,opencodeModelsLoading:Z,selectedOpencodeModels:_,toggleOpencodeModel:a=>{aa(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}}),(0,d.jsx)(u,{apiKeys:x,updateApiKey:(a,b)=>{y(c=>({...c,[a]:b}))}}),(0,d.jsx)(G,{sandboxProfile:z,setSandboxProfile:A,autoApprovePrompts:C,setAutoApprovePrompts:D,networkAccess:E,setNetworkAccess:F}),m&&(0,d.jsx)("div",{className:"mb-6 rounded-md border border-destructive/50 bg-destructive/10 px-4 py-3 text-sm text-destructive",children:m}),(0,d.jsxs)("div",{className:"flex flex-col-reverse gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:0===ad?"Pick at least one to continue.":`${ad} ${1===ad?"credential":"credentials"} ready to save.`}),(0,d.jsx)(j.$,{onClick:()=>{(n(null),0===ad)?n("Pick at least one CLI or paste at least one API key to continue."):c(async()=>{try{await I({selectedClis:o,apiKeys:x,sandboxProfile:z,autoApprovePrompts:C,networkAccess:E,opencodeModels:V,selectedOpencodeModels:_}),a.push("/"),a.refresh()}catch(a){n(a instanceof H.$v?a.message:"Could not save. Is the Chorus daemon running?")}})},disabled:b||0===ad,className:"w-full sm:w-auto",children:b?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.A,{className:"mr-1 h-4 w-4 animate-spin"}),"Saving…"]}):(0,d.jsxs)(d.Fragment,{children:["Get started",(0,d.jsx)(f.A,{className:"ml-1 h-4 w-4"})]})})]})]})})}},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},79428:a=>{"use strict";a.exports=require("buffer")},82257:(a,b,c)=>{"use strict";c.d(b,{Eu:()=>g,M5:()=>e,Y8:()=>f});var d=c(34291);async function e(a){return(0,d.T)("/openrouter/save-key",{method:"POST",body:JSON.stringify({apiKey:a})})}async function f(){return(0,d.T)("/openrouter/models")}async function g(a,b){return(0,d.T)("/openrouter/voices",{method:"POST",body:JSON.stringify(b?{modelIds:a,apiKey:b}:{modelIds:a})})}},82786:(a,b,c)=>{"use strict";c.d(b,{F:()=>g});var d=c(84602);let e=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,f=d.$,g=(a,b)=>c=>{var d;if((null==b?void 0:b.variants)==null)return f(a,null==c?void 0:c.class,null==c?void 0:c.className);let{variants:g,defaultVariants:h}=b,i=Object.keys(g).map(a=>{let b=null==c?void 0:c[a],d=null==h?void 0:h[a];if(null===b)return null;let f=e(b)||e(d);return g[a][f]}),j=c&&Object.entries(c).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return f(a,i,null==b||null==(d=b.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...h,...j}[b]):({...h,...j})[b]===c})?[...a,c,d]:a},[]),null==c?void 0:c.class,null==c?void 0:c.className)}},86114:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(96600).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/ubuntu/dev/chorus/src/app/onboarding/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/ubuntu/dev/chorus/src/app/onboarding/page.tsx","default")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},95047:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]])},97248:(a,b,c)=>{Promise.resolve().then(c.bind(c,86114))}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[332,451,504,385,681],()=>b(b.s=16169));module.exports=c})();
2
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:l,headers:q,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},r=async({hasResolved:c,previousCacheEntry:g,isRevalidating:i,span:j,forceStaticRender:k=!1})=>{let l=!1===N.isDev,m=c||b.writableEnded;try{let f;if(ap&&ah&&!g&&!T)return(null==ai?void 0:ai.render404)?await ai.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ar&&(f=(0,v.parseFallbackField)(ar.fallback)),!0===aj.experimental.partialFallbacks&&(null==ar?void 0:ar.fallback)===null&&!aR&&aQ.length>0&&(f=v.FallbackMode.PRERENDER),f===v.FallbackMode.PRERENDER&&(0,t.isBot)(at)&&(!aD||av)&&(f=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==g?void 0:g.isStale)===-1&&(ap=!0),ap&&(f!==v.FallbackMode.NOT_FOUND||g)&&(f=v.FallbackMode.BLOCKING_STATIC_RENDER),!T&&f!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aT&&!m&&!af&&Z&&(l||!as)){if((l||ar)&&f===v.FallbackMode.NOT_FOUND){if(aj.adapterPath)return await a$();throw new B.NoFallbackError}if(aD&&(aj.cacheComponents?!aJ:!ax)){let b=l&&"string"==typeof(null==ar?void 0:ar.fallback)?ar.fallback:ao,f=(l||aE)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;aE&&f&&(0,h.addRequestMeta)(a,"fallbackParams",f);let g=await N.handleResponse({cacheKey:b,req:a,nextConfig:aj,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:ae,isRoutePPREnabled:aD,responseGenerator:async()=>q({span:j,postponed:void 0,fallbackRouteParams:f,forceStaticRender:!0}),waitUntil:d.waitUntil,isMinimalMode:T});if(null===g)return null;if(g)return T||!aD||!(aQ.length>0)||!0!==aj.experimental.partialFallbacks||!aS||!p||ap||aG||aB||aC||aw||(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(aS,p,aD,!1,a=>q({span:a.span,postponed:void 0,fallbackRouteParams:aZ.length>0?(0,n.createOpaqueFallbackRouteParams)(aZ):null,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}),delete g.cacheControl,g}}let o=ap||i||!aH?void 0:aH;if(aN&&!T&&p&&(aJ||ay)&&!k){let b=await p.get(ag,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(o=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,H.scheduleOnNextTick)(async()=>{let b=N.getResponseCache(a);try{await b.revalidate(ag,p,aD,!1,a=>r({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if((aE||aF)&&void 0!==o)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=(l&&(0,h.getRequestMeta)(a,"renderFallbackShell")||aE&&!as)&&(null==ar?void 0:ar.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams):aG?(0,n.getFallbackRouteParams)(ao,N):null;if((l||aE)&&aj.cacheComponents&&!as&&(null==ar?void 0:ar.fallbackRouteParams)){let b=(0,n.createOpaqueFallbackRouteParams)(ar.fallbackRouteParams);b&&(0,h.addRequestMeta)(a,"fallbackParams",b)}return q({span:j,postponed:o,fallbackRouteParams:s,forceStaticRender:k})}catch(b){throw(null==g?void 0:g.isStale)&&await N.onRequestError(a,b,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),b}},D=async c=>{var f,g,i,j,k;let l,m=await N.handleResponse({cacheKey:aS,responseGenerator:a=>r({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ap,isRoutePPREnabled:aD,req:a,nextConfig:aj,prerenderManifest:ae,waitUntil:d.waitUntil,isMinimalMode:T});if(af&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),N.isDev&&b.setHeader("Cache-Control","no-cache, must-revalidate"),!m){if(aS)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ax&&!ay&&am&&b.setHeader(x.NEXT_NAV_DEPLOYMENT_ID_HEADER,am),aM&&!aJ&&(!n||aw)&&(T||b.setHeader("x-nextjs-cache",ap?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:o}=m;if(aH)l={revalidate:0,expire:void 0};else if(aJ)l={revalidate:0,expire:void 0};else if(!N.isDev)if(af)l={revalidate:0,expire:void 0};else if(aM){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??aj.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR_SECONDS,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aK&&(null==o?void 0:o.kind)===u.CachedRouteKind.APP_PAGE&&o.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=o.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];T&&aM&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=o.segmentData.get(aK);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let p=aN?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(p&&await p(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(o.headers){let a={...o.headers};for(let[c,d]of(T&&aM||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=o.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(T&&aM&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!o.status||ax&&aD||(b.statusCode=o.status),!T&&o.status&&F.RedirectStatusCode[o.status]&&ax&&(b.statusCode=200),n&&!aJ&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ax&&!af){if(void 0===o.rscData){if(o.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(aj.cacheComponents)return b.statusCode=404,(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new G.InvariantError(`Expected RSC response, got ${o.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:o.html,cacheControl:m.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:w.default.fromStatic(o.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=o.html;if(aC&&aE){let c=!0===N.isDev?crypto.randomUUID():null;return v.pipeThrough((0,z.createInstantTestScriptInsertionTransformStream)(c)),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})}if(!n||T||ax)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:m.cacheControl});if(aE||aF)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let B=new TransformStream;return v.push(B.readable),q({span:c,postponed:o.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(B.writable)}).catch(a=>{B.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:aj.generateEtags,poweredByHeader:aj.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aY||!aX)return k=aW.getActiveScopeSpan(),await aW.withPropagatedContext(a.headers,()=>aW.trace(i.BaseServerSpan.handleRequest,{spanName:`${aV} ${U}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aV,"http.target":a.url}},D),void 0,!aY);await D(aX)}catch(b){throw b instanceof B.NoFallbackError||await N.onRequestError(a,b,{routerKind:"App Router",routePath:U,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:aM,isOnDemandRevalidate:ap})},!1,ai),b}}},17891:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/get-segment-param")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{"use strict";a.exports=require("process")},26624:(a,b,c)=>{Promise.resolve().then(c.bind(c,74679))},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},50133:(a,b,c)=>{"use strict";c.d(b,{Zp:()=>f});var d=c(66722);c(31131);var e=c(16276);function f({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card",className:(0,e.cn)("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",a),...b})}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},65850:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},66635:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},72069:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},72827:(a,b,c)=>{"use strict";c.d(b,{$:()=>i});var d=c(66722);c(31131);var e=c(82786),f=c(29399),g=c(16276);let h=(0,e.F)("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function i({className:a,variant:b="default",size:c="default",asChild:e=!1,...j}){let k=e?f.bL:"button";return(0,d.jsx)(k,{"data-slot":"button","data-variant":b,"data-size":c,className:(0,g.cn)(h({variant:b,size:c,className:a})),...j})}},74679:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>K});var d=c(66722),e=c(66635),f=c(95047),g=c(260),h=c(31131),i=c(61296),j=c(72827),k=c(32673);c(35075);var l=c(29843),m=c(50133),n=c(16276);function o({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,n.cn)("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",a),...c})}var p=c(10399),q=c(72069),r=c(65850),s=c(82257);let t=["anthropic/claude-sonnet-4.5","openai/gpt-5","google/gemini-2.5-pro","deepseek/deepseek-chat-v3.1","moonshotai/kimi-k2"];function u({apiKeys:a,updateApiKey:b}){let c=a.openrouter??"",[f,g]=(0,h.useState)({kind:"idle"}),[i,j]=(0,h.useState)(null),[k,l]=(0,h.useState)(new Set(t)),[v,w]=(0,h.useState)(!1),[x,y]=(0,h.useState)(null);async function z(){if(0!==c.trim().length&&"saving"!==f.kind){g({kind:"saving"});try{let a=await (0,s.M5)(c.trim());if(!a.valid)return void g({kind:"invalid",message:a.error??"OpenRouter rejected this key."});await A()}catch(a){g({kind:"invalid",message:a instanceof Error?a.message:String(a)})}}}async function A(){g({kind:"loading_catalog"});try{let{models:a}=await (0,s.Y8)();a.sort((a,b)=>a.id.localeCompare(b.id)),j(a),g({kind:"valid",modelCount:a.length})}catch(a){g({kind:"catalog_failed",message:a instanceof Error?a.message:String(a)})}}async function B(){if(0!==k.size&&!v){w(!0),y(null);try{let a=await (0,s.Eu)(Array.from(k)),b=a.added.length,c=a.skipped.length;y(`Added ${b} voice${1===b?"":"s"}`+(c>0?` \xb7 skipped ${c} (unknown id)`:""))}catch(a){y(`Couldn't add voices: ${a instanceof Error?a.message:String(a)}`)}finally{w(!1)}}}return(0,d.jsxs)("section",{className:"mb-8",children:[(0,d.jsxs)("h2",{className:"mb-3 flex flex-wrap items-baseline gap-x-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:[(0,d.jsx)("span",{children:"API access"}),(0,d.jsx)("span",{className:"font-normal normal-case text-muted-foreground/70",children:"optional — gives you any model on OpenRouter as a chorus voice"})]}),(0,d.jsxs)(m.Zp,{className:"space-y-3 bg-card p-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("label",{htmlFor:"apikey-openrouter",className:"text-sm font-medium",children:"OpenRouter API key"}),(0,d.jsxs)("a",{href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground",children:["Get a key ",(0,d.jsx)(p.A,{className:"h-2.5 w-2.5"})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(o,{id:"apikey-openrouter",type:"password",autoComplete:"off",spellCheck:!1,placeholder:"sk-or-v1-…",value:c,onChange:a=>{b("openrouter",a.target.value),"idle"!==f.kind&&g({kind:"idle"}),j(null)},className:"flex-1 font-mono text-xs",disabled:"saving"===f.kind||"loading_catalog"===f.kind}),(0,d.jsxs)("button",{type:"button",onClick:z,disabled:0===c.trim().length||"saving"===f.kind||"loading_catalog"===f.kind||"valid"===f.kind,className:(0,n.cn)("inline-flex h-9 items-center gap-1.5 rounded-md border px-3 text-[11px] font-medium transition disabled:cursor-not-allowed disabled:opacity-50","valid"===f.kind?"border-emerald-500/40 bg-emerald-500/10 text-emerald-300":"border-primary/40 bg-primary/10 text-primary hover:bg-primary/20"),children:[("saving"===f.kind||"loading_catalog"===f.kind)&&(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"}),"valid"===f.kind&&(0,d.jsx)(q.A,{className:"h-3 w-3"}),"saving"===f.kind?"Validating…":"loading_catalog"===f.kind?"Loading models…":"valid"===f.kind?"Validated":"Validate & save"]})]}),"invalid"===f.kind&&(0,d.jsxs)("p",{className:"flex items-center gap-1.5 text-xs text-destructive",children:[(0,d.jsx)(r.A,{className:"h-3 w-3"}),f.message]}),"catalog_failed"===f.kind&&(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3 rounded-md border border-amber-500/40 bg-amber-500/5 px-3 py-2",children:[(0,d.jsxs)("p",{className:"flex items-start gap-1.5 text-xs text-amber-100",children:[(0,d.jsx)(r.A,{className:"mt-0.5 h-3 w-3 shrink-0"}),(0,d.jsxs)("span",{children:["Key saved, but couldn't load the model catalog:"," ",f.message]})]}),(0,d.jsx)("button",{type:"button",onClick:A,className:"shrink-0 rounded-md border border-amber-500/40 bg-amber-500/10 px-2.5 py-1 text-[11px] font-medium text-amber-100 hover:bg-amber-500/20",children:"Reload models"})]}),"valid"===f.kind&&i&&(0,d.jsxs)("div",{className:"space-y-2 rounded-md border border-emerald-500/20 bg-emerald-500/5 p-3",children:[(0,d.jsxs)("p",{className:"text-[11px] text-emerald-300",children:["✓ Key valid \xb7 ",f.modelCount," models available. Pick a starter set now or browse the full catalog on the Connect page later."]}),(0,d.jsx)("div",{className:"grid grid-cols-1 gap-1 sm:grid-cols-2",children:t.filter(a=>i.some(b=>b.id===a)).map(a=>{let b=k.has(a),c=i.find(b=>b.id===a);return(0,d.jsxs)("label",{className:(0,n.cn)("flex cursor-pointer items-center gap-2 rounded border px-2 py-1.5 text-[11px] transition",b?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,d.jsx)("input",{type:"checkbox",checked:b,onChange:b=>{l(c=>{let d=new Set(c);return b.target.checked?d.add(a):d.delete(a),d})},className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate font-mono",children:c?.id??a})]},a)})}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsxs)("button",{type:"button",onClick:B,disabled:0===k.size||v,className:"inline-flex h-7 items-center gap-1.5 rounded-md border border-primary/40 bg-primary/10 px-2.5 text-[11px] font-medium text-primary transition hover:bg-primary/20 disabled:cursor-not-allowed disabled:opacity-50",children:[v?(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"}):null,"Add ",k.size>0?k.size:""," voice",1===k.size?"":"s"]}),x&&(0,d.jsx)("p",{className:"text-[11px] text-emerald-300",children:x})]})]}),(0,d.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground/80",children:["Stored locally in ",(0,d.jsx)("code",{children:"~/.chorus/chorus.db"}),". Used only to call OpenRouter on your behalf. Direct API support for other providers (Anthropic, OpenAI, Google, xAI) is on the roadmap — today, route those models via OpenRouter."]})]})]})}var v=c(6506);let w=[{id:"claude-code",provider:"anthropic",label:"Claude Code",hint:"Anthropic — uses your existing Claude login"},{id:"codex-cli",provider:"openai",label:"Codex CLI",hint:"OpenAI — ChatGPT Plus/Pro subscription"},{id:"gemini-cli",provider:"google",label:"Gemini CLI",hint:"Google — uses your gcloud auth"},{id:"opencode-cli",provider:"opencode",label:"OpenCode",hint:"OpenCode Go — routes Kimi, DeepSeek, Grok"},{id:"kimi-cli",provider:"moonshot",label:"Kimi CLI",hint:"MoonshotAI — kimi-k2 plan"},{id:"grok-cli",provider:"grok",label:"Grok Build",hint:"xAI — auto-picks chorus from ~/.claude.json (SuperGrok Heavy plan)"},{id:"cursor",provider:"cursor",label:"Cursor",hint:"Cursor IDE — invoke chorus from inside it"},{id:"windsurf",provider:"windsurf",label:"Windsurf",hint:"Windsurf IDE — invoke chorus from inside it"}],x={"claude-code":"claude","codex-cli":"codex","gemini-cli":"gemini","opencode-cli":"opencode","kimi-cli":"kimi"},y={"claude-code":"claude-code","codex-cli":"codex-cli","gemini-cli":"gemini-cli","opencode-cli":"opencode-cli","kimi-cli":"kimi-cli"},z={dot:"bg-muted-foreground/40",gradient:"bg-gradient-to-br from-muted/30 via-card to-card"},A=w.filter(a=>"cursor"!==a.id&&"windsurf"!==a.id);function B(a){return(0,d.jsxs)("section",{className:"mb-8",children:[(0,d.jsx)("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:"CLI subscriptions"}),(0,d.jsx)("div",{className:"grid grid-cols-1 items-start gap-2 lg:grid-cols-2",children:A.map(b=>{let c=a.selectedClis.has(b.id),f=a.detection[b.id],g=f?.found===!0,h=a.detecting&&!f,i=!g&&!h&&a.manualOpen.has(b.id),j=a.manualBusy.has(b.id),k=g?v.r2[x[b.id]]??z:z;return(0,d.jsxs)("div",{className:(0,n.cn)("flex h-72 flex-col rounded-lg border transition",g?"border-border":"border-border/60 opacity-70",k.gradient),children:[(0,d.jsxs)("button",{type:"button",onClick:()=>g&&a.toggleCli(b.id),disabled:!g,className:(0,n.cn)("flex shrink-0 items-center gap-3 px-4 py-3 text-left transition",g?"hover:bg-card/30":"cursor-not-allowed"),children:[(0,d.jsx)("div",{className:(0,n.cn)("grid h-5 w-5 shrink-0 place-items-center rounded border transition",!g&&"opacity-50",c?"border-primary bg-primary text-primary-foreground":"border-border"),children:c&&(0,d.jsx)(q.A,{className:"h-3 w-3"})}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,d.jsx)("span",{className:(0,n.cn)("h-2 w-2 shrink-0 rounded-full",k.dot)}),(0,d.jsx)("h3",{className:"whitespace-nowrap text-sm font-semibold",children:b.label}),g?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-emerald-500/10 px-2 py-0.5 text-[10px] font-medium uppercase tracking-wider text-emerald-300",children:[(0,d.jsx)(q.A,{className:"h-3 w-3"})," Installed"]}):h?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"})," Searching…"]}):(0,d.jsx)("span",{className:"inline-flex items-center rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:"Not found"})]})]}),(0,d.jsxs)("div",{className:"flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4",children:[(0,d.jsx)("p",{className:"text-[11px] leading-relaxed text-muted-foreground",children:g&&f.path?(0,d.jsx)("code",{className:"rounded bg-muted/60 px-1.5 py-0.5 font-mono",children:f.path}):h?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1.5 text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"}),"Probing PATH and known install dirs…"]}):b.hint}),!g&&!h&&(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>a.toggleManual(b.id),className:"text-[11px] text-muted-foreground transition hover:text-foreground",children:i?"Cancel":"Don't see it? Set path manually →"}),i&&(0,d.jsx)(E,{cliId:b.id,value:a.manualPath[b.id]??"",onChange:c=>a.setManualPath(a=>({...a,[b.id]:c})),error:a.manualError[b.id],busy:j,onSubmit:()=>a.submitManualPath(b.id)})]}),g&&"opencode-cli"===b.id&&c&&(0,d.jsx)(D,{loading:a.opencodeModelsLoading,error:a.opencodeModelsError,models:a.opencodeModels,selected:a.selectedOpencodeModels,onToggle:a.toggleOpencodeModel}),g&&"opencode-cli"!==b.id&&c&&(0,d.jsx)(C,{cliId:b.id,voices:a.cliVoices,savingVoiceIds:a.savingVoiceIds,saveError:a.voiceSaveError,onToggle:a.toggleVoice})]})]},b.id)})}),(0,d.jsx)("p",{className:"mt-3 text-[11px] text-muted-foreground",children:"Cursor and Windsurf are IDEs that invoke chorus, not voices — wire them up on the Connect page after onboarding."})]})}function C({cliId:a,voices:b,savingVoiceIds:c,saveError:e,onToggle:f}){let g=y[a],h=b.filter(a=>a.provider===g).slice().sort((a,b)=>a.id===g?-1:b.id===g?1:a.model_id.localeCompare(b.model_id));if(0===h.length)return(0,d.jsx)("p",{className:"text-[11px] italic text-muted-foreground/70",children:"Models will populate after the daemon finishes seeding (refresh in a few seconds)."});let i=h.filter(a=>a.enabled).length;return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:"Models"}),(0,d.jsxs)("p",{className:"text-[11px] text-muted-foreground/70",children:[i,"/",h.length," enabled"]})]}),e&&(0,d.jsx)("p",{className:"text-[11px] text-destructive",children:e}),(0,d.jsx)("div",{className:"grid grid-cols-1 gap-1",children:h.map(a=>{let b=a.enabled,e=a.id===g;return(0,d.jsxs)("button",{type:"button",disabled:c.has(a.id),onClick:()=>f(a),title:a.model_id,className:(0,n.cn)("flex items-center gap-2 rounded border px-2 py-1.5 text-left text-[11px] transition disabled:opacity-60",b?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,d.jsx)("div",{className:(0,n.cn)("grid h-3 w-3 shrink-0 place-items-center rounded-sm border transition",b?"border-primary bg-primary text-primary-foreground":"border-border"),children:b&&(0,d.jsx)(q.A,{className:"h-2 w-2"})}),(0,d.jsx)("span",{className:"truncate font-mono",children:a.model_id}),e&&(0,d.jsx)("span",{className:"shrink-0 rounded-full bg-emerald-500/10 px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wider text-emerald-300",children:"current"})]},a.id)})})]})}function D({loading:a,error:b,models:c,selected:f,onToggle:g}){return(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("div",{className:"flex items-baseline justify-between gap-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-wider text-muted-foreground",children:"Pick models to enable"}),(0,d.jsxs)("p",{className:"text-[11px] text-muted-foreground/70",children:[f.size," selected"]})]}),a&&(0,d.jsxs)("p",{className:"flex items-center gap-2 text-[11px] text-muted-foreground",children:[(0,d.jsx)(e.A,{className:"h-3 w-3 animate-spin"}),"Listing models from"," ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:"opencode models"}),"…"]}),b&&(0,d.jsx)("p",{className:"text-[11px] text-destructive",children:b}),c&&(0,d.jsxs)("div",{className:"space-y-2",children:[Object.entries(c.gateways).filter(([a])=>a.startsWith("opencode")).sort(([a],[b])=>a.localeCompare(b)).map(([a,b])=>(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsxs)("p",{className:"text-[10px] font-mono text-muted-foreground/80",children:[a,"/"]}),(0,d.jsx)("div",{className:"grid grid-cols-1 gap-1",children:b.map(b=>{let c=f.has(b);return(0,d.jsxs)("button",{type:"button",onClick:()=>g(b),title:b,className:(0,n.cn)("flex items-center gap-2 rounded border px-2 py-1.5 text-left text-[11px] transition",c?"border-primary/50 bg-primary/10 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground/30"),children:[(0,d.jsx)("div",{className:(0,n.cn)("grid h-3 w-3 shrink-0 place-items-center rounded-sm border transition",c?"border-primary bg-primary text-primary-foreground":"border-border"),children:c&&(0,d.jsx)(q.A,{className:"h-2 w-2"})}),(0,d.jsx)("span",{className:"truncate font-mono",children:b.slice(a.length+1)})]},b)})})]},a)),(0,d.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground/70",children:["Pre-selected: ",c.defaultPicks.join(", ")||"none",". Change anytime in ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:"Settings"}),"."]})]})]})}function E({cliId:a,value:b,onChange:c,error:f,busy:g,onSubmit:h}){let i=function(a){switch(a){case"claude-code":return"claude";case"codex-cli":return"codex";case"gemini-cli":return"gemini";case"opencode-cli":return"opencode";case"kimi-cli":return"kimi";case"grok-cli":return"grok";default:return a}}(a);return(0,d.jsxs)("div",{className:"space-y-2 rounded-md border border-border bg-card/50 p-3",children:[(0,d.jsxs)("p",{className:"text-[11px] leading-relaxed text-muted-foreground",children:["Paste the full path to the"," ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:i})," binary. Run"," ",(0,d.jsxs)("code",{className:"rounded bg-muted px-1",children:["which ",i]})," (macOS / Linux) or ",(0,d.jsxs)("code",{className:"rounded bg-muted px-1",children:["where ",i]})," ","(Windows) to find it. The daemon will run"," ",(0,d.jsxs)("code",{className:"rounded bg-muted px-1",children:[i," --version"]})," with a 2s timeout to confirm the binary works and identifies as the"," ",i," CLI."]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(o,{value:b,onChange:a=>c(a.target.value),placeholder:`/full/path/to/${i}`,className:"flex-1 font-mono text-xs",spellCheck:!1,autoComplete:"off"}),(0,d.jsx)(j.$,{type:"button",variant:"secondary",disabled:g,onClick:h,children:g?(0,d.jsx)(e.A,{className:"h-4 w-4 animate-spin"}):"Verify"})]}),f&&(0,d.jsx)("p",{className:"text-[11px] text-destructive",children:f})]})}let F=[{id:"strict",label:"Strict",hint:"Read-only. Reviewers can inspect code but can't write files, exec shell, or hit the network."},{id:"workspace",label:"Workspace (recommended)",hint:"Read+write inside the chat dir, scoped shell, no network. Default for most teams."},{id:"full",label:"Full access",hint:"No sandbox at all. Only on a personal machine you fully trust."}];function G({sandboxProfile:a,setSandboxProfile:b,autoApprovePrompts:c,setAutoApprovePrompts:e,networkAccess:f,setNetworkAccess:g}){return(0,d.jsxs)("section",{className:"mb-8",children:[(0,d.jsx)("h2",{className:"mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground",children:"Permissions & sandbox"}),(0,d.jsx)("p",{className:"mb-4 text-xs leading-relaxed text-muted-foreground",children:"Controls what reviewers can do on your machine. You can change this anytime in Settings → Permissions."}),(0,d.jsx)("div",{className:"space-y-2",children:F.map(c=>{let e=a===c.id;return(0,d.jsxs)("button",{type:"button",onClick:()=>b(c.id),className:(0,n.cn)("flex w-full items-start gap-3 rounded-lg border p-4 text-left transition",e?"border-primary/50 bg-primary/10":"border-border bg-card hover:border-muted-foreground/30"),children:[(0,d.jsx)("div",{className:(0,n.cn)("mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition",e?"border-primary bg-primary text-primary-foreground":"border-border"),children:e&&(0,d.jsx)(q.A,{className:"h-3 w-3"})}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("div",{className:"text-sm font-medium",children:c.label}),(0,d.jsx)("div",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:c.hint})]})]},c.id)})}),(0,d.jsxs)("div",{className:"mt-3 space-y-2",children:[(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3",children:[(0,d.jsx)("input",{type:"checkbox",checked:c,onChange:a=>e(a.target.checked),className:"mt-1 h-4 w-4 cursor-pointer accent-primary"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1 text-xs leading-relaxed",children:[(0,d.jsx)("div",{className:"text-sm font-medium",children:"Skip in-CLI permission prompts"}),(0,d.jsxs)("div",{className:"mt-0.5 text-muted-foreground",children:["Passes ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:"--afk"})," /"," ",(0,d.jsx)("code",{className:"rounded bg-muted px-1",children:"auto_edit"}),"to spawned reviewers so they don't hang on per-tool prompts. Off = every action requires explicit consent in the CLI's TUI."]})]})]}),(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3",children:[(0,d.jsx)("input",{type:"checkbox",checked:f,onChange:a=>g(a.target.checked),className:"mt-1 h-4 w-4 cursor-pointer accent-primary"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1 text-xs leading-relaxed",children:[(0,d.jsx)("div",{className:"text-sm font-medium",children:"Allow outbound network from reviewers"}),(0,d.jsx)("div",{className:"mt-0.5 text-muted-foreground",children:"Off by default. Templates that explicitly need network override per phase."})]})]})]})]})}var H=c(66152);async function I(a){for(let b of a.selectedClis){let a=w.find(a=>a.id===b);a&&await (0,H.WH)(a.provider,{kind:"cli_subscription",value:a.id,updatedAt:Date.now()})}for(let[b,c]of Object.entries(a.apiKeys)){let a=c.trim();a&&await (0,H.WH)(b,{kind:"api_key",value:a,updatedAt:Date.now()})}await (0,k.Ep)({sandboxProfile:a.sandboxProfile,autoApprovePrompts:a.autoApprovePrompts,networkAccess:a.networkAccess}),a.selectedClis.has("opencode-cli")&&a.opencodeModels&&await J(a),await (0,H.Xx)({onboarded:!0})}async function J(a){let{listVoices:b,updateVoice:d,createVoice:e}=await Promise.resolve().then(c.bind(c,29843)),f=new Map((await b({provider:"opencode-cli"}).catch(()=>[])).map(a=>[a.id,a])),g=a.opencodeModels;g&&await Promise.all(g.flat.map(async b=>{let c=`opencode-cli:${b}`,g=a.selectedOpencodeModels.has(b),h=f.get(c);try{if(h)h.enabled!==g&&await d(c,{enabled:g});else{let a,c,{lineage:d,vendor_family:f}=(c=((a=b.indexOf("/"))>=0?b.slice(a+1):b).toLowerCase()).includes("kimi")?{lineage:"moonshot",vendor_family:null}:c.includes("claude")?{lineage:"anthropic",vendor_family:null}:c.includes("gpt")||/(?:^|[^a-z])o[1-9](?:$|[^a-z0-9])/.test(c)?{lineage:"openai",vendor_family:null}:c.includes("gemini")?{lineage:"google",vendor_family:null}:c.includes("deepseek")?{lineage:"opencode",vendor_family:"deepseek"}:c.includes("llama")||c.includes("meta")?{lineage:"opencode",vendor_family:"meta"}:c.includes("mistral")||c.includes("mixtral")?{lineage:"opencode",vendor_family:"mistral"}:c.includes("grok")||c.includes("xai")?{lineage:"opencode",vendor_family:"xai"}:{lineage:"opencode",vendor_family:null};await e({provider:"opencode-cli",model_id:b,label:b,source:"cli",lineage:d,vendor_family:f,enabled:g})}}catch{}}))}function K(){let a=(0,g.useRouter)(),[b,c]=(0,h.useTransition)(),[m,n]=(0,h.useState)(null),[o,p]=(0,h.useState)(new Set),[q,r]=(0,h.useState)([]),[s,t]=(0,h.useState)(new Set),[v,w]=(0,h.useState)(null),[x,y]=(0,h.useState)({}),[z,A]=(0,h.useState)("workspace"),[C,D]=(0,h.useState)(!0),[E,F]=(0,h.useState)(!1),[J,K]=(0,h.useState)({}),[L,M]=(0,h.useState)(!0),[N,O]=(0,h.useState)(new Set),[P,Q]=(0,h.useState)({}),[R,S]=(0,h.useState)({}),[T,U]=(0,h.useState)(new Set),[V,W]=(0,h.useState)(null),[X,Y]=(0,h.useState)(null),[Z,$]=(0,h.useState)(!1),[_,aa]=(0,h.useState)(new Set),ab=async a=>{t(b=>new Set(b).add(a.id)),w(null);try{let b=await (0,l.updateVoice)(a.id,{enabled:!a.enabled});r(a=>a.map(a=>a.id===b.id?b:a))}catch(a){w(a instanceof Error?a.message:"Couldn't save voice toggle.")}finally{t(b=>{let c=new Set(b);return c.delete(a.id),c})}},ac=async a=>{let b=(P[a]||"").trim();if(!b)return void S(b=>({...b,[a]:"Enter the full path to the CLI program (e.g. /usr/local/bin/claude)."}));U(b=>new Set(b).add(a)),S(b=>({...b,[a]:""}));try{let c=await (0,k.iW)(a,b);if(c.found){try{await (0,k.Df)(a,c.path??b)}catch(b){S(c=>({...c,[a]:`Validation passed but save failed: ${b instanceof Error?b.message:"unknown error"}. Try again, or paste the path again.`}));return}K(b=>({...b,[a]:c})),p(b=>new Set(b).add(a)),(0,l.listVoices)({source:"cli"}).then(r).catch(()=>{}),O(b=>{let c=new Set(b);return c.delete(a),c})}else{let b=c.reason??"couldn't run that path";S(c=>({...c,[a]:`Validation failed: ${b}.`}))}}catch{S(b=>({...b,[a]:"Validation failed. Is the daemon running?"}))}finally{U(b=>{let c=new Set(b);return c.delete(a),c})}},ad=o.size+Object.values(x).filter(a=>a.trim().length>0).length;return(0,d.jsx)("main",{className:"min-h-screen bg-background text-foreground",children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-5xl px-4 py-10 sm:px-6 sm:py-14",children:[(0,d.jsxs)("div",{className:"mb-8 flex items-center gap-3",children:[(0,d.jsx)("div",{className:"grid h-10 w-10 place-items-center rounded-md bg-primary/15 text-primary",children:(0,d.jsx)(i.U,{className:"h-6 w-6"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-xs uppercase tracking-wider text-muted-foreground",children:"Welcome to Chorus"}),(0,d.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:"Connect at least one model to begin"})]})]}),(0,d.jsx)("p",{className:"mb-8 text-sm leading-relaxed text-muted-foreground",children:"Chorus runs your prompt past 2–4 LLMs of different lineages and synthesises consensus. Pick the CLI subscriptions you already have, or paste API keys. You can change these later in Settings."}),(0,d.jsx)(B,{selectedClis:o,toggleCli:a=>{p(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},detection:J,detecting:L,cliVoices:q,savingVoiceIds:s,voiceSaveError:v,toggleVoice:ab,manualOpen:N,toggleManual:a=>{O(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c}),S(b=>({...b,[a]:""}))},manualPath:P,setManualPath:Q,manualError:R,manualBusy:T,submitManualPath:ac,opencodeModels:V,opencodeModelsError:X,opencodeModelsLoading:Z,selectedOpencodeModels:_,toggleOpencodeModel:a=>{aa(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}}),(0,d.jsx)(u,{apiKeys:x,updateApiKey:(a,b)=>{y(c=>({...c,[a]:b}))}}),(0,d.jsx)(G,{sandboxProfile:z,setSandboxProfile:A,autoApprovePrompts:C,setAutoApprovePrompts:D,networkAccess:E,setNetworkAccess:F}),m&&(0,d.jsx)("div",{className:"mb-6 rounded-md border border-destructive/50 bg-destructive/10 px-4 py-3 text-sm text-destructive",children:m}),(0,d.jsxs)("div",{className:"flex flex-col-reverse gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:0===ad?"Pick at least one to continue.":`${ad} ${1===ad?"credential":"credentials"} ready to save.`}),(0,d.jsx)(j.$,{onClick:()=>{(n(null),0===ad)?n("Pick at least one CLI or paste at least one API key to continue."):c(async()=>{try{await I({selectedClis:o,apiKeys:x,sandboxProfile:z,autoApprovePrompts:C,networkAccess:E,opencodeModels:V,selectedOpencodeModels:_}),a.push("/"),a.refresh()}catch(a){n(a instanceof H.$v?a.message:"Could not save. Is the Chorus daemon running?")}})},disabled:b||0===ad,className:"w-full sm:w-auto",children:b?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.A,{className:"mr-1 h-4 w-4 animate-spin"}),"Saving…"]}):(0,d.jsxs)(d.Fragment,{children:["Get started",(0,d.jsx)(f.A,{className:"ml-1 h-4 w-4"})]})})]})]})})}},77068:a=>{"use strict";a.exports=require("next/dist/shared/lib/size-limit")},79428:a=>{"use strict";a.exports=require("buffer")},82257:(a,b,c)=>{"use strict";c.d(b,{Eu:()=>g,M5:()=>e,Y8:()=>f});var d=c(34291);async function e(a){return(0,d.T)("/openrouter/save-key",{method:"POST",body:JSON.stringify({apiKey:a})})}async function f(){return(0,d.T)("/openrouter/models")}async function g(a,b){return(0,d.T)("/openrouter/voices",{method:"POST",body:JSON.stringify(b?{modelIds:a,apiKey:b}:{modelIds:a})})}},82786:(a,b,c)=>{"use strict";c.d(b,{F:()=>g});var d=c(84602);let e=a=>"boolean"==typeof a?`${a}`:0===a?"0":a,f=d.$,g=(a,b)=>c=>{var d;if((null==b?void 0:b.variants)==null)return f(a,null==c?void 0:c.class,null==c?void 0:c.className);let{variants:g,defaultVariants:h}=b,i=Object.keys(g).map(a=>{let b=null==c?void 0:c[a],d=null==h?void 0:h[a];if(null===b)return null;let f=e(b)||e(d);return g[a][f]}),j=c&&Object.entries(c).reduce((a,b)=>{let[c,d]=b;return void 0===d||(a[c]=d),a},{});return f(a,i,null==b||null==(d=b.compoundVariants)?void 0:d.reduce((a,b)=>{let{class:c,className:d,...e}=b;return Object.entries(e).every(a=>{let[b,c]=a;return Array.isArray(c)?c.includes({...h,...j}[b]):({...h,...j})[b]===c})?[...a,c,d]:a},[]),null==c?void 0:c.class,null==c?void 0:c.className)}},86114:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(96600).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/ubuntu/dev/chorus/src/app/onboarding/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/ubuntu/dev/chorus/src/app/onboarding/page.tsx","default")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},95047:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(52449).A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]])},97248:(a,b,c)=>{Promise.resolve().then(c.bind(c,86114))}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[332,451,504,385,681],()=>b(b.s=16169));module.exports=c})();
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/onboarding/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"821":{"*":{"id":"24188","name":"*","chunks":[],"async":false}},"1195":{"*":{"id":"70173","name":"*","chunks":[],"async":false}},"1245":{"*":{"id":"72325","name":"*","chunks":[],"async":false}},"1727":{"*":{"id":"43317","name":"*","chunks":[],"async":false}},"1996":{"*":{"id":"74679","name":"*","chunks":[],"async":false}},"2573":{"*":{"id":"23937","name":"*","chunks":[],"async":false}},"2897":{"*":{"id":"31193","name":"*","chunks":[],"async":false}},"3016":{"*":{"id":"36500","name":"*","chunks":[],"async":false}},"3068":{"*":{"id":"68936","name":"*","chunks":[],"async":false}},"3720":{"*":{"id":"10186","name":"*","chunks":[],"async":false}},"3779":{"*":{"id":"76941","name":"*","chunks":[],"async":false}},"3943":{"*":{"id":"51356","name":"*","chunks":[],"async":false}},"4400":{"*":{"id":"67485","name":"*","chunks":[],"async":false}},"4473":{"*":{"id":"37373","name":"*","chunks":[],"async":false}},"5017":{"*":{"id":"62753","name":"*","chunks":[],"async":false}},"5249":{"*":{"id":"28351","name":"*","chunks":[],"async":false}},"5482":{"*":{"id":"85080","name":"*","chunks":[],"async":false}},"5484":{"*":{"id":"25980","name":"*","chunks":[],"async":false}},"5921":{"*":{"id":"58874","name":"*","chunks":[],"async":false}},"6141":{"*":{"id":"46075","name":"*","chunks":[],"async":false}},"6501":{"*":{"id":"3758","name":"*","chunks":[],"async":false}},"7130":{"*":{"id":"42492","name":"*","chunks":[],"async":false}},"8344":{"*":{"id":"86095","name":"*","chunks":[],"async":false}},"8359":{"*":{"id":"96941","name":"*","chunks":[],"async":false}},"8952":{"*":{"id":"79652","name":"*","chunks":[],"async":false}},"9823":{"*":{"id":"6699","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/builtin/global-error.js":{"id":3720,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":3720,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/client-page.js":{"id":4473,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-page.js":{"id":4473,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/client-segment.js":{"id":3779,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-segment.js":{"id":3779,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":8952,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":8952,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/layout-router.js":{"id":5484,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/layout-router.js":{"id":5484,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/render-from-template-context.js":{"id":5482,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":5482,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/framework/boundary-components.js":{"id":5017,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":5017,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":3068,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":3068,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":2051,"name":"*","chunks":["177","static/chunks/app/layout-c72dccd02780d8ff.js"],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":9241,"name":"*","chunks":["177","static/chunks/app/layout-c72dccd02780d8ff.js"],"async":false},"/home/ubuntu/dev/chorus/src/app/globals.css":{"id":6315,"name":"*","chunks":["177","static/chunks/app/layout-c72dccd02780d8ff.js"],"async":false},"/home/ubuntu/dev/chorus/src/app/new/page.tsx":{"id":6141,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/onboarding/page.tsx":{"id":1996,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","641","static/chunks/641-3e7b9575770aa968.js","566","static/chunks/app/onboarding/page-0ad8dceca7279475.js"],"async":false},"/home/ubuntu/dev/chorus/src/app/personas/page.tsx":{"id":5921,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/settings/page.tsx":{"id":3943,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/templates/page.tsx":{"id":3016,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/demo/[scenario]/page.tsx":{"id":5249,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/components/app-sidebar.tsx":{"id":821,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/mobile-top-bar.tsx":{"id":8344,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/openrouter-card.tsx":{"id":7130,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/components/orchestrator-card.tsx":{"id":1727,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/components/runs-table.tsx":{"id":2897,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/settings/permissions/permissions-form.tsx":{"id":4400,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/lucide-react@1.12.0_react@19.2.4/node_modules/lucide-react/dist/esm/Icon.mjs":{"id":6501,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/app-dir/link.js":{"id":2573,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/app-dir/link.js":{"id":2573,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/lineage-fleet-card.tsx":{"id":9823,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/opencode-fleet-card.tsx":{"id":1195,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/openrouter-fleet-card.tsx":{"id":8359,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/live-run-real/index.tsx":{"id":1245,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/ubuntu/dev/chorus/src/":[],"/home/ubuntu/dev/chorus/src/app/layout":[{"inlined":false,"path":"static/css/b914f2b25cf933a9.css"}],"/home/ubuntu/dev/chorus/src/app/page":[],"/home/ubuntu/dev/chorus/src/app/onboarding/page":[]},"rscModuleMapping":{"821":{"*":{"id":"80434","name":"*","chunks":[],"async":false}},"1195":{"*":{"id":"94335","name":"*","chunks":[],"async":false}},"1245":{"*":{"id":"73354","name":"*","chunks":[],"async":false}},"1727":{"*":{"id":"39663","name":"*","chunks":[],"async":false}},"1996":{"*":{"id":"86114","name":"*","chunks":[],"async":false}},"2573":{"*":{"id":"42711","name":"*","chunks":[],"async":false}},"2897":{"*":{"id":"55803","name":"*","chunks":[],"async":false}},"3016":{"*":{"id":"45036","name":"*","chunks":[],"async":false}},"3068":{"*":{"id":"15858","name":"*","chunks":[],"async":false}},"3720":{"*":{"id":"10312","name":"*","chunks":[],"async":false}},"3779":{"*":{"id":"56207","name":"*","chunks":[],"async":false}},"3943":{"*":{"id":"72778","name":"*","chunks":[],"async":false}},"4400":{"*":{"id":"89719","name":"*","chunks":[],"async":false}},"4473":{"*":{"id":"38883","name":"*","chunks":[],"async":false}},"5017":{"*":{"id":"90039","name":"*","chunks":[],"async":false}},"5249":{"*":{"id":"32517","name":"*","chunks":[],"async":false}},"5482":{"*":{"id":"21554","name":"*","chunks":[],"async":false}},"5484":{"*":{"id":"14374","name":"*","chunks":[],"async":false}},"5921":{"*":{"id":"32062","name":"*","chunks":[],"async":false}},"6141":{"*":{"id":"37825","name":"*","chunks":[],"async":false}},"6315":{"*":{"id":"75234","name":"*","chunks":[],"async":false}},"6501":{"*":{"id":"36135","name":"*","chunks":[],"async":false}},"7130":{"*":{"id":"22030","name":"*","chunks":[],"async":false}},"8344":{"*":{"id":"23154","name":"*","chunks":[],"async":false}},"8359":{"*":{"id":"59979","name":"*","chunks":[],"async":false}},"8952":{"*":{"id":"97314","name":"*","chunks":[],"async":false}},"9823":{"*":{"id":"92705","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/onboarding/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"821":{"*":{"id":"24188","name":"*","chunks":[],"async":false}},"1195":{"*":{"id":"70173","name":"*","chunks":[],"async":false}},"1245":{"*":{"id":"72325","name":"*","chunks":[],"async":false}},"1727":{"*":{"id":"43317","name":"*","chunks":[],"async":false}},"1996":{"*":{"id":"74679","name":"*","chunks":[],"async":false}},"2573":{"*":{"id":"23937","name":"*","chunks":[],"async":false}},"2897":{"*":{"id":"31193","name":"*","chunks":[],"async":false}},"3016":{"*":{"id":"36500","name":"*","chunks":[],"async":false}},"3068":{"*":{"id":"68936","name":"*","chunks":[],"async":false}},"3720":{"*":{"id":"10186","name":"*","chunks":[],"async":false}},"3779":{"*":{"id":"76941","name":"*","chunks":[],"async":false}},"3943":{"*":{"id":"51356","name":"*","chunks":[],"async":false}},"4400":{"*":{"id":"67485","name":"*","chunks":[],"async":false}},"4473":{"*":{"id":"37373","name":"*","chunks":[],"async":false}},"5017":{"*":{"id":"62753","name":"*","chunks":[],"async":false}},"5249":{"*":{"id":"28351","name":"*","chunks":[],"async":false}},"5482":{"*":{"id":"85080","name":"*","chunks":[],"async":false}},"5484":{"*":{"id":"25980","name":"*","chunks":[],"async":false}},"5921":{"*":{"id":"58874","name":"*","chunks":[],"async":false}},"6141":{"*":{"id":"46075","name":"*","chunks":[],"async":false}},"6501":{"*":{"id":"3758","name":"*","chunks":[],"async":false}},"7130":{"*":{"id":"42492","name":"*","chunks":[],"async":false}},"8344":{"*":{"id":"86095","name":"*","chunks":[],"async":false}},"8359":{"*":{"id":"96941","name":"*","chunks":[],"async":false}},"8952":{"*":{"id":"79652","name":"*","chunks":[],"async":false}},"9823":{"*":{"id":"6699","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/builtin/global-error.js":{"id":3720,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":3720,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/client-page.js":{"id":4473,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-page.js":{"id":4473,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/client-segment.js":{"id":3779,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/client-segment.js":{"id":3779,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":8952,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":8952,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/layout-router.js":{"id":5484,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/layout-router.js":{"id":5484,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/render-from-template-context.js":{"id":5482,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":5482,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/framework/boundary-components.js":{"id":5017,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":5017,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":3068,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":3068,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":2051,"name":"*","chunks":["177","static/chunks/app/layout-c72dccd02780d8ff.js"],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":9241,"name":"*","chunks":["177","static/chunks/app/layout-c72dccd02780d8ff.js"],"async":false},"/home/ubuntu/dev/chorus/src/app/globals.css":{"id":6315,"name":"*","chunks":["177","static/chunks/app/layout-c72dccd02780d8ff.js"],"async":false},"/home/ubuntu/dev/chorus/src/app/new/page.tsx":{"id":6141,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/onboarding/page.tsx":{"id":1996,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","641","static/chunks/641-3e7b9575770aa968.js","566","static/chunks/app/onboarding/page-66e7f39dc92dd401.js"],"async":false},"/home/ubuntu/dev/chorus/src/app/personas/page.tsx":{"id":5921,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/settings/page.tsx":{"id":3943,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/templates/page.tsx":{"id":3016,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/components/app-sidebar.tsx":{"id":821,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/mobile-top-bar.tsx":{"id":8344,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/openrouter-card.tsx":{"id":7130,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/components/orchestrator-card.tsx":{"id":1727,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/demo/[scenario]/page.tsx":{"id":5249,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/components/runs-table.tsx":{"id":2897,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/src/app/settings/permissions/permissions-form.tsx":{"id":4400,"name":"*","chunks":[],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/lucide-react@1.12.0_react@19.2.4/node_modules/lucide-react/dist/esm/Icon.mjs":{"id":6501,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/app-dir/link.js":{"id":2573,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/node_modules/.pnpm/next@16.2.4_@babel+core@7.29.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/esm/client/app-dir/link.js":{"id":2573,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/lineage-fleet-card.tsx":{"id":9823,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/opencode-fleet-card.tsx":{"id":1195,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/openrouter-fleet-card.tsx":{"id":8359,"name":"*","chunks":["742","static/chunks/742-e466c37ab445a8a1.js","832","static/chunks/832-18bf24783a3a5332.js","641","static/chunks/641-3e7b9575770aa968.js","344","static/chunks/344-17db55a402a0742b.js","974","static/chunks/app/page-4bbcd06414430038.js"],"async":false},"/home/ubuntu/dev/chorus/src/components/live-run-real/index.tsx":{"id":1245,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/ubuntu/dev/chorus/src/":[],"/home/ubuntu/dev/chorus/src/app/layout":[{"inlined":false,"path":"static/css/b914f2b25cf933a9.css"}],"/home/ubuntu/dev/chorus/src/app/page":[],"/home/ubuntu/dev/chorus/src/app/onboarding/page":[]},"rscModuleMapping":{"821":{"*":{"id":"80434","name":"*","chunks":[],"async":false}},"1195":{"*":{"id":"94335","name":"*","chunks":[],"async":false}},"1245":{"*":{"id":"73354","name":"*","chunks":[],"async":false}},"1727":{"*":{"id":"39663","name":"*","chunks":[],"async":false}},"1996":{"*":{"id":"86114","name":"*","chunks":[],"async":false}},"2573":{"*":{"id":"42711","name":"*","chunks":[],"async":false}},"2897":{"*":{"id":"55803","name":"*","chunks":[],"async":false}},"3016":{"*":{"id":"45036","name":"*","chunks":[],"async":false}},"3068":{"*":{"id":"15858","name":"*","chunks":[],"async":false}},"3720":{"*":{"id":"10312","name":"*","chunks":[],"async":false}},"3779":{"*":{"id":"56207","name":"*","chunks":[],"async":false}},"3943":{"*":{"id":"72778","name":"*","chunks":[],"async":false}},"4400":{"*":{"id":"89719","name":"*","chunks":[],"async":false}},"4473":{"*":{"id":"38883","name":"*","chunks":[],"async":false}},"5017":{"*":{"id":"90039","name":"*","chunks":[],"async":false}},"5249":{"*":{"id":"32517","name":"*","chunks":[],"async":false}},"5482":{"*":{"id":"21554","name":"*","chunks":[],"async":false}},"5484":{"*":{"id":"14374","name":"*","chunks":[],"async":false}},"5921":{"*":{"id":"32062","name":"*","chunks":[],"async":false}},"6141":{"*":{"id":"37825","name":"*","chunks":[],"async":false}},"6315":{"*":{"id":"75234","name":"*","chunks":[],"async":false}},"6501":{"*":{"id":"36135","name":"*","chunks":[],"async":false}},"7130":{"*":{"id":"22030","name":"*","chunks":[],"async":false}},"8344":{"*":{"id":"23154","name":"*","chunks":[],"async":false}},"8359":{"*":{"id":"59979","name":"*","chunks":[],"async":false}},"8952":{"*":{"id":"97314","name":"*","chunks":[],"async":false}},"9823":{"*":{"id":"92705","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="dark __variable_246ccd __variable_4c40f6 h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/f5271587012faf78-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/b914f2b25cf933a9.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-87142ab87b87c8fb.js"/><script src="/_next/static/chunks/ed64ccb0-b7d2b5246d18ca7e.js" async=""></script><script src="/_next/static/chunks/128-a5d059bf5b2e5090.js" async=""></script><script src="/_next/static/chunks/main-app-e9f7985e32dc8a63.js" async=""></script><script src="/_next/static/chunks/742-e466c37ab445a8a1.js" async=""></script><script src="/_next/static/chunks/641-3e7b9575770aa968.js" async=""></script><script src="/_next/static/chunks/app/onboarding/page-0ad8dceca7279475.js" async=""></script><meta name="next-size-adjust" content=""/><title>Chorus — many voices, one chorus</title><meta name="description" content="The polished orchestrator over your AI fleet. Paste a task. Pick a template. Watch multiple LLMs reach consensus."/><link rel="icon" href="/favicon.ico?b67a357858af4169" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon.svg?79b94d624cb60ac1" type="image/svg+xml" sizes="any"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><main class="min-h-screen bg-background text-foreground"><div class="mx-auto w-full max-w-5xl px-4 py-10 sm:px-6 sm:py-14"><div class="mb-8 flex items-center gap-3"><div class="grid h-10 w-10 place-items-center rounded-md bg-primary/15 text-primary"><svg viewBox="0 0 32 32" aria-hidden="true" class="h-6 w-6" fill="currentColor"><circle cx="11" cy="20" r="3.2" fill-opacity="0.55"></circle><circle cx="21" cy="20" r="3.2" fill-opacity="0.55"></circle><circle cx="16" cy="11" r="3.2"></circle></svg></div><div><p class="text-xs uppercase tracking-wider text-muted-foreground">Welcome to Chorus</p><h1 class="text-2xl font-semibold tracking-tight">Connect at least one model to begin</h1></div></div><p class="mb-8 text-sm leading-relaxed text-muted-foreground">Chorus runs your prompt past 2–4 LLMs of different lineages and synthesises consensus. Pick the CLI subscriptions you already have, or paste API keys. You can change these later in Settings.</p><section class="mb-8"><h2 class="mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground">CLI subscriptions</h2><div class="grid grid-cols-1 items-start gap-2 lg:grid-cols-2"><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Claude Code</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Codex CLI</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Gemini CLI</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">OpenCode</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Kimi CLI</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div></div><p class="mt-3 text-[11px] text-muted-foreground">Cursor and Windsurf are IDEs that invoke chorus, not voices — wire them up on the Connect page after onboarding.</p></section><section class="mb-8"><h2 class="mb-3 flex flex-wrap items-baseline gap-x-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground"><span>API access</span><span class="font-normal normal-case text-muted-foreground/70">optional — gives you any model on OpenRouter as a chorus voice</span></h2><div data-slot="card" class="flex flex-col gap-6 rounded-xl border text-card-foreground shadow-sm space-y-3 bg-card p-4"><div class="flex items-center justify-between"><label for="apikey-openrouter" class="text-sm font-medium">OpenRouter API key</label><a href="https://openrouter.ai/keys" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground">Get a key <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link h-2.5 w-2.5" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div><div class="flex items-center gap-2"><input type="password" data-slot="input" class="h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex-1 font-mono text-xs" id="apikey-openrouter" autoComplete="off" spellCheck="false" placeholder="sk-or-v1-…" value=""/><button type="button" disabled="" class="inline-flex h-9 items-center gap-1.5 rounded-md border px-3 text-[11px] font-medium transition disabled:cursor-not-allowed disabled:opacity-50 border-primary/40 bg-primary/10 text-primary hover:bg-primary/20">Validate &amp; save</button></div><p class="text-[11px] leading-relaxed text-muted-foreground/80">Stored locally in <code>~/.chorus/chorus.db</code>. Used only to call OpenRouter on your behalf. Direct API support for other providers (Anthropic, OpenAI, Google, xAI) is on the roadmap — today, route those models via OpenRouter.</p></div></section><section class="mb-8"><h2 class="mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground">Permissions &amp; sandbox</h2><p class="mb-4 text-xs leading-relaxed text-muted-foreground">Controls what reviewers can do on your machine. You can change this anytime in Settings → Permissions.</p><div class="space-y-2"><button type="button" class="flex w-full items-start gap-3 rounded-lg border p-4 text-left transition border-border bg-card hover:border-muted-foreground/30"><div class="mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition border-border"></div><div class="min-w-0 flex-1"><div class="text-sm font-medium">Strict</div><div class="mt-1 text-xs leading-relaxed text-muted-foreground">Read-only. Reviewers can inspect code but can&#x27;t write files, exec shell, or hit the network.</div></div></button><button type="button" class="flex w-full items-start gap-3 rounded-lg border p-4 text-left transition border-primary/50 bg-primary/10"><div class="mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition border-primary bg-primary text-primary-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check h-3 w-3" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></div><div class="min-w-0 flex-1"><div class="text-sm font-medium">Workspace (recommended)</div><div class="mt-1 text-xs leading-relaxed text-muted-foreground">Read+write inside the chat dir, scoped shell, no network. Default for most teams.</div></div></button><button type="button" class="flex w-full items-start gap-3 rounded-lg border p-4 text-left transition border-border bg-card hover:border-muted-foreground/30"><div class="mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition border-border"></div><div class="min-w-0 flex-1"><div class="text-sm font-medium">Full access</div><div class="mt-1 text-xs leading-relaxed text-muted-foreground">No sandbox at all. Only on a personal machine you fully trust.</div></div></button></div><div class="mt-3 space-y-2"><label class="flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3"><input type="checkbox" class="mt-1 h-4 w-4 cursor-pointer accent-primary" checked=""/><div class="min-w-0 flex-1 text-xs leading-relaxed"><div class="text-sm font-medium">Skip in-CLI permission prompts</div><div class="mt-0.5 text-muted-foreground">Passes <code class="rounded bg-muted px-1">--afk</code> /<!-- --> <code class="rounded bg-muted px-1">auto_edit</code>to spawned reviewers so they don&#x27;t hang on per-tool prompts. Off = every action requires explicit consent in the CLI&#x27;s TUI.</div></div></label><label class="flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3"><input type="checkbox" class="mt-1 h-4 w-4 cursor-pointer accent-primary"/><div class="min-w-0 flex-1 text-xs leading-relaxed"><div class="text-sm font-medium">Allow outbound network from reviewers</div><div class="mt-0.5 text-muted-foreground">Off by default. Templates that explicitly need network override per phase.</div></div></label></div></section><div class="flex flex-col-reverse gap-3 sm:flex-row sm:items-center sm:justify-between"><p class="text-xs text-muted-foreground">Pick at least one to continue.</p><button data-slot="button" data-variant="default" data-size="default" class="inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 bg-primary text-primary-foreground hover:bg-primary/90 h-9 px-4 py-2 has-[&gt;svg]:px-3 w-full sm:w-auto" disabled="">Get started<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right ml-1 h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-87142ab87b87c8fb.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[5484,[],\"\"]\n3:I[5482,[],\"\"]\n4:I[4473,[],\"ClientPageRoot\"]\n5:I[1996,[\"742\",\"static/chunks/742-e466c37ab445a8a1.js\",\"641\",\"static/chunks/641-3e7b9575770aa968.js\",\"566\",\"static/chunks/app/onboarding/page-0ad8dceca7279475.js\"],\"default\"]\n8:I[5017,[],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nc:I[5017,[],\"ViewportBoundary\"]\ne:I[5017,[],\"MetadataBoundary\"]\n10:I[3720,[],\"default\",1]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/f5271587012faf78-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/b914f2b25cf933a9.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"onboarding\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"onboarding\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b914f2b25cf933a9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_246ccd __variable_4c40f6 h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-background text-foreground\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}}],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,\"$@b\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"PLVy0iTepN1xpE0hbQBjx\"}\n"])</script><script>self.__next_f.push([1,"11:[]\nb:\"$W11\"\n6:{}\n7:\"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"12:I[3068,[],\"IconMark\"]\na:null\nf:[[\"$\",\"title\",\"0\",{\"children\":\"Chorus — many voices, one chorus\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"The polished orchestrator over your AI fleet. Paste a task. Pick a template. Watch multiple LLMs reach consensus.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?b67a357858af4169\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg?79b94d624cb60ac1\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L12\",\"4\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="dark __variable_246ccd __variable_4c40f6 h-full antialiased"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/22a5144ee8d83bca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/f5271587012faf78-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/b914f2b25cf933a9.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-87142ab87b87c8fb.js"/><script src="/_next/static/chunks/ed64ccb0-b7d2b5246d18ca7e.js" async=""></script><script src="/_next/static/chunks/128-a5d059bf5b2e5090.js" async=""></script><script src="/_next/static/chunks/main-app-e9f7985e32dc8a63.js" async=""></script><script src="/_next/static/chunks/742-e466c37ab445a8a1.js" async=""></script><script src="/_next/static/chunks/641-3e7b9575770aa968.js" async=""></script><script src="/_next/static/chunks/app/onboarding/page-66e7f39dc92dd401.js" async=""></script><meta name="next-size-adjust" content=""/><title>Chorus — many voices, one chorus</title><meta name="description" content="The polished orchestrator over your AI fleet. Paste a task. Pick a template. Watch multiple LLMs reach consensus."/><link rel="icon" href="/favicon.ico?b67a357858af4169" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon.svg?79b94d624cb60ac1" type="image/svg+xml" sizes="any"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="min-h-full flex flex-col bg-background text-foreground"><div hidden=""><!--$--><!--/$--></div><main class="min-h-screen bg-background text-foreground"><div class="mx-auto w-full max-w-5xl px-4 py-10 sm:px-6 sm:py-14"><div class="mb-8 flex items-center gap-3"><div class="grid h-10 w-10 place-items-center rounded-md bg-primary/15 text-primary"><svg viewBox="0 0 32 32" aria-hidden="true" class="h-6 w-6" fill="currentColor"><circle cx="11" cy="20" r="3.2" fill-opacity="0.55"></circle><circle cx="21" cy="20" r="3.2" fill-opacity="0.55"></circle><circle cx="16" cy="11" r="3.2"></circle></svg></div><div><p class="text-xs uppercase tracking-wider text-muted-foreground">Welcome to Chorus</p><h1 class="text-2xl font-semibold tracking-tight">Connect at least one model to begin</h1></div></div><p class="mb-8 text-sm leading-relaxed text-muted-foreground">Chorus runs your prompt past 2–4 LLMs of different lineages and synthesises consensus. Pick the CLI subscriptions you already have, or paste API keys. You can change these later in Settings.</p><section class="mb-8"><h2 class="mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground">CLI subscriptions</h2><div class="grid grid-cols-1 items-start gap-2 lg:grid-cols-2"><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Claude Code</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Codex CLI</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Gemini CLI</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">OpenCode</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Kimi CLI</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div><div class="flex h-72 flex-col rounded-lg border transition border-border/60 opacity-70 bg-gradient-to-br from-muted/30 via-card to-card"><button type="button" disabled="" class="flex shrink-0 items-center gap-3 px-4 py-3 text-left transition cursor-not-allowed"><div class="grid h-5 w-5 shrink-0 place-items-center rounded border transition opacity-50 border-border"></div><div class="flex min-w-0 flex-1 items-center gap-2"><span class="h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40"></span><h3 class="whitespace-nowrap text-sm font-semibold">Grok Build</h3><span class="inline-flex items-center gap-1 rounded-full border border-border bg-card px-2 py-0.5 text-[10px] font-medium text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg> Searching…</span></div></button><div class="flex flex-1 flex-col gap-2 overflow-y-auto border-t border-border bg-card/30 p-4"><p class="text-[11px] leading-relaxed text-muted-foreground"><span class="inline-flex items-center gap-1.5 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3 w-3 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Probing PATH and known install dirs…</span></p></div></div></div><p class="mt-3 text-[11px] text-muted-foreground">Cursor and Windsurf are IDEs that invoke chorus, not voices — wire them up on the Connect page after onboarding.</p></section><section class="mb-8"><h2 class="mb-3 flex flex-wrap items-baseline gap-x-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground"><span>API access</span><span class="font-normal normal-case text-muted-foreground/70">optional — gives you any model on OpenRouter as a chorus voice</span></h2><div data-slot="card" class="flex flex-col gap-6 rounded-xl border text-card-foreground shadow-sm space-y-3 bg-card p-4"><div class="flex items-center justify-between"><label for="apikey-openrouter" class="text-sm font-medium">OpenRouter API key</label><a href="https://openrouter.ai/keys" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1 text-[11px] text-muted-foreground hover:text-foreground">Get a key <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link h-2.5 w-2.5" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div><div class="flex items-center gap-2"><input type="password" data-slot="input" class="h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex-1 font-mono text-xs" id="apikey-openrouter" autoComplete="off" spellCheck="false" placeholder="sk-or-v1-…" value=""/><button type="button" disabled="" class="inline-flex h-9 items-center gap-1.5 rounded-md border px-3 text-[11px] font-medium transition disabled:cursor-not-allowed disabled:opacity-50 border-primary/40 bg-primary/10 text-primary hover:bg-primary/20">Validate &amp; save</button></div><p class="text-[11px] leading-relaxed text-muted-foreground/80">Stored locally in <code>~/.chorus/chorus.db</code>. Used only to call OpenRouter on your behalf. Direct API support for other providers (Anthropic, OpenAI, Google, xAI) is on the roadmap — today, route those models via OpenRouter.</p></div></section><section class="mb-8"><h2 class="mb-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground">Permissions &amp; sandbox</h2><p class="mb-4 text-xs leading-relaxed text-muted-foreground">Controls what reviewers can do on your machine. You can change this anytime in Settings → Permissions.</p><div class="space-y-2"><button type="button" class="flex w-full items-start gap-3 rounded-lg border p-4 text-left transition border-border bg-card hover:border-muted-foreground/30"><div class="mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition border-border"></div><div class="min-w-0 flex-1"><div class="text-sm font-medium">Strict</div><div class="mt-1 text-xs leading-relaxed text-muted-foreground">Read-only. Reviewers can inspect code but can&#x27;t write files, exec shell, or hit the network.</div></div></button><button type="button" class="flex w-full items-start gap-3 rounded-lg border p-4 text-left transition border-primary/50 bg-primary/10"><div class="mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition border-primary bg-primary text-primary-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check h-3 w-3" aria-hidden="true"><path d="M20 6 9 17l-5-5"></path></svg></div><div class="min-w-0 flex-1"><div class="text-sm font-medium">Workspace (recommended)</div><div class="mt-1 text-xs leading-relaxed text-muted-foreground">Read+write inside the chat dir, scoped shell, no network. Default for most teams.</div></div></button><button type="button" class="flex w-full items-start gap-3 rounded-lg border p-4 text-left transition border-border bg-card hover:border-muted-foreground/30"><div class="mt-0.5 grid h-5 w-5 shrink-0 place-items-center rounded-full border transition border-border"></div><div class="min-w-0 flex-1"><div class="text-sm font-medium">Full access</div><div class="mt-1 text-xs leading-relaxed text-muted-foreground">No sandbox at all. Only on a personal machine you fully trust.</div></div></button></div><div class="mt-3 space-y-2"><label class="flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3"><input type="checkbox" class="mt-1 h-4 w-4 cursor-pointer accent-primary" checked=""/><div class="min-w-0 flex-1 text-xs leading-relaxed"><div class="text-sm font-medium">Skip in-CLI permission prompts</div><div class="mt-0.5 text-muted-foreground">Passes <code class="rounded bg-muted px-1">--afk</code> /<!-- --> <code class="rounded bg-muted px-1">auto_edit</code>to spawned reviewers so they don&#x27;t hang on per-tool prompts. Off = every action requires explicit consent in the CLI&#x27;s TUI.</div></div></label><label class="flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card p-3"><input type="checkbox" class="mt-1 h-4 w-4 cursor-pointer accent-primary"/><div class="min-w-0 flex-1 text-xs leading-relaxed"><div class="text-sm font-medium">Allow outbound network from reviewers</div><div class="mt-0.5 text-muted-foreground">Off by default. Templates that explicitly need network override per phase.</div></div></label></div></section><div class="flex flex-col-reverse gap-3 sm:flex-row sm:items-center sm:justify-between"><p class="text-xs text-muted-foreground">Pick at least one to continue.</p><button data-slot="button" data-variant="default" data-size="default" class="inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 bg-primary text-primary-foreground hover:bg-primary/90 h-9 px-4 py-2 has-[&gt;svg]:px-3 w-full sm:w-auto" disabled="">Get started<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right ml-1 h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div></div></main><!--$--><!--/$--><script src="/_next/static/chunks/webpack-87142ab87b87c8fb.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[5484,[],\"\"]\n3:I[5482,[],\"\"]\n4:I[4473,[],\"ClientPageRoot\"]\n5:I[1996,[\"742\",\"static/chunks/742-e466c37ab445a8a1.js\",\"641\",\"static/chunks/641-3e7b9575770aa968.js\",\"566\",\"static/chunks/app/onboarding/page-66e7f39dc92dd401.js\"],\"default\"]\n8:I[5017,[],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nc:I[5017,[],\"ViewportBoundary\"]\ne:I[5017,[],\"MetadataBoundary\"]\n10:I[3720,[],\"default\",1]\n:HL[\"/_next/static/media/22a5144ee8d83bca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/f5271587012faf78-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/b914f2b25cf933a9.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"onboarding\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"onboarding\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b914f2b25cf933a9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark __variable_246ccd __variable_4c40f6 h-full antialiased\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-full flex flex-col bg-background text-foreground\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}}],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,null]},null,false,\"$@b\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"K8p7q94EZUywXFc1L87FJ\"}\n"])</script><script>self.__next_f.push([1,"11:[]\nb:\"$W11\"\n6:{}\n7:\"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"12:I[3068,[],\"IconMark\"]\na:null\nf:[[\"$\",\"title\",\"0\",{\"children\":\"Chorus — many voices, one chorus\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"The polished orchestrator over your AI fleet. Paste a task. Pick a template. Watch multiple LLMs reach consensus.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?b67a357858af4169\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg?79b94d624cb60ac1\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$L12\",\"4\",{}]]\n"])</script></body></html>
@@ -2,7 +2,7 @@
2
2
  2:I[5484,[],""]
3
3
  3:I[5482,[],""]
4
4
  4:I[4473,[],"ClientPageRoot"]
5
- 5:I[1996,["742","static/chunks/742-e466c37ab445a8a1.js","641","static/chunks/641-3e7b9575770aa968.js","566","static/chunks/app/onboarding/page-0ad8dceca7279475.js"],"default"]
5
+ 5:I[1996,["742","static/chunks/742-e466c37ab445a8a1.js","641","static/chunks/641-3e7b9575770aa968.js","566","static/chunks/app/onboarding/page-66e7f39dc92dd401.js"],"default"]
6
6
  8:I[5017,[],"OutletBoundary"]
7
7
  9:"$Sreact.suspense"
8
8
  c:I[5017,[],"ViewportBoundary"]
@@ -11,7 +11,7 @@ e:I[5017,[],"MetadataBoundary"]
11
11
  :HL["/_next/static/media/22a5144ee8d83bca-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
12
12
  :HL["/_next/static/media/f5271587012faf78-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
13
  :HL["/_next/static/css/b914f2b25cf933a9.css","style"]
14
- 0:{"P":null,"c":["","onboarding"],"q":"","i":false,"f":[[["",{"children":["onboarding",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b914f2b25cf933a9.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"dark __variable_246ccd __variable_4c40f6 h-full antialiased","children":["$","body",null,{"className":"min-h-full flex flex-col bg-background text-foreground","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],null,["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,"$@b"]},null,false,null],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"PLVy0iTepN1xpE0hbQBjx"}
14
+ 0:{"P":null,"c":["","onboarding"],"q":"","i":false,"f":[[["",{"children":["onboarding",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b914f2b25cf933a9.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"dark __variable_246ccd __variable_4c40f6 h-full antialiased","children":["$","body",null,{"className":"min-h-full flex flex-col bg-background text-foreground","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@6","$@7"]}}],null,["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,"$@b"]},null,false,null],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$10",[]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"K8p7q94EZUywXFc1L87FJ"}
15
15
  11:[]
16
16
  b:"$W11"
17
17
  6:{}