agent-relay 2.0.16 → 2.0.18

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 (153) hide show
  1. package/deploy/workspace/entrypoint.sh +35 -19
  2. package/deploy/workspace/git-credential-relay +82 -7
  3. package/dist/dashboard/out/404.html +1 -1
  4. package/dist/dashboard/out/_next/static/chunks/320-402ffc8646b31da1.js +1 -0
  5. package/dist/dashboard/out/_next/static/chunks/83-26d2bde54616ee90.js +1 -0
  6. package/{packages/dashboard/ui-dist/_next/static/chunks/app/app/page-9d6bc8729b429956.js → dist/dashboard/out/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js} +1 -1
  7. package/dist/dashboard/out/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +1 -0
  8. package/dist/dashboard/out/_next/static/chunks/app/login/page-435eceb0073be027.js +1 -0
  9. package/dist/dashboard/out/_next/static/chunks/app/{page-487fa38f041815c1.js → page-8119d4246743574e.js} +1 -1
  10. package/dist/dashboard/out/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +1 -0
  11. package/dist/dashboard/out/_next/static/chunks/{main-5a40a5ae29646e1b.js → main-311c3db74dcfadb7.js} +1 -1
  12. package/dist/dashboard/out/_next/static/css/{605dd4e30c91986f.css → 45361ce86b2847c4.css} +1 -1
  13. package/dist/dashboard/out/app/onboarding.html +1 -1
  14. package/dist/dashboard/out/app/onboarding.txt +1 -1
  15. package/dist/dashboard/out/app.html +1 -1
  16. package/dist/dashboard/out/app.txt +2 -2
  17. package/dist/dashboard/out/cloud/link.html +1 -1
  18. package/dist/dashboard/out/cloud/link.txt +1 -1
  19. package/dist/dashboard/out/complete-profile.html +5 -0
  20. package/dist/dashboard/out/complete-profile.txt +7 -0
  21. package/dist/dashboard/out/connect-repos.html +1 -1
  22. package/dist/dashboard/out/connect-repos.txt +1 -1
  23. package/dist/dashboard/out/history.html +1 -1
  24. package/dist/dashboard/out/history.txt +1 -1
  25. package/dist/dashboard/out/index.html +1 -1
  26. package/dist/dashboard/out/index.txt +2 -2
  27. package/dist/dashboard/out/login.html +2 -2
  28. package/dist/dashboard/out/login.txt +2 -2
  29. package/dist/dashboard/out/metrics.html +1 -1
  30. package/dist/dashboard/out/metrics.txt +1 -1
  31. package/dist/dashboard/out/pricing.html +2 -2
  32. package/dist/dashboard/out/pricing.txt +1 -1
  33. package/dist/dashboard/out/providers/setup/claude.html +1 -1
  34. package/dist/dashboard/out/providers/setup/claude.txt +1 -1
  35. package/dist/dashboard/out/providers/setup/codex.html +1 -1
  36. package/dist/dashboard/out/providers/setup/codex.txt +1 -1
  37. package/dist/dashboard/out/providers/setup/cursor.html +1 -1
  38. package/dist/dashboard/out/providers/setup/cursor.txt +1 -1
  39. package/dist/dashboard/out/providers.html +1 -1
  40. package/dist/dashboard/out/providers.txt +2 -2
  41. package/dist/dashboard/out/signup.html +2 -2
  42. package/dist/dashboard/out/signup.txt +2 -2
  43. package/dist/src/cli/index.js +3 -1
  44. package/package.json +22 -21
  45. package/packages/api-types/package.json +1 -1
  46. package/packages/bridge/package.json +8 -8
  47. package/packages/cloud/dist/api/auth.js +2 -0
  48. package/packages/cloud/dist/api/billing.js +4 -4
  49. package/packages/cloud/dist/api/email-auth.d.ts +11 -0
  50. package/packages/cloud/dist/api/email-auth.js +347 -0
  51. package/packages/cloud/dist/api/nango-auth.js +72 -5
  52. package/packages/cloud/dist/db/drizzle.d.ts +35 -1
  53. package/packages/cloud/dist/db/drizzle.js +136 -0
  54. package/packages/cloud/dist/db/index.d.ts +5 -4
  55. package/packages/cloud/dist/db/index.js +5 -3
  56. package/packages/cloud/dist/db/schema.d.ts +246 -2
  57. package/packages/cloud/dist/db/schema.js +39 -3
  58. package/packages/cloud/dist/provisioner/index.js +5 -1
  59. package/packages/cloud/dist/server.js +134 -24
  60. package/packages/cloud/dist/services/nango.d.ts +18 -0
  61. package/packages/cloud/dist/services/nango.js +32 -0
  62. package/packages/cloud/package.json +6 -6
  63. package/packages/config/package.json +2 -2
  64. package/packages/continuity/package.json +1 -1
  65. package/packages/daemon/package.json +12 -12
  66. package/packages/dashboard/dist/server.js +36 -7
  67. package/packages/dashboard/package.json +13 -13
  68. package/packages/dashboard/ui/app/complete-profile/page.tsx +204 -0
  69. package/packages/dashboard/ui/app/login/page.tsx +182 -38
  70. package/packages/dashboard/ui/app/signup/page.tsx +244 -54
  71. package/packages/dashboard/ui/lib/cloudApi.ts +1 -0
  72. package/packages/dashboard/ui/react-components/App.tsx +1 -1
  73. package/packages/dashboard/ui/react-components/ProviderAuthFlow.tsx +10 -0
  74. package/packages/dashboard/ui/react-components/RepoAccessPanel.tsx +160 -3
  75. package/packages/dashboard/ui-dist/404.html +1 -1
  76. package/packages/dashboard/ui-dist/_next/static/chunks/320-402ffc8646b31da1.js +1 -0
  77. package/packages/dashboard/ui-dist/_next/static/chunks/83-26d2bde54616ee90.js +1 -0
  78. package/{dist/dashboard/out/_next/static/chunks/app/app/page-9d6bc8729b429956.js → packages/dashboard/ui-dist/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js} +1 -1
  79. package/packages/dashboard/ui-dist/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +1 -0
  80. package/packages/dashboard/ui-dist/_next/static/chunks/app/login/page-435eceb0073be027.js +1 -0
  81. package/packages/dashboard/ui-dist/_next/static/chunks/app/{page-487fa38f041815c1.js → page-8119d4246743574e.js} +1 -1
  82. package/packages/dashboard/ui-dist/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +1 -0
  83. package/packages/dashboard/ui-dist/_next/static/chunks/{main-5a40a5ae29646e1b.js → main-311c3db74dcfadb7.js} +1 -1
  84. package/packages/dashboard/ui-dist/_next/static/css/{605dd4e30c91986f.css → 45361ce86b2847c4.css} +1 -1
  85. package/packages/dashboard/ui-dist/app/onboarding.html +1 -1
  86. package/packages/dashboard/ui-dist/app/onboarding.txt +1 -1
  87. package/packages/dashboard/ui-dist/app.html +1 -1
  88. package/packages/dashboard/ui-dist/app.txt +2 -2
  89. package/packages/dashboard/ui-dist/cloud/link.html +1 -1
  90. package/packages/dashboard/ui-dist/cloud/link.txt +1 -1
  91. package/packages/dashboard/ui-dist/complete-profile.html +5 -0
  92. package/packages/dashboard/ui-dist/complete-profile.txt +7 -0
  93. package/packages/dashboard/ui-dist/connect-repos.html +1 -1
  94. package/packages/dashboard/ui-dist/connect-repos.txt +1 -1
  95. package/packages/dashboard/ui-dist/history.html +1 -1
  96. package/packages/dashboard/ui-dist/history.txt +1 -1
  97. package/packages/dashboard/ui-dist/index.html +1 -1
  98. package/packages/dashboard/ui-dist/index.txt +2 -2
  99. package/packages/dashboard/ui-dist/login.html +2 -2
  100. package/packages/dashboard/ui-dist/login.txt +2 -2
  101. package/packages/dashboard/ui-dist/metrics.html +1 -1
  102. package/packages/dashboard/ui-dist/metrics.txt +1 -1
  103. package/packages/dashboard/ui-dist/pricing.html +2 -2
  104. package/packages/dashboard/ui-dist/pricing.txt +1 -1
  105. package/packages/dashboard/ui-dist/providers/setup/claude.html +1 -1
  106. package/packages/dashboard/ui-dist/providers/setup/claude.txt +1 -1
  107. package/packages/dashboard/ui-dist/providers/setup/codex.html +1 -1
  108. package/packages/dashboard/ui-dist/providers/setup/codex.txt +1 -1
  109. package/packages/dashboard/ui-dist/providers/setup/cursor.html +1 -1
  110. package/packages/dashboard/ui-dist/providers/setup/cursor.txt +1 -1
  111. package/packages/dashboard/ui-dist/providers.html +1 -1
  112. package/packages/dashboard/ui-dist/providers.txt +2 -2
  113. package/packages/dashboard/ui-dist/signup.html +2 -2
  114. package/packages/dashboard/ui-dist/signup.txt +2 -2
  115. package/packages/dashboard-server/dist/server.js +36 -7
  116. package/packages/dashboard-server/package.json +12 -12
  117. package/packages/hooks/package.json +4 -4
  118. package/packages/mcp/package.json +2 -2
  119. package/packages/memory/package.json +2 -2
  120. package/packages/policy/package.json +2 -2
  121. package/packages/protocol/package.json +1 -1
  122. package/packages/resiliency/package.json +1 -1
  123. package/packages/sdk/package.json +2 -2
  124. package/packages/spawner/package.json +1 -1
  125. package/packages/state/package.json +1 -1
  126. package/packages/storage/package.json +2 -2
  127. package/packages/telemetry/package.json +1 -1
  128. package/packages/trajectory/package.json +2 -2
  129. package/packages/user-directory/package.json +2 -2
  130. package/packages/utils/package.json +1 -1
  131. package/packages/wrapper/dist/relay-pty-orchestrator.js +17 -3
  132. package/packages/wrapper/package.json +6 -6
  133. package/relay-snippets/agent-policy-snippet.md +40 -0
  134. package/relay-snippets/agent-relay-protocol.md +101 -0
  135. package/relay-snippets/agent-relay-snippet.md +177 -0
  136. package/SESSION_HANDOFF.md +0 -67
  137. package/dist/dashboard/out/_next/static/chunks/320-23e5ffe6aa7eb934.js +0 -1
  138. package/dist/dashboard/out/_next/static/chunks/83-4f08122d4e7e79a6.js +0 -1
  139. package/dist/dashboard/out/_next/static/chunks/app/login/page-a0ca6f7ca6a100b8.js +0 -1
  140. package/dist/dashboard/out/_next/static/chunks/app/signup/page-1ede2205b58649ca.js +0 -1
  141. package/packages/dashboard/ui-dist/_next/static/chunks/320-23e5ffe6aa7eb934.js +0 -1
  142. package/packages/dashboard/ui-dist/_next/static/chunks/83-4f08122d4e7e79a6.js +0 -1
  143. package/packages/dashboard/ui-dist/_next/static/chunks/app/login/page-a0ca6f7ca6a100b8.js +0 -1
  144. package/packages/dashboard/ui-dist/_next/static/chunks/app/signup/page-1ede2205b58649ca.js +0 -1
  145. package/test-push.txt +0 -1
  146. /package/dist/dashboard/out/_next/static/{itBGQ1M8yMA_hC42DKCqv → JIjqkuDKNeoSg7KaMMuhx}/_buildManifest.js +0 -0
  147. /package/dist/dashboard/out/_next/static/{itBGQ1M8yMA_hC42DKCqv → JIjqkuDKNeoSg7KaMMuhx}/_ssgManifest.js +0 -0
  148. /package/packages/dashboard/ui-dist/_next/static/{ML6Zby1B5OtZvl0Pa1zSZ → JIjqkuDKNeoSg7KaMMuhx}/_buildManifest.js +0 -0
  149. /package/packages/dashboard/ui-dist/_next/static/{ML6Zby1B5OtZvl0Pa1zSZ → JIjqkuDKNeoSg7KaMMuhx}/_ssgManifest.js +0 -0
  150. /package/packages/dashboard/ui-dist/_next/static/{Ni5Di0TB0PDcrvEYBFRKd → nmkOi7bqeDmLMoWBih8lz}/_buildManifest.js +0 -0
  151. /package/packages/dashboard/ui-dist/_next/static/{Ni5Di0TB0PDcrvEYBFRKd → nmkOi7bqeDmLMoWBih8lz}/_ssgManifest.js +0 -0
  152. /package/packages/dashboard/ui-dist/_next/static/{itBGQ1M8yMA_hC42DKCqv → wk_gKRNSPpWE-ZhGL6UMl}/_buildManifest.js +0 -0
  153. /package/packages/dashboard/ui-dist/_next/static/{itBGQ1M8yMA_hC42DKCqv → wk_gKRNSPpWE-ZhGL6UMl}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[83],{3083:function(e,t,s){s.d(t,{j:function(){return i}});var a=s(7437),n=s(2265);let r={codex:"openai"};function i(e){let{provider:t,workspaceId:s,csrfToken:i,onSuccess:c,onCancel:o,onError:l,useDeviceFlow:d=!1}=e,[u,h]=(0,n.useState)("idle"),[x,m]=(0,n.useState)(null),[p,b]=(0,n.useState)(null),[y,g]=(0,n.useState)(""),[f,w]=(0,n.useState)(null),[j,N]=(0,n.useState)(null),[v,k]=(0,n.useState)(null),[C,S]=(0,n.useState)(null),[T,A]=(0,n.useState)(!1),[I,E]=(0,n.useState)(!1),[O,F]=(0,n.useState)(!1),[L,P]=(0,n.useState)(!1),R=(0,n.useRef)(!1),U=(0,n.useRef)(!1),W=(0,n.useRef)(!1),z=r[t.id]||t.id,B=t.requiresUrlCopy||"codex"===t.id||"openai"===z,M=(0,n.useCallback)(async()=>{h("starting"),w(null),R.current=!1;try{let e={"Content-Type":"application/json"};i&&(e["X-CSRF-Token"]=i);let t=await fetch("/api/onboarding/cli/".concat(z,"/start"),{method:"POST",credentials:"include",headers:e,body:JSON.stringify({workspaceId:s,useDeviceFlow:d})}),a=await t.json();if(!t.ok)throw Error(a.error||"Failed to start authentication");if("success"===a.status||a.alreadyAuthenticated){h("success"),c();return}b(a.sessionId),a.useDeviceFlow&&P(!0),a.authUrl?(m(a.authUrl),h("waiting"),(!B||a.useDeviceFlow)&&J(a.authUrl),K(a.sessionId)):a.sessionId&&K(a.sessionId)}catch(t){let e=t instanceof Error?t.message:"Failed to start authentication";w(e),h("error"),l(e)}},[z,s,i,d,c,l,B]),V=(0,n.useRef)(null),D=(0,n.useRef)(null),X=(0,n.useCallback)((e,t)=>{if(W.current)return;W.current=!0,F(!0);let s=0,a=async()=>{if(s>=120||!W.current){W.current=!1,F(!1);return}try{let n=await fetch("/api/auth/codex-helper/auth-status/".concat(e),{credentials:"include"});if(n.ok&&(await n.json()).authenticated){W.current=!1,F(!1),D.current&&await D.current(t);return}s++,setTimeout(a,5e3)}catch(e){console.error("CLI poll error:",e),s++,setTimeout(a,5e3)}};a()},[]),_=(0,n.useCallback)(async()=>{if(B){A(!0);try{let e={"Content-Type":"application/json"};i&&(e["X-CSRF-Token"]=i);let t=await fetch("/api/auth/codex-helper/cli-session",{method:"POST",credentials:"include",headers:e,body:JSON.stringify({workspaceId:s,authUrl:x,sessionId:p})});if(t.ok){let e=await t.json();N(e.commandWithUrl||e.command),e.workspaceId?(k(e.workspaceId),S(e.workspaceName||null),X(e.workspaceId,p||void 0)):e.authSessionId&&(k(e.authSessionId),X(e.authSessionId,p||void 0))}}catch(e){console.error("Failed to fetch CLI session:",e)}finally{A(!1)}}},[B,s,i,X,p,x]);(0,n.useEffect)(()=>{"waiting"!==u||!B||L||j||_()},[u,B,L,j,_]);let J=(0,n.useCallback)(e=>{let s=window.screenX+(window.outerWidth-600)/2,a=window.screenY+(window.outerHeight-700)/2;window.open(e,"".concat(t.displayName," Login"),"width=".concat(600,",height=").concat(700,",left=").concat(s,",top=").concat(a,",popup=yes")),R.current=!0},[t.displayName]),K=(0,n.useCallback)(e=>{if(U.current)return;U.current=!0;let t=0,s=async()=>{if(t>=60){U.current=!1,w("Authentication timed out. Please try again."),h("error"),l("Authentication timed out");return}try{let a=await fetch("/api/onboarding/cli/".concat(z,"/status/").concat(e),{credentials:"include"}),n=await a.json();if(!a.ok)throw Error(n.error||"Failed to check status");if("success"===n.status){U.current=!1,await H(e);return}if("error"===n.status)throw Error(n.error||"Authentication failed");"waiting_auth"!==n.status||!n.authUrl||(m(n.authUrl),h("waiting"),R.current||B||J(n.authUrl)),t++,setTimeout(s,5e3)}catch(t){U.current=!1;let e=t instanceof Error?t.message:"Auth check failed";w(e),h("error"),l(e)}};s()},[z,J,l,B]),H=(0,n.useCallback)(async e=>{let t=e||p;if(t){h("submitting"),w(null);try{let e={"Content-Type":"application/json"};i&&(e["X-CSRF-Token"]=i);let s=await fetch("/api/onboarding/cli/".concat(z,"/complete/").concat(t),{method:"POST",credentials:"include",headers:e}),a=await s.json();if(!s.ok)throw Error(a.error||"Failed to complete authentication");h("success"),setTimeout(()=>c(),1500)}catch(t){let e=t instanceof Error?t.message:"Failed to complete authentication";w(e),h("error"),l(e)}}},[p,z,i,c,l]);(0,n.useEffect)(()=>{D.current=H},[H]);let Y=(0,n.useCallback)(async()=>{if(!p||!y.trim())return;h("submitting"),w(null);let e=y.trim();if(e.includes("code="))try{let t=new URL(e).searchParams.get("code");t&&(e=t)}catch(s){let t=e.match(/code=([^&\s]+)/);t&&(e=t[1])}try{let t={"Content-Type":"application/json"};i&&(t["X-CSRF-Token"]=i);let s=await fetch("/api/onboarding/cli/".concat(z,"/code/").concat(p),{method:"POST",credentials:"include",headers:t,body:JSON.stringify({code:e})}),a=await s.json();if(!s.ok){if(a.needsRestart){w('The authentication session timed out. Please click "Try Again" to restart.'),h("error");return}throw Error(a.error||"Failed to submit auth code")}g(""),a.success&&await H()}catch(t){let e=t instanceof Error?t.message:"Failed to submit auth code";w(e),h("error"),l(e)}},[p,y,z,i,H,l]);(0,n.useEffect)(()=>{V.current=async(e,t)=>{if(p){h("submitting"),w(null);try{let s={"Content-Type":"application/json"};i&&(s["X-CSRF-Token"]=i);let a=await fetch("/api/onboarding/cli/".concat(z,"/code/").concat(p),{method:"POST",credentials:"include",headers:s,body:JSON.stringify({code:e,state:t})}),n=await a.json();if(!a.ok){if(n.needsRestart){w('The authentication session timed out. Please click "Try Again" to restart.'),h("error");return}throw Error(n.error||"Failed to submit auth code")}n.success&&await H()}catch(t){let e=t instanceof Error?t.message:"Failed to submit auth code";w(e),h("error"),l(e)}}}},[p,z,i,H,l]);let q=(0,n.useCallback)(async()=>{if(U.current=!1,p)try{await fetch("/api/onboarding/cli/".concat(z,"/cancel/").concat(p),{method:"POST",credentials:"include"})}catch(e){}h("idle"),m(null),b(null),g(""),w(null),o()},[p,z,o]);(0,n.useEffect)(()=>("idle"===u&&M(),()=>{U.current=!1,W.current=!1,F(!1)}),[M,u]);let G="anthropic"===t.id||"anthropic"===z;return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"w-10 h-10 rounded-lg flex items-center justify-center text-white font-bold",style:{backgroundColor:t.color},children:t.displayName[0]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"font-medium text-white",children:t.displayName}),(0,a.jsxs)("p",{className:"text-sm text-text-muted",children:["starting"===u&&"Starting authentication...","waiting"===u&&"Complete authentication below","submitting"===u&&"Verifying...","success"===u&&"Connected!","error"===u&&(f||"Authentication failed")]})]})]}),"starting"===u&&(0,a.jsxs)("div",{className:"flex items-center justify-center gap-3 py-4",children:[(0,a.jsxs)("svg",{className:"w-5 h-5 text-accent-cyan animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,a.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,a.jsx)("span",{className:"text-text-muted",children:"Preparing authentication..."})]}),"waiting"===u&&x&&(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"p-4 bg-bg-tertiary rounded-lg border border-border-subtle",children:[(0,a.jsx)("h4",{className:"font-medium text-white mb-2",children:"Complete authentication:"}),B&&L?(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Sign in with your OpenAI account in the popup window. You'll see a device code to enter - this confirms the authorization."}):B?(0,a.jsx)("p",{className:"text-sm text-text-muted",children:"Run the CLI command below. It establishes an SSH tunnel to forward the OAuth callback to your workspace."}):G?(0,a.jsxs)("ol",{className:"text-sm text-text-muted space-y-2 list-decimal list-inside",children:[(0,a.jsx)("li",{children:"Click the button below to open the login page"}),(0,a.jsx)("li",{children:"Sign in with your Anthropic account"}),(0,a.jsxs)("li",{children:["After signing in, Anthropic will display an ",(0,a.jsx)("strong",{children:"authentication code"})]}),(0,a.jsx)("li",{children:"Copy that code and paste it in the input below"}),(0,a.jsx)("li",{children:"Click Submit to complete authentication"})]}):(0,a.jsxs)("ol",{className:"text-sm text-text-muted space-y-2 list-decimal list-inside",children:[(0,a.jsx)("li",{children:"Click the button below to open the login page"}),(0,a.jsxs)("li",{children:["Sign in with your ",t.displayName," account"]}),(0,a.jsx)("li",{children:'If you receive a code, paste it below. Otherwise click "I\'ve completed login"'})]})]}),!(B&&j&&!I)&&(0,a.jsxs)("a",{href:x,target:"_blank",rel:"noopener noreferrer",className:"block w-full py-2 px-4 bg-bg-tertiary border border-border-subtle text-white font-medium rounded-lg text-center hover:border-accent-cyan/50 transition-all",children:["Open ",t.displayName," Login Page"]}),B&&L?(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsx)("div",{className:"p-3 bg-accent-cyan/10 border border-accent-cyan/30 rounded-lg",children:(0,a.jsxs)("p",{className:"text-sm text-accent-cyan",children:[(0,a.jsx)("strong",{children:"Device Authentication:"})," Complete the sign-in in the popup window. After signing in, you'll see a code - enter it on the OpenAI page to authorize."]})}),(0,a.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-accent-cyan/5 border border-accent-cyan/20 rounded-lg text-sm text-accent-cyan",children:[(0,a.jsxs)("svg",{className:"w-4 h-4 animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,a.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,a.jsx)("span",{children:"Waiting for authentication to complete..."})]}),(0,a.jsx)("button",{onClick:()=>H(),className:"w-full py-2 text-text-muted hover:text-white transition-colors text-sm",children:"I've completed authentication"})]}):B?(0,a.jsxs)("div",{className:"space-y-4",children:[T&&(0,a.jsxs)("div",{className:"flex items-center gap-3 p-4 bg-bg-tertiary rounded-lg border border-border-subtle",children:[(0,a.jsxs)("svg",{className:"w-5 h-5 text-accent-cyan animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,a.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,a.jsx)("span",{className:"text-sm text-text-muted",children:"Generating session token..."})]}),j&&!I&&!T&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"p-3 bg-accent-cyan/10 border border-accent-cyan/30 rounded-lg",children:[(0,a.jsxs)("p",{className:"text-sm text-accent-cyan mb-2",children:[(0,a.jsx)("strong",{children:"Step 1:"})," Copy and run this command in your terminal"]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("code",{className:"flex-1 px-3 py-2 bg-bg-deep rounded-lg text-xs font-mono text-white overflow-x-auto",children:j}),(0,a.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(j)},className:"px-3 py-2 bg-bg-tertiary border border-border-subtle rounded-lg text-text-muted hover:text-white hover:border-accent-cyan/50 transition-colors text-xs",children:"Copy"})]})]}),(0,a.jsxs)("div",{className:"p-3 bg-bg-tertiary border border-border-subtle rounded-lg",children:[(0,a.jsxs)("p",{className:"text-sm text-white mb-1",children:[(0,a.jsx)("strong",{children:"Step 2:"})," Sign in with OpenAI"]}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"The CLI will open your browser to the OpenAI login page. Sign in with your OpenAI account."})]}),(0,a.jsxs)("div",{className:"p-3 bg-bg-tertiary border border-border-subtle rounded-lg",children:[(0,a.jsxs)("p",{className:"text-sm text-white mb-1",children:[(0,a.jsx)("strong",{children:"Step 3:"})," Authentication completes automatically"]}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"After signing in, the CLI will capture the callback and this page will update automatically."})]}),O&&(0,a.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-success/10 border border-success/30 rounded-lg text-sm text-success",children:[(0,a.jsxs)("svg",{className:"w-4 h-4 animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,a.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,a.jsx)("span",{children:"Waiting for authentication to complete..."})]}),(0,a.jsx)("button",{onClick:()=>E(!0),className:"text-xs text-text-muted hover:text-white transition-colors",children:"CLI not working? Click here for manual method"})]}),!T&&(I||!j)&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"p-3 bg-amber-500/10 border border-amber-500/30 rounded-lg",children:(0,a.jsxs)("p",{className:"text-xs text-amber-400",children:[(0,a.jsx)("strong",{children:"Manual method:"})," After login, you'll see \"This site can't be reached\" - this is expected! Copy the full URL from your browser's address bar and paste it below."]})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{type:"text",placeholder:"Paste the localhost URL here (e.g., http://localhost:...)",value:y,onChange:e=>g(e.target.value),className:"flex-1 px-4 py-3 bg-bg-tertiary border border-border-subtle rounded-xl text-white placeholder-text-muted focus:outline-none focus:border-accent-cyan transition-colors font-mono text-sm",onKeyDown:e=>{"Enter"===e.key&&y.trim()&&Y()}}),(0,a.jsx)("button",{onClick:Y,disabled:!y.trim(),className:"px-6 py-3 bg-accent-cyan text-bg-deep font-semibold rounded-xl hover:bg-accent-cyan/90 disabled:opacity-50 disabled:cursor-not-allowed transition-all",children:"Submit"})]}),j&&(0,a.jsx)("button",{onClick:()=>E(!1),className:"text-xs text-accent-cyan hover:underline",children:"← Back to CLI method"})]})]}):G?(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"p-3 bg-accent-cyan/10 border border-accent-cyan/30 rounded-lg",children:(0,a.jsxs)("p",{className:"text-xs text-accent-cyan",children:[(0,a.jsx)("strong",{children:"Look for the code:"})," After signing in, Anthropic will show you an authentication code. Copy it and paste it below."]})}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{type:"text",placeholder:"Paste the authentication code here",value:y,onChange:e=>g(e.target.value),className:"flex-1 px-4 py-3 bg-bg-tertiary border border-border-subtle rounded-xl text-white placeholder-text-muted focus:outline-none focus:border-accent-cyan transition-colors font-mono text-sm",onKeyDown:e=>{"Enter"===e.key&&y.trim()&&Y()}}),(0,a.jsx)("button",{onClick:Y,disabled:!y.trim(),className:"px-6 py-3 bg-accent-cyan text-bg-deep font-semibold rounded-xl hover:bg-accent-cyan/90 disabled:opacity-50 disabled:cursor-not-allowed transition-all",children:"Submit"})]})]}):(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)("input",{type:"text",placeholder:"Paste authentication code (if provided)",value:y,onChange:e=>g(e.target.value),className:"flex-1 px-4 py-3 bg-bg-tertiary border border-border-subtle rounded-xl text-white placeholder-text-muted focus:outline-none focus:border-accent-cyan transition-colors font-mono text-sm",onKeyDown:e=>{"Enter"===e.key&&y.trim()&&Y()}}),(0,a.jsx)("button",{onClick:Y,disabled:!y.trim(),className:"px-6 py-3 bg-accent-cyan text-bg-deep font-semibold rounded-xl hover:bg-accent-cyan/90 disabled:opacity-50 disabled:cursor-not-allowed transition-all",children:"Submit"})]}),(0,a.jsx)("button",{onClick:()=>H(),className:"w-full py-2 text-text-muted hover:text-white transition-colors text-sm",children:"No code? Click here if you've completed login"})]}),(0,a.jsx)("button",{onClick:q,className:"w-full py-2 text-text-muted hover:text-white transition-colors text-sm",children:"Cancel"})]}),"submitting"===u&&(0,a.jsxs)("div",{className:"flex items-center justify-center gap-3 py-4",children:[(0,a.jsxs)("svg",{className:"w-5 h-5 text-accent-cyan animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,a.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,a.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,a.jsx)("span",{className:"text-text-muted",children:"Verifying authentication..."})]}),"success"===u&&(0,a.jsxs)("div",{className:"flex items-center justify-center gap-3 py-4",children:[(0,a.jsx)("div",{className:"w-10 h-10 bg-success/20 rounded-full flex items-center justify-center",children:(0,a.jsx)("svg",{className:"w-6 h-6 text-success",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,a.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})}),(0,a.jsxs)("span",{className:"text-white font-medium",children:[t.displayName," connected!"]})]}),"error"===u&&(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("div",{className:"p-4 bg-error/10 border border-error/30 rounded-lg text-error text-sm",children:f||"Authentication failed. Please try again."}),(0,a.jsxs)("div",{className:"flex gap-3",children:[(0,a.jsx)("button",{onClick:M,className:"flex-1 py-2 px-4 bg-bg-tertiary border border-border-subtle text-white rounded-lg hover:border-accent-cyan/50 transition-colors",children:"Try Again"}),(0,a.jsx)("button",{onClick:q,className:"py-2 px-4 text-text-muted hover:text-white transition-colors",children:"Cancel"})]})]})]})}}}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[626],{9227:function(e,t,n){Promise.resolve().then(n.bind(n,6374))},6374:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return d}});var r=n(7437),s=n(2265),a=n(9376),i=n(282),o=n(6272);function c(){return(0,r.jsx)("div",{className:"min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex flex-col items-center justify-center p-4",children:(0,r.jsx)("div",{className:"relative z-10 w-full max-w-md",children:(0,r.jsxs)("div",{className:"flex flex-col items-center mb-8",children:[(0,r.jsx)(o.K7,{size:48,withGlow:!0}),(0,r.jsx)("h1",{className:"mt-4 text-2xl font-bold text-white",children:"Agent Relay"}),(0,r.jsx)("p",{className:"mt-2 text-text-muted",children:"Loading..."})]})})})}function l(){let e=(0,a.useSearchParams)(),[t,n]=(0,s.useState)(!1),[c,l]=(0,s.useState)(!1),[d,u]=(0,s.useState)(""),[h,x]=(0,s.useState)(""),m=e.get("return"),f=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=!0;return(async()=>{try{let t=await fetch("/api/auth/nango/login-session",{credentials:"include"}),r=await t.json();if(!e)return;if(!t.ok||!r.sessionToken){x("Failed to initialize. Please refresh the page.");return}f.current=new i.ZP({connectSessionToken:r.sessionToken}),n(!0)}catch(t){e&&(console.error("Init error:",t),x("Failed to initialize. Please refresh the page."))}})(),()=>{e=!1}},[]);let p=async e=>{let t=await fetch("/api/auth/nango/login-status/".concat(e),{credentials:"include"});if(!t.ok)throw Error("Auth status not ready");return t.json()},g=async e=>{try{u("Completing authentication...");let t=Date.now(),n=async()=>{if(Date.now()-t>3e4)throw Error("Authentication timed out. Please try again.");try{let t=await p(e);if(t&&t.ready){m?window.location.href=m:window.location.href=t.hasRepos?"/app":"/connect-repos";return}return await new Promise(e=>setTimeout(e,1e3)),n()}catch(e){return await new Promise(e=>setTimeout(e,1e3)),n()}};await n()}catch(e){console.error("[AUTH] Authentication error:",e),x(e instanceof Error?e.message:"Authentication failed"),l(!1),u("")}},j=async()=>{if(!f.current){x("Not ready. Please refresh the page.");return}l(!0),x(""),u("Connecting to GitHub...");try{let e=await f.current.auth("github");if(e&&"connectionId"in e)await g(e.connectionId);else throw Error("No connection ID returned")}catch(t){var e;if(console.error("GitHub auth error:",t),"user_cancelled"===t.type||(null===(e=t.message)||void 0===e?void 0:e.includes("closed"))){l(!1),u(""),fetch("/api/auth/nango/login-session",{credentials:"include"}).then(e=>e.json()).then(e=>{e.sessionToken&&(f.current=new i.ZP({connectSessionToken:e.sessionToken}),n(!0))});return}x(t.message||"Authentication failed"),l(!1),u("")}};return(0,r.jsxs)("div",{className:"min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex flex-col items-center justify-center p-4",children:[(0,r.jsx)("div",{className:"fixed inset-0 opacity-10",children:(0,r.jsx)("div",{className:"absolute inset-0",style:{backgroundImage:"linear-gradient(rgba(0, 217, 255, 0.1) 1px, transparent 1px),\n linear-gradient(90deg, rgba(0, 217, 255, 0.1) 1px, transparent 1px)",backgroundSize:"50px 50px"}})}),(0,r.jsxs)("div",{className:"relative z-10 w-full max-w-md",children:[(0,r.jsxs)("div",{className:"flex flex-col items-center mb-8",children:[(0,r.jsx)(o.K7,{size:48,withGlow:!0}),(0,r.jsx)("h1",{className:"mt-4 text-2xl font-bold text-white",children:"Agent Relay"}),(0,r.jsx)("p",{className:"mt-2 text-text-muted",children:"Sign in to continue"})]}),(0,r.jsx)("div",{className:"bg-bg-primary/80 backdrop-blur-sm border border-border-subtle rounded-2xl p-8 shadow-xl",children:(0,r.jsxs)("div",{children:[h&&(0,r.jsx)("div",{className:"mb-4 p-3 bg-error/10 border border-error/20 rounded-lg",children:(0,r.jsx)("p",{className:"text-error text-sm",children:h})}),(0,r.jsx)("button",{type:"button",onClick:j,disabled:!t||c,className:"w-full py-4 px-6 bg-[#24292e] hover:bg-[#2f363d] border border-[#444d56] rounded-xl text-white font-medium flex items-center justify-center gap-3 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:t?c?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("svg",{className:"w-5 h-5 animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,r.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,r.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,r.jsx)("span",{children:d||"Connecting..."})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("svg",{className:"w-6 h-6",fill:"currentColor",viewBox:"0 0 24 24",children:(0,r.jsx)("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"})}),(0,r.jsx)("span",{children:"Continue with GitHub"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("svg",{className:"w-5 h-5 animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,r.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,r.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,r.jsx)("span",{children:"Loading..."})]})}),(0,r.jsxs)("p",{className:"mt-6 text-center text-text-muted text-sm",children:["By signing in, you agree to our"," ",(0,r.jsx)("a",{href:"/terms",className:"text-accent-cyan hover:underline",children:"Terms of Service"})," ","and"," ",(0,r.jsx)("a",{href:"/privacy",className:"text-accent-cyan hover:underline",children:"Privacy Policy"})]})]})}),(0,r.jsx)("div",{className:"mt-6 text-center",children:(0,r.jsxs)("p",{className:"text-text-muted",children:["Don't have an account?"," ",(0,r.jsx)("a",{href:"/signup",className:"text-accent-cyan hover:underline font-medium",children:"Sign up"})]})}),(0,r.jsx)("div",{className:"mt-4 text-center",children:(0,r.jsx)("a",{href:"/",className:"text-text-muted hover:text-white transition-colors text-sm",children:"Back to home"})})]})]})}function d(){return(0,r.jsx)(s.Suspense,{fallback:(0,r.jsx)(c,{}),children:(0,r.jsx)(l,{})})}},9376:function(e,t,n){"use strict";var r=n(5475);n.o(r,"useRouter")&&n.d(t,{useRouter:function(){return r.useRouter}}),n.o(r,"useSearchParams")&&n.d(t,{useSearchParams:function(){return r.useSearchParams}})},6272:function(e,t,n){"use strict";n.d(t,{K7:function(){return s}});var r=n(7437);function s(e){let{size:t=24,className:n="",withGlow:s=!1}=e;return(0,r.jsxs)("svg",{width:t,height:t,viewBox:"0 0 100 100",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"\n transition-all duration-300\n ".concat(s?"drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]":"","\n ").concat(n,"\n "),"aria-label":"Agent Relay Logo",role:"img",children:[(0,r.jsx)("path",{d:"M30 80 L 50 20 L 70 80",stroke:"#00d9ff",strokeWidth:"5",strokeLinejoin:"round",strokeLinecap:"round",fill:"none"}),(0,r.jsx)("line",{x1:"40",y1:"50",x2:"60",y2:"50",stroke:"#00d9ff",strokeWidth:"5",strokeLinecap:"round"}),(0,r.jsx)("path",{d:"M50 20 L 50 80",stroke:"#00ffc8",strokeWidth:"2.5",strokeLinecap:"round",opacity:"0.7"}),(0,r.jsx)("path",{d:"M50 20 C 80 20 80 50 50 50 L 80 80",stroke:"#00ffc8",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",fill:"none",opacity:"0.7"})]})}n(2265)}},function(e){e.O(0,[282,971,117,744],function(){return e(e.s=9227)}),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[966],{2679:function(e,t,s){Promise.resolve().then(s.bind(s,4665))},4665:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return o}});var n=s(7437),r=s(2265),a=s(282),i=s(6272);function o(){let[e,t]=(0,r.useState)(!1),[s,o]=(0,r.useState)(!1),[c,l]=(0,r.useState)(""),[d,h]=(0,r.useState)(""),[x,u]=(0,r.useState)("/app"),[m,f]=(0,r.useState)(!1),p=(0,r.useRef)(null);(0,r.useEffect)(()=>{let e=!0;return(async()=>{try{let e=await fetch("/api/auth/session",{credentials:"include"});if((await e.json()).authenticated){await j();return}}catch(e){}try{let s=await fetch("/api/auth/nango/login-session",{credentials:"include"}),n=await s.json();if(!e)return;if(!s.ok||!n.sessionToken){h("Failed to initialize. Please refresh the page.");return}p.current=new a.ZP({connectSessionToken:n.sessionToken}),t(!0)}catch(t){e&&(console.error("Init error:",t),h("Failed to initialize. Please refresh the page."))}})(),()=>{e=!1}},[]);let j=async()=>{l("Setting up your account...");try{let e=await fetch("/api/github-app/repos",{credentials:"include"}),t=await e.json();t.repositories&&t.repositories.length>0?u("/app"):u("/connect-repos"),f(!0),setTimeout(()=>{window.location.href=t.repositories&&t.repositories.length>0?"/app":"/connect-repos"},1500)}catch(e){console.error("Error checking repos:",e),u("/connect-repos"),f(!0),setTimeout(()=>{window.location.href="/connect-repos"},1500)}},g=async e=>{let t=await fetch("/api/auth/nango/login-status/".concat(e),{credentials:"include"});if(!t.ok)throw Error("Auth status not ready");return t.json()},w=async e=>{try{l("Completing authentication...");let t=Date.now(),s=async()=>{if(Date.now()-t>3e4)throw Error("Authentication timed out. Please try again.");try{let t=await g(e);if(t&&t.ready){await j();return}return await new Promise(e=>setTimeout(e,1e3)),s()}catch(e){return await new Promise(e=>setTimeout(e,1e3)),s()}};await s()}catch(e){console.error("[AUTH] Authentication error:",e),h(e instanceof Error?e.message:"Authentication failed"),o(!1),l("")}},b=async()=>{if(!p.current){h("Not ready. Please refresh the page.");return}o(!0),h(""),l("Connecting to GitHub...");try{let e=await p.current.auth("github");if(e&&"connectionId"in e)await w(e.connectionId);else throw Error("No connection ID returned")}catch(s){var e;if(console.error("GitHub auth error:",s),"user_cancelled"===s.type||(null===(e=s.message)||void 0===e?void 0:e.includes("closed"))){o(!1),l(""),fetch("/api/auth/nango/login-session",{credentials:"include"}).then(e=>e.json()).then(e=>{e.sessionToken&&(p.current=new a.ZP({connectSessionToken:e.sessionToken}),t(!0))});return}h(s.message||"Authentication failed"),o(!1),l("")}};return(0,n.jsxs)("div",{className:"min-h-screen bg-gradient-to-br from-[#0a0a0f] via-[#0d1117] to-[#0a0a0f] flex flex-col items-center justify-center p-4",children:[(0,n.jsx)("div",{className:"fixed inset-0 opacity-10",children:(0,n.jsx)("div",{className:"absolute inset-0",style:{backgroundImage:"linear-gradient(rgba(0, 217, 255, 0.1) 1px, transparent 1px),\n linear-gradient(90deg, rgba(0, 217, 255, 0.1) 1px, transparent 1px)",backgroundSize:"50px 50px"}})}),(0,n.jsxs)("div",{className:"fixed inset-0 overflow-hidden pointer-events-none",children:[(0,n.jsx)("div",{className:"absolute -top-40 -left-40 w-80 h-80 bg-accent-cyan/20 rounded-full blur-[100px]"}),(0,n.jsx)("div",{className:"absolute -bottom-40 -right-40 w-80 h-80 bg-[#00ffc8]/15 rounded-full blur-[100px]"})]}),(0,n.jsxs)("div",{className:"relative z-10 w-full max-w-md",children:[(0,n.jsxs)("div",{className:"flex flex-col items-center mb-8",children:[(0,n.jsx)(i.K7,{size:56,withGlow:!0}),(0,n.jsx)("h1",{className:"mt-4 text-3xl font-bold text-white",children:"Get Started"}),(0,n.jsx)("p",{className:"mt-2 text-text-muted text-center",children:"Create your account and start orchestrating AI agents"})]}),(0,n.jsx)("div",{className:"bg-bg-primary/80 backdrop-blur-sm border border-border-subtle rounded-2xl p-8 shadow-xl",children:m?(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)("div",{className:"w-16 h-16 mx-auto mb-4 bg-success/20 rounded-full flex items-center justify-center",children:(0,n.jsx)("svg",{className:"w-8 h-8 text-success",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})}),(0,n.jsx)("h2",{className:"text-xl font-semibold text-white mb-2",children:"Welcome to Agent Relay!"}),(0,n.jsx)("p",{className:"text-text-muted",children:"/connect-repos"===x?"Let's connect your repositories...":"Redirecting to dashboard..."})]}):s?(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)("div",{className:"w-16 h-16 mx-auto mb-4 flex items-center justify-center",children:(0,n.jsxs)("svg",{className:"w-8 h-8 text-accent-cyan animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,n.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,n.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]})}),(0,n.jsx)("h2",{className:"text-xl font-semibold text-white mb-2",children:"Creating Account"}),(0,n.jsx)("p",{className:"text-text-muted",children:c||"Connecting to GitHub..."})]}):(0,n.jsxs)("div",{children:[d&&(0,n.jsx)("div",{className:"mb-4 p-3 bg-error/10 border border-error/20 rounded-lg",children:(0,n.jsx)("p",{className:"text-error text-sm",children:d})}),(0,n.jsxs)("div",{className:"mb-6 space-y-3",children:[(0,n.jsxs)("div",{className:"flex items-center gap-3 text-sm text-text-secondary",children:[(0,n.jsx)("div",{className:"w-8 h-8 rounded-lg bg-accent-cyan/10 flex items-center justify-center flex-shrink-0",children:(0,n.jsx)("svg",{className:"w-4 h-4 text-accent-cyan",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})})}),(0,n.jsx)("span",{children:"Deploy AI agents in seconds"})]}),(0,n.jsxs)("div",{className:"flex items-center gap-3 text-sm text-text-secondary",children:[(0,n.jsx)("div",{className:"w-8 h-8 rounded-lg bg-[#00ffc8]/10 flex items-center justify-center flex-shrink-0",children:(0,n.jsx)("svg",{className:"w-4 h-4 text-[#00ffc8]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"})})}),(0,n.jsx)("span",{children:"Real-time agent collaboration"})]}),(0,n.jsxs)("div",{className:"flex items-center gap-3 text-sm text-text-secondary",children:[(0,n.jsx)("div",{className:"w-8 h-8 rounded-lg bg-[#0891b2]/10 flex items-center justify-center flex-shrink-0",children:(0,n.jsx)("svg",{className:"w-4 h-4 text-[#0891b2]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"})})}),(0,n.jsx)("span",{children:"Secure credential management"})]})]}),(0,n.jsx)("button",{type:"button",onClick:b,disabled:!e||s,className:"w-full py-4 px-6 bg-[#24292e] hover:bg-[#2f363d] border border-[#444d56] rounded-xl text-white font-medium flex items-center justify-center gap-3 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:e?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("svg",{className:"w-6 h-6",fill:"currentColor",viewBox:"0 0 24 24",children:(0,n.jsx)("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"})}),(0,n.jsx)("span",{children:"Sign up with GitHub"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("svg",{className:"w-5 h-5 animate-spin",fill:"none",viewBox:"0 0 24 24",children:[(0,n.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,n.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),(0,n.jsx)("span",{children:"Loading..."})]})}),(0,n.jsxs)("p",{className:"mt-6 text-center text-text-muted text-sm",children:["By signing up, you agree to our"," ",(0,n.jsx)("a",{href:"/terms",className:"text-accent-cyan hover:underline",children:"Terms of Service"})," ","and"," ",(0,n.jsx)("a",{href:"/privacy",className:"text-accent-cyan hover:underline",children:"Privacy Policy"})]})]})}),(0,n.jsx)("div",{className:"mt-6 text-center",children:(0,n.jsxs)("p",{className:"text-text-muted",children:["Already have an account?"," ",(0,n.jsx)("a",{href:"/login",className:"text-accent-cyan hover:underline font-medium",children:"Sign in"})]})}),(0,n.jsx)("div",{className:"mt-4 text-center",children:(0,n.jsx)("a",{href:"/",className:"text-text-muted hover:text-white transition-colors text-sm",children:"Back to home"})})]})]})}},6272:function(e,t,s){"use strict";s.d(t,{K7:function(){return r}});var n=s(7437);function r(e){let{size:t=24,className:s="",withGlow:r=!1}=e;return(0,n.jsxs)("svg",{width:t,height:t,viewBox:"0 0 100 100",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"\n transition-all duration-300\n ".concat(r?"drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]":"","\n ").concat(s,"\n "),"aria-label":"Agent Relay Logo",role:"img",children:[(0,n.jsx)("path",{d:"M30 80 L 50 20 L 70 80",stroke:"#00d9ff",strokeWidth:"5",strokeLinejoin:"round",strokeLinecap:"round",fill:"none"}),(0,n.jsx)("line",{x1:"40",y1:"50",x2:"60",y2:"50",stroke:"#00d9ff",strokeWidth:"5",strokeLinecap:"round"}),(0,n.jsx)("path",{d:"M50 20 L 50 80",stroke:"#00ffc8",strokeWidth:"2.5",strokeLinecap:"round",opacity:"0.7"}),(0,n.jsx)("path",{d:"M50 20 C 80 20 80 50 50 50 L 80 80",stroke:"#00ffc8",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",fill:"none",opacity:"0.7"})]})}s(2265)}},function(e){e.O(0,[282,971,117,744],function(){return e(e.s=2679)}),_N_E=e.O()}]);
package/test-push.txt DELETED
@@ -1 +0,0 @@
1
- # Test file for push verification