relaybrain 0.0.0-stage → 0.2.1

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 (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +434 -3
  3. package/backend/coordinator/client.js +364 -0
  4. package/backend/coordinator/lockTable.js +649 -0
  5. package/backend/coordinator/server.js +179 -0
  6. package/backend/lib/centralAuth.js +62 -0
  7. package/backend/lib/centralStore.js +112 -0
  8. package/backend/lib/centralSync.js +88 -0
  9. package/backend/lib/cloneRepo.js +108 -0
  10. package/backend/lib/collisionMetrics.js +231 -0
  11. package/backend/lib/conflicts.js +35 -0
  12. package/backend/lib/dashboard.js +53 -0
  13. package/backend/lib/depGraph.js +393 -0
  14. package/backend/lib/deps.js +46 -0
  15. package/backend/lib/dirtyFiles.js +33 -0
  16. package/backend/lib/editMatchers.js +55 -0
  17. package/backend/lib/falkor/analytics.js +228 -0
  18. package/backend/lib/falkor/bus.js +16 -0
  19. package/backend/lib/falkor/central.js +281 -0
  20. package/backend/lib/falkor/client.js +165 -0
  21. package/backend/lib/falkor/config.js +73 -0
  22. package/backend/lib/falkor/coord.js +299 -0
  23. package/backend/lib/falkor/cursor.js +58 -0
  24. package/backend/lib/falkor/demo.js +221 -0
  25. package/backend/lib/falkor/fixtures.js +85 -0
  26. package/backend/lib/falkor/index.js +146 -0
  27. package/backend/lib/falkor/ingest.js +233 -0
  28. package/backend/lib/falkor/intents.js +32 -0
  29. package/backend/lib/falkor/keys.js +102 -0
  30. package/backend/lib/falkor/migrations.js +56 -0
  31. package/backend/lib/falkor/project.js +307 -0
  32. package/backend/lib/falkor/query.js +344 -0
  33. package/backend/lib/falkor/redact.js +30 -0
  34. package/backend/lib/falkor/routes.js +125 -0
  35. package/backend/lib/falkor/schema.js +108 -0
  36. package/backend/lib/falkor/write.js +281 -0
  37. package/backend/lib/githubLogin.js +108 -0
  38. package/backend/lib/githubOAuth.js +42 -0
  39. package/backend/lib/githubRepo.js +117 -0
  40. package/backend/lib/harvest.js +85 -0
  41. package/backend/lib/httpServer.js +27 -0
  42. package/backend/lib/installAgentRelay.js +235 -0
  43. package/backend/lib/installHooks.js +309 -0
  44. package/backend/lib/lamport.js +14 -0
  45. package/backend/lib/localBrowse.js +109 -0
  46. package/backend/lib/memorySync.js +63 -0
  47. package/backend/lib/notices.js +150 -0
  48. package/backend/lib/ot.js +74 -0
  49. package/backend/lib/patches.js +192 -0
  50. package/backend/lib/paths.js +85 -0
  51. package/backend/lib/peerClash.js +64 -0
  52. package/backend/lib/presence.js +35 -0
  53. package/backend/lib/relayOsBlock.js +84 -0
  54. package/backend/lib/repoSnapshot.js +125 -0
  55. package/backend/lib/room.js +638 -0
  56. package/backend/lib/roomAsk.js +148 -0
  57. package/backend/lib/roomAuth.js +215 -0
  58. package/backend/lib/roomControl.js +226 -0
  59. package/backend/lib/roomLocks.js +201 -0
  60. package/backend/lib/roomSignal.js +265 -0
  61. package/backend/lib/roomSync.js +194 -0
  62. package/backend/lib/seed.js +107 -0
  63. package/backend/lib/sseHub.js +40 -0
  64. package/backend/lib/store.js +79 -0
  65. package/backend/lib/supergraph.js +46 -0
  66. package/backend/lib/transcripts/discover.js +437 -0
  67. package/backend/lib/transcripts/parse.js +558 -0
  68. package/backend/lib/transcripts/sessionId.js +36 -0
  69. package/backend/lib/transcripts/sync.js +291 -0
  70. package/backend/lib/transcripts/util.js +299 -0
  71. package/backend/lib/treeSitterImports.js +219 -0
  72. package/backend/lib/watchWorkspace.js +42 -0
  73. package/backend/mcp/README.md +193 -0
  74. package/backend/mcp/server.js +42 -0
  75. package/backend/mcp/tools.js +484 -0
  76. package/backend/server.js +3894 -0
  77. package/cli/graph.js +286 -0
  78. package/cli/relay.js +475 -0
  79. package/docker-compose.falkor.yml +17 -0
  80. package/docs/MEMORY-GRAPH.md +314 -0
  81. package/hooks/relay-antigravity-post-tool.js +2 -0
  82. package/hooks/relay-antigravity-pre-read.js +2 -0
  83. package/hooks/relay-antigravity-pre-tool.js +2 -0
  84. package/hooks/relay-antigravity-stop.js +2 -0
  85. package/hooks/relay-claude-post-tool.js +2 -0
  86. package/hooks/relay-claude-pre-read.js +2 -0
  87. package/hooks/relay-claude-pre-tool.js +2 -0
  88. package/hooks/relay-claude-stop.js +2 -0
  89. package/hooks/relay-codex-post-tool.js +2 -0
  90. package/hooks/relay-codex-pre-read.js +2 -0
  91. package/hooks/relay-codex-pre-tool.js +2 -0
  92. package/hooks/relay-codex-stop.js +2 -0
  93. package/hooks/relay-copilot-post-tool.js +2 -0
  94. package/hooks/relay-copilot-pre-read.js +2 -0
  95. package/hooks/relay-copilot-pre-tool.js +2 -0
  96. package/hooks/relay-copilot-stop.js +2 -0
  97. package/hooks/relay-cursor-post-tool.js +2 -0
  98. package/hooks/relay-cursor-pre-read.js +2 -0
  99. package/hooks/relay-cursor-pre-tool.js +2 -0
  100. package/hooks/relay-cursor-stop.js +2 -0
  101. package/hooks/relay-hook-lib.js +621 -0
  102. package/mission-control/out/404.html +1 -0
  103. package/mission-control/out/__next.__PAGE__.txt +26 -0
  104. package/mission-control/out/__next._full.txt +21 -0
  105. package/mission-control/out/__next._tree.txt +4 -0
  106. package/mission-control/out/_next/static/BuhfCxd0WQE65yIzZJCOM/_buildManifest.js +11 -0
  107. package/mission-control/out/_next/static/BuhfCxd0WQE65yIzZJCOM/_clientMiddlewareManifest.js +1 -0
  108. package/mission-control/out/_next/static/BuhfCxd0WQE65yIzZJCOM/_ssgManifest.js +1 -0
  109. package/mission-control/out/_next/static/chunks/0-3l04fnym95-.js +22 -0
  110. package/mission-control/out/_next/static/chunks/064ntycm-fx5v.js +1 -0
  111. package/mission-control/out/_next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  112. package/mission-control/out/_next/static/chunks/0ehjiuuxbbhq9.js +1 -0
  113. package/mission-control/out/_next/static/chunks/1-dy52ls2ntb_.css +4 -0
  114. package/mission-control/out/_next/static/chunks/1q0cmt0kqufow.js +2 -0
  115. package/mission-control/out/_next/static/chunks/1ya1u0izct4f6.js +1 -0
  116. package/mission-control/out/_next/static/chunks/2n66mlnb34vjq.js +1 -0
  117. package/mission-control/out/_next/static/chunks/2xar70jzx8f1y.css +1 -0
  118. package/mission-control/out/_next/static/chunks/31cgqj_-l15yt.js +31 -0
  119. package/mission-control/out/_next/static/chunks/31qgr-p-oulpb.js +1 -0
  120. package/mission-control/out/_next/static/chunks/3vq9c4hivvgn_.js +1 -0
  121. package/mission-control/out/_next/static/chunks/turbopack-3hsllzpnzz12p.js +1 -0
  122. package/mission-control/out/_next/static/media/icon.27otmh_fv3buh.svg +4 -0
  123. package/mission-control/out/_not-found/__next._full.txt +18 -0
  124. package/mission-control/out/_not-found/__next._not-found/__PAGE__.txt +24 -0
  125. package/mission-control/out/_not-found/__next._tree.txt +3 -0
  126. package/mission-control/out/_not-found.html +1 -0
  127. package/mission-control/out/_not-found.txt +18 -0
  128. package/mission-control/out/agents/antigravity.png +0 -0
  129. package/mission-control/out/agents/claude.png +0 -0
  130. package/mission-control/out/agents/codex.png +0 -0
  131. package/mission-control/out/agents/copilot.png +0 -0
  132. package/mission-control/out/agents/cursor.png +0 -0
  133. package/mission-control/out/icon.svg +4 -0
  134. package/mission-control/out/index.html +1 -0
  135. package/mission-control/out/index.txt +21 -0
  136. package/mission-control/out/logo.png +0 -0
  137. package/mission-control/out/logo_transparent.png +0 -0
  138. package/package.json +76 -6
  139. package/scripts/falkor-rebuild.js +38 -0
  140. package/scripts/falkor-seed-demo.js +29 -0
@@ -0,0 +1 @@
1
+ :root{--bg:#000;--bg-rail:#000;--panel:#000;--panel-2:#070707;--elev:#0b0b0b;--elev-2:#161616;--border:#1a1a1a;--border-soft:#101010;--sunken:#060606;--scrim:#000;--text:#fff;--muted:#8c8c8c;--faint:#5a5a5a;--code:#d0d0d0;--accent:#fff;--accent-hover:#e2e2e2;--accent-deep:#1a1a1a;--accent-edge:#3d3d3d;--accent-ink:#000;--amber:#fff;--amber-dim:#1a1a1a;--green:#3dd68c;--green-dim:#0b2419;--red:#ff6b6b;--red-dim:#2a1212;--red-edge:#4d2020;--red-text:#ffb4b0;--yellow:#e3b341;--yellow-dim:#2a2109;--blue:#6cb6ff;--blue-dim:#0e1c2b;--blue-edge:#24384d;--violet:#b794f4;--violet-dim:#1c1329;--diff-add:#6ee7a0;--diff-del:#ff8d8d;--holding:#0ca30c;--waiting:#fab219;--clash:#d03b3b;--idle:#6a6a6a;--agent-claude:#d97757;--agent-cursor:#b9c0cc;--agent-codex:#10a37f;--agent-copilot:#6cb6ff;--agent-antigravity:#4285f4;--shadow:0 18px 50px #000000bf;--radius:3px;--font:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono:"IBM Plex Mono", "Cascadia Code", ui-monospace, monospace}*{box-sizing:border-box}html,body,#__next{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;height:100%;overflow:hidden}body{background:var(--bg);color:var(--text);font-family:var(--font);letter-spacing:.01em;-webkit-font-smoothing:antialiased;margin:0;font-size:13px}button,input,textarea,select{color:inherit;background:var(--elev);font-family:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:1px solid var(--accent);outline-offset:1px}a{color:var(--accent)}*{scrollbar-width:thin;scrollbar-color:#333 transparent}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#333 padding-box padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#4a4a4a padding-box padding-box}::-webkit-scrollbar-corner{background:0 0}.glass-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--faint);align-items:center;gap:8px;margin-bottom:12px;font-size:10px;font-weight:700;display:flex}@keyframes pulse-active{0%{box-shadow:0 0 #ffffff59}70%{box-shadow:0 0 0 7px #fff0}to{box-shadow:0 0 #fff0}}@keyframes pulse-warning{0%{box-shadow:0 0 #e3b34166}70%{box-shadow:0 0 0 7px #e3b34100}to{box-shadow:0 0 #e3b34100}}@keyframes pulse-critical{0%{box-shadow:0 0 #ff6b6b66}70%{box-shadow:0 0 0 7px #ff6b6b00}to{box-shadow:0 0 #ff6b6b00}}.md{word-break:break-word;overflow-wrap:anywhere}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:0 0 .65em;line-height:1.5}.md p:last-child{margin-bottom:0}.md h1,.md h2,.md h3,.md h4{color:var(--text);margin:.85em 0 .4em;font-weight:650;line-height:1.3}.md h1{font-size:15px}.md h2{font-size:14px}.md h3,.md h4{font-size:13px}.md ul,.md ol{margin:.4em 0 .7em;padding-left:1.3em}.md li{margin:.2em 0}.md li>p{margin:0}.md blockquote{border-left:2px solid var(--accent);color:var(--muted);margin:.5em 0;padding:4px 0 4px 10px}.md hr{border:0;border-top:1px solid var(--border);margin:10px 0}.md a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.md table{border-collapse:collapse;width:100%;margin:.6em 0;font-size:11px}.md th,.md td{border:1px solid var(--border);text-align:left;padding:4px 7px}.md th{background:var(--elev);color:var(--text)}.md pre{background:var(--sunken);border:1px solid var(--border);border-radius:var(--radius);max-height:280px;margin:.55em 0;padding:8px 10px;overflow:auto}.md-code{font-family:var(--mono);color:var(--code);white-space:pre;font-size:11px;line-height:1.45;display:block}.md-inline{font-family:var(--mono);background:var(--elev);border:1px solid var(--border-soft);border-radius:3px;padding:0 4px;font-size:.92em}.md-img{border-radius:var(--radius);max-width:100%;margin:6px 0}.md-clamp{max-height:9.6em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 62%,#0000);mask-image:linear-gradient(#000 62%,#0000)}.md strong{color:var(--text);font-weight:650}.md em{color:var(--text)}.md input[type=checkbox]{accent-color:var(--accent);margin-right:6px}.md ul.contains-task-list{padding-left:1em;list-style:none}
@@ -0,0 +1,31 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55682,(e,t,r)=>{"use strict";r._=function(e){return e&&e.__esModule?e:{default:e}}},18576,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={WarningIcon:function(){return c},errorStyles:function(){return u},errorThemeCss:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});e.r(55682);let i=e.r(18050);e.r(71645);let u={container:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",display:"flex",alignItems:"center",justifyContent:"center"},card:{marginTop:"-32px",maxWidth:"325px",padding:"32px 28px",textAlign:"left"},icon:{marginBottom:"24px"},title:{fontSize:"24px",fontWeight:500,letterSpacing:"-0.02em",lineHeight:"32px",margin:"0 0 12px 0",color:"var(--next-error-title)"},message:{fontSize:"14px",fontWeight:400,lineHeight:"21px",margin:"0 0 20px 0",color:"var(--next-error-message)"},form:{margin:0},buttonGroup:{display:"flex",gap:"8px",alignItems:"center"},button:{display:"inline-flex",alignItems:"center",justifyContent:"center",height:"32px",padding:"0 12px",fontSize:"14px",fontWeight:500,lineHeight:"20px",borderRadius:"6px",cursor:"pointer",color:"var(--next-error-btn-text)",background:"var(--next-error-btn-bg)",border:"var(--next-error-btn-border)"},buttonSecondary:{display:"inline-flex",alignItems:"center",justifyContent:"center",height:"32px",padding:"0 12px",fontSize:"14px",fontWeight:500,lineHeight:"20px",borderRadius:"6px",cursor:"pointer",color:"var(--next-error-btn-secondary-text)",background:"var(--next-error-btn-secondary-bg)",border:"var(--next-error-btn-secondary-border)"},digestFooter:{position:"fixed",bottom:"32px",left:"0",right:"0",textAlign:"center",fontFamily:'ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace',fontSize:"12px",lineHeight:"18px",fontWeight:400,margin:"0",color:"var(--next-error-digest)"}},s=`
2
+ :root {
3
+ --next-error-bg: #fff;
4
+ --next-error-text: #171717;
5
+ --next-error-title: #171717;
6
+ --next-error-message: #171717;
7
+ --next-error-digest: #666666;
8
+ --next-error-btn-text: #fff;
9
+ --next-error-btn-bg: #171717;
10
+ --next-error-btn-border: none;
11
+ --next-error-btn-secondary-text: #171717;
12
+ --next-error-btn-secondary-bg: transparent;
13
+ --next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);
14
+ }
15
+ @media (prefers-color-scheme: dark) {
16
+ :root {
17
+ --next-error-bg: #0a0a0a;
18
+ --next-error-text: #ededed;
19
+ --next-error-title: #ededed;
20
+ --next-error-message: #ededed;
21
+ --next-error-digest: #a0a0a0;
22
+ --next-error-btn-text: #0a0a0a;
23
+ --next-error-btn-bg: #ededed;
24
+ --next-error-btn-border: none;
25
+ --next-error-btn-secondary-text: #ededed;
26
+ --next-error-btn-secondary-bg: transparent;
27
+ --next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);
28
+ }
29
+ }
30
+ body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }
31
+ `.replace(/\n\s*/g,"");function c(){return(0,i.jsx)("svg",{width:"32",height:"32",viewBox:"-0.2 -1.5 32 32",fill:"none",style:u.icon,children:(0,i.jsx)("path",{d:"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z",fill:"var(--next-error-title)"})})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68027,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return u}}),e.r(55682);let n=e.r(18050);e.r(71645);let o=e.r(12354),i=e.r(18576),u=function({error:e}){let t=e?.digest,r=!!t;return(0,o.handleISRError)({error:e}),(0,n.jsxs)("html",{id:"__next_error__",children:[(0,n.jsx)("head",{children:(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:i.errorThemeCss}})}),(0,n.jsxs)("body",{children:[(0,n.jsx)("div",{style:i.errorStyles.container,children:(0,n.jsxs)("div",{style:i.errorStyles.card,children:[(0,n.jsx)(i.WarningIcon,{}),(0,n.jsx)("h1",{style:i.errorStyles.title,children:"This page couldn’t load"}),(0,n.jsx)("p",{style:i.errorStyles.message,children:r?"A server error occurred. Reload to try again.":"Reload to try again, or go back."}),(0,n.jsxs)("div",{style:i.errorStyles.buttonGroup,children:[(0,n.jsx)("form",{style:i.errorStyles.form,children:(0,n.jsx)("button",{type:"submit",style:i.errorStyles.button,children:"Reload"})}),!r&&(0,n.jsx)("button",{type:"button",style:i.errorStyles.buttonSecondary,onClick:()=>{window.history.length>1?window.history.back():window.location.href="/"},children:"Back"})]})]})}),t&&(0,n.jsxs)("p",{style:i.errorStyles.digestFooter,children:["ERROR ",t]})]})]})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},12354,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"handleISRError",{enumerable:!0,get:function(){return o}});let n=e.r(1425);function o({error:e}){if(n.workAsyncStorage){let t=n.workAsyncStorage.getStore();if(t?.isStaticGeneration)throw e&&console.error(e),e}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},1425,(e,t,r)=>{"use strict";let n,o,i;Object.defineProperty(r,"__esModule",{value:!0});var u={actionAsyncStorage:function(){return n},workAsyncStorage:function(){return o},workUnitAsyncStorage:function(){return i}};for(var s in u)Object.defineProperty(r,s,{enumerable:!0,get:u[s]});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},35451,(e,t,r)=>{var n={156:function(e){var t,r,n,o=e.exports={};function i(){throw Error("setTimeout has not been defined")}function u(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:i}catch(e){t=i}try{r="function"==typeof clearTimeout?clearTimeout:u}catch(e){r=u}function s(e){if(t===setTimeout)return setTimeout(e,0);if((t===i||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var c=[],a=!1,l=-1;function f(){a&&n&&(a=!1,n.length?c=n.concat(c):l=-1,c.length&&d())}function d(){if(!a){var e=s(f);a=!0;for(var t=c.length;t;){for(n=c,c=[];++l<t;)n&&n[l].run();l=-1,t=c.length}n=null,a=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===u||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new p(e,t)),1!==c.length||a||s(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw Error("process.chdir is not supported")},o.umask=function(){return 0}}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}},u=!0;try{n[e](r,r.exports,i),u=!1}finally{u&&delete o[e]}return r.exports}i.ab="/ROOT/node_modules/next/dist/compiled/process/",t.exports=i(156)},47167,(e,t,r)=>{"use strict";var n,o;t.exports=(null==(n=e.g.process)?void 0:n.env)&&"object"==typeof(null==(o=e.g.process)?void 0:o.env)?e.g.process:e.r(35451)},18800,(e,t,r)=>{"use strict";var n=e.r(71645);function o(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function i(){}var u={d:{f:i,r:function(){throw Error(o(522))},D:i,C:i,L:i,m:i,X:i,S:i,M:i},p:0,findDOMNode:null},s=Symbol.for("react.portal"),c=Symbol.for("react.recoverable"),a=Symbol.for("react.optimistic_key"),l=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function f(e,t){return"font"===e?"":"string"==typeof t?"use-credentials"===t?t:"":void 0}r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=u,r.browser=function(){var e=Error(o(603));return Object.defineProperty(e,"$$typeof",{value:c}),e},r.createPortal=function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!t||1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType)throw Error(o(299));return function(e,t,r){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:s,key:null==n?null:n===a?a:""+n,children:e,containerInfo:t,implementation:r}}(e,t,null,r)},r.flushSync=function(e){var t=l.T,r=u.p;try{if(l.T=null,u.p=2,e)return e()}finally{l.T=t,u.p=r,u.d.f()}},r.preconnect=function(e,t){"string"==typeof e&&(t=t?"string"==typeof(t=t.crossOrigin)?"use-credentials"===t?t:"":void 0:null,u.d.C(e,t))},r.prefetchDNS=function(e){"string"==typeof e&&u.d.D(e)},r.preinit=function(e,t){if("string"==typeof e&&t&&"string"==typeof t.as){var r=t.as,n=f(r,t.crossOrigin),o="string"==typeof t.integrity?t.integrity:void 0,i="string"==typeof t.fetchPriority?t.fetchPriority:void 0;"style"===r?u.d.S(e,"string"==typeof t.precedence?t.precedence:void 0,{crossOrigin:n,integrity:o,fetchPriority:i}):"script"===r&&u.d.X(e,{crossOrigin:n,integrity:o,fetchPriority:i,nonce:"string"==typeof t.nonce?t.nonce:void 0})}},r.preinitModule=function(e,t){if("string"==typeof e)if("object"==typeof t&&null!==t){if(null==t.as||"script"===t.as){var r=f(t.as,t.crossOrigin);u.d.M(e,{crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0})}}else null==t&&u.d.M(e)},r.preload=function(e,t){if("string"==typeof e&&"object"==typeof t&&null!==t&&"string"==typeof t.as){var r=t.as,n=f(r,t.crossOrigin);u.d.L(e,r,{crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,type:"string"==typeof t.type?t.type:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0,referrerPolicy:"string"==typeof t.referrerPolicy?t.referrerPolicy:void 0,imageSrcSet:"string"==typeof t.imageSrcSet?t.imageSrcSet:void 0,imageSizes:"string"==typeof t.imageSizes?t.imageSizes:void 0,media:"string"==typeof t.media?t.media:void 0})}},r.preloadModule=function(e,t){if("string"==typeof e)if(t){var r=f(t.as,t.crossOrigin);u.d.m(e,{as:"string"==typeof t.as&&"script"!==t.as?t.as:void 0,crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0})}else u.d.m(e)},r.requestFormReset=function(e){u.d.r(e)},r.unstable_batchedUpdates=function(e,t){return e(t)},r.useFormState=function(e,t,r){return l.H.useFormState(e,t,r)},r.useFormStatus=function(){return l.H.useHostTransitionStatus()},r.version="19.3.0-canary-cbb046ab-20260731"},74080,(e,t,r)=>{"use strict";e.i(47167),!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),t.exports=e.r(18800)},45689,(e,t,r)=>{"use strict";var n=Symbol.for("react.transitional.element");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var i in r={},t)"key"!==i&&(r[i]=t[i]);else r=t;return{$$typeof:n,type:e,key:o,ref:void 0!==(t=r.ref)?t:null,props:r}}r.Fragment=Symbol.for("react.fragment"),r.jsx=o,r.jsxs=o},18050,(e,t,r)=>{"use strict";e.i(47167),t.exports=e.r(45689)},50740,(e,t,r)=>{"use strict";var n=e.i(47167),o=Symbol.for("react.transitional.element"),i=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),l=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),g=Symbol.for("react.activity"),h=Symbol.for("react.view_transition"),v=Symbol.iterator,b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,_={};function x(e,t,r){this.props=e,this.context=t,this.refs=_,this.updater=r||b}function S(){}function O(e,t,r){this.props=e,this.context=t,this.refs=_,this.updater=r||b}x.prototype.isReactComponent={},x.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},x.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},S.prototype=x.prototype;var j=O.prototype=new S;j.constructor=O,m(j,x.prototype),j.isPureReactComponent=!0;var E=Array.isArray;function T(){}var R={H:null,A:null,T:null,S:null},w=Object.prototype.hasOwnProperty;function C(e,t,r){var n=r.ref;return{$$typeof:o,type:e,key:t,ref:void 0!==n?n:null,props:r}}function P(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var k=/\/+/g;function H(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function A(e,t,r){if(null==e)return e;var n=[],u=0;return!function e(t,r,n,u,s){var c,a,l,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case i:d=!0;break;case y:return e((d=t._init)(t._payload),r,n,u,s)}}if(d)return s=s(t),d=""===u?"."+H(t,0):u,E(s)?(n="",null!=d&&(n=d.replace(k,"$&/")+"/"),e(s,r,n,"",function(e){return e})):null!=s&&(P(s)&&(c=s,a=n+(null==s.key||t&&t.key===s.key?"":(""+s.key).replace(k,"$&/")+"/")+d,s=C(c.type,a,c.props)),r.push(s)),1;d=0;var p=""===u?".":u+":";if(E(t))for(var g=0;g<t.length;g++)f=p+H(u=t[g],g),d+=e(u,r,n,f,s);else if("function"==typeof(g=null===(l=t)||"object"!=typeof l?null:"function"==typeof(l=v&&l[v]||l["@@iterator"])?l:null))for(t=g.call(t),g=0;!(u=t.next()).done;)f=p+H(u=u.value,g++),d+=e(u,r,n,f,s);else if("object"===f){if("function"==typeof t.then)return e(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(T,T):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(t),r,n,u,s);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===(r=String(t))?"object with keys {"+Object.keys(t).join(", ")+"}":r)+"). If you meant to render a collection of children, use an array instead.")}return d}(e,n,"","",function(e){return t.call(r,e,u++)}),n}function M(e){if(-1===e._status){var t=(0,e._result)();t.then(function(r){(0===e._status||-1===e._status)&&(e._status=1,e._result=r,void 0===t.status&&(t.status="fulfilled",t.value=r))},function(r){(0===e._status||-1===e._status)&&(e._status=2,e._result=r,void 0===t.status&&(t.status="rejected",t.reason=r))}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var I="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof n.default&&"function"==typeof n.default.emit)return void n.default.emit("uncaughtException",e);console.error(e)};function L(e){var t=R.T,r={};r.types=null!==t?t.types:null,R.T=r;try{var n=e(),o=R.S;null!==o&&o(r,n),"object"==typeof n&&null!==n&&"function"==typeof n.then&&n.then(T,I)}catch(e){I(e)}finally{null!==t&&null!==r.types&&(t.types=r.types),R.T=t}}function $(e){var t=R.T;if(null!==t){var r=t.types;null===r?t.types=[e]:-1===r.indexOf(e)&&r.push(e)}else L($.bind(null,e))}r.Activity=g,r.Children={map:A,forEach:function(e,t,r){A(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return A(e,function(){t++}),t},toArray:function(e){return A(e,function(e){return e})||[]},only:function(e){if(!P(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},r.Component=x,r.Fragment=u,r.Profiler=c,r.PureComponent=O,r.StrictMode=s,r.Suspense=d,r.ViewTransition=h,r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=R,r.__COMPILER_RUNTIME={__proto__:null,c:function(e){return R.H.useMemoCache(e)}},r.addTransitionType=$,r.cache=function(e){return function(){return e.apply(null,arguments)}},r.cacheSignal=function(){return null},r.cloneElement=function(e,t,r){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var n=m({},e.props),o=e.key;if(null!=t)for(i in void 0!==t.key&&(o=""+t.key),t)w.call(t,i)&&"key"!==i&&"__self"!==i&&"__source"!==i&&("ref"!==i||void 0!==t.ref)&&(n[i]=t[i]);var i=arguments.length-2;if(1===i)n.children=r;else if(1<i){for(var u=Array(i),s=0;s<i;s++)u[s]=arguments[s+2];n.children=u}return C(e.type,o,n)},r.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:a,_context:e},e},r.createElement=function(e,t,r){var n,o={},i=null;if(null!=t)for(n in void 0!==t.key&&(i=""+t.key),t)w.call(t,n)&&"key"!==n&&"__self"!==n&&"__source"!==n&&(o[n]=t[n]);var u=arguments.length-2;if(1===u)o.children=r;else if(1<u){for(var s=Array(u),c=0;c<u;c++)s[c]=arguments[c+2];o.children=s}if(e&&e.defaultProps)for(n in u=e.defaultProps)void 0===o[n]&&(o[n]=u[n]);return C(e,i,o)},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:f,render:e}},r.isValidElement=P,r.lazy=function(e){return{$$typeof:y,_payload:{_status:-1,_result:e},_init:M}},r.memo=function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},r.startTransition=L,r.unstable_useCacheRefresh=function(){return R.H.useCacheRefresh()},r.use=function(e){return R.H.use(e)},r.useActionState=function(e,t,r){return R.H.useActionState(e,t,r)},r.useCallback=function(e,t){return R.H.useCallback(e,t)},r.useContext=function(e){return R.H.useContext(e)},r.useDebugValue=function(){},r.useDeferredValue=function(e,t){return R.H.useDeferredValue(e,t)},r.useEffect=function(e,t){return R.H.useEffect(e,t)},r.useEffectEvent=function(e){return R.H.useEffectEvent(e)},r.useId=function(){return R.H.useId()},r.useImperativeHandle=function(e,t,r){return R.H.useImperativeHandle(e,t,r)},r.useInsertionEffect=function(e,t){return R.H.useInsertionEffect(e,t)},r.useLayoutEffect=function(e,t){return R.H.useLayoutEffect(e,t)},r.useMemo=function(e,t){return R.H.useMemo(e,t)},r.useOptimistic=function(e,t){return R.H.useOptimistic(e,t)},r.useReducer=function(e,t,r){return R.H.useReducer(e,t,r)},r.useRef=function(e){return R.H.useRef(e)},r.useState=function(e){return R.H.useState(e)},r.useSyncExternalStore=function(e,t,r){return R.H.useSyncExternalStore(e,t,r)},r.useTransition=function(){return R.H.useTransition()},r.version="19.3.0-canary-cbb046ab-20260731"},71645,(e,t,r)=>{"use strict";e.i(47167),t.exports=e.r(50740)},43369,(e,t,r)=>{"use strict";let n;e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var o={getAssetToken:function(){return c},getAssetTokenQuery:function(){return a},getDeploymentId:function(){return u},getDeploymentIdQuery:function(){return s}};for(var i in o)Object.defineProperty(r,i,{enumerable:!0,get:o[i]});function u(){return n}function s(e=!1){let t=n;return t?`${e?"&":"?"}dpl=${t}`:""}function c(){return!1}function a(e=!1){return""}"u">typeof window?(n=document.documentElement.dataset.dplId,delete document.documentElement.dataset.dplId):n=void 0},32061,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={BailoutToCSRError:function(){return u},isBailoutToCSRError:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let i="BAILOUT_TO_CLIENT_SIDE_RENDERING";class u extends Error{constructor(e){super(`Bail out to client-side rendering: ${e}`),this.reason=e,this.digest=i}}function s(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===i}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,93595,s=>{s.v(t=>Promise.all(["static/chunks/1-dy52ls2ntb_.css","static/chunks/3vq9c4hivvgn_.js"].map(t=>s.l(t))).then(()=>t(93858)))}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,38004,e=>{e.v({agent:"lockgraph-module__UMreqW__agent",agentClash:"lockgraph-module__UMreqW__agentClash",agentOn:"lockgraph-module__UMreqW__agentOn",alogo:"lockgraph-module__UMreqW__alogo",alogoFallback:"lockgraph-module__UMreqW__alogoFallback",am:"lockgraph-module__UMreqW__am",an:"lockgraph-module__UMreqW__an",as:"lockgraph-module__UMreqW__as",bad:"lockgraph-module__UMreqW__bad",bar:"lockgraph-module__UMreqW__bar",canvas:"lockgraph-module__UMreqW__canvas",caption:"lockgraph-module__UMreqW__caption",eClash:"lockgraph-module__UMreqW__eClash",eHold:"lockgraph-module__UMreqW__eHold",eRead:"lockgraph-module__UMreqW__eRead",eWait:"lockgraph-module__UMreqW__eWait",empty:"lockgraph-module__UMreqW__empty",emptyHint:"lockgraph-module__UMreqW__emptyHint",emptyIcon:"lockgraph-module__UMreqW__emptyIcon",file:"lockgraph-module__UMreqW__file",fileClash:"lockgraph-module__UMreqW__fileClash",fileLocked:"lockgraph-module__UMreqW__fileLocked",flowing:"lockgraph-module__UMreqW__flowing",fn:"lockgraph-module__UMreqW__fn",fname:"lockgraph-module__UMreqW__fname",fp:"lockgraph-module__UMreqW__fp",legend:"lockgraph-module__UMreqW__legend",lg:"lockgraph-module__UMreqW__lg",lgflow:"lockgraph-module__UMreqW__lgflow",pClash:"lockgraph-module__UMreqW__pClash",pWait:"lockgraph-module__UMreqW__pWait",pill:"lockgraph-module__UMreqW__pill",ring:"lockgraph-module__UMreqW__ring",ringBg:"lockgraph-module__UMreqW__ringBg",stClash:"lockgraph-module__UMreqW__stClash",stHold:"lockgraph-module__UMreqW__stHold",stIdle:"lockgraph-module__UMreqW__stIdle",stRead:"lockgraph-module__UMreqW__stRead",stWait:"lockgraph-module__UMreqW__stWait",tog:"lockgraph-module__UMreqW__tog",togOn:"lockgraph-module__UMreqW__togOn",toggles:"lockgraph-module__UMreqW__toggles",uav:"lockgraph-module__UMreqW__uav",uavFallback:"lockgraph-module__UMreqW__uavFallback",ucount:"lockgraph-module__UMreqW__ucount",udotOff:"lockgraph-module__UMreqW__udotOff",udotOn:"lockgraph-module__UMreqW__udotOn",ugroup:"lockgraph-module__UMreqW__ugroup",uhead:"lockgraph-module__UMreqW__uhead",warn:"lockgraph-module__UMreqW__warn",who:"lockgraph-module__UMreqW__who",wrap:"lockgraph-module__UMreqW__wrap"})},3387,e=>{"use strict";var l=e.i(18050),a=e.i(71645),t=e.i(54548),s=e.i(30590),r=e.i(38070);function i(e){let[l,a,t]=String(e||"").split(":");return{label:l||"agent",host:a||"",session:t||""}}var o=e.i(38004);let n={hold:{icon:"●",text:"Editing now",cls:"stHold"},clash:{icon:"▲",text:"Editing now",cls:"stClash"},read:{icon:"◎",text:"Reading",cls:"stRead"},wait:{icon:"◐",text:"Also working here",cls:"stWait"},idle:{icon:"○",text:"Idle",cls:"stIdle"}},d={user:function({data:e}){return(0,l.jsx)("div",{className:o.default.ugroup,children:(0,l.jsxs)("div",{className:o.default.uhead,children:[e.avatarUrl?(0,l.jsx)("img",{className:o.default.uav,src:e.avatarUrl,alt:""}):(0,l.jsx)("span",{className:o.default.uavFallback,children:e.login[0]?.toUpperCase()}),(0,l.jsxs)("b",{children:["@",e.login]}),(0,l.jsx)("span",{className:e.online?o.default.udotOn:o.default.udotOff}),(0,l.jsx)("span",{className:o.default.ucount,children:e.agents.length})]})})},agent:function({data:e}){let a,r=n[e.state]||n.idle,i=(a=String(e.label||"").toLowerCase()).includes("cursor")?"/agents/cursor.png":a.includes("claude")?"/agents/claude.png":a.includes("codex")||a.includes("openai")?"/agents/codex.png":a.includes("copilot")?"/agents/copilot.png":a.includes("antigravity")||a.includes("gemini")?"/agents/antigravity.png":null;return(0,l.jsxs)("div",{className:`${o.default.agent} ${"hold"===e.state?o.default.agentOn:""} ${"clash"===e.state?o.default.agentClash:""}`,children:[i?(0,l.jsx)("img",{src:i,alt:"",className:o.default.alogo}):(0,l.jsx)("span",{className:o.default.alogoFallback,children:e.label[0]?.toUpperCase()}),(0,l.jsxs)("div",{className:o.default.am,children:[(0,l.jsx)("div",{className:o.default.an,title:e.host?`${e.label} \xb7 ${e.host}`:e.label,children:e.label}),(0,l.jsxs)("div",{className:`${o.default.as} ${o.default[r.cls]}`,children:[r.icon," ",r.text]})]}),(0,l.jsx)(t.Handle,{type:"source",position:s.Position.Right})]})},file:function({data:e}){let a=2*Math.PI*7.5,r=e.clashUsers.length>1;return(0,l.jsxs)("div",{className:`${o.default.file} ${r?o.default.fileClash:e.holder?o.default.fileLocked:""}`,children:[(0,l.jsx)(t.Handle,{type:"target",position:s.Position.Left}),(0,l.jsxs)("div",{className:o.default.fn,children:[(0,l.jsxs)("svg",{className:o.default.ring,viewBox:"0 0 20 20","aria-hidden":!0,children:[(0,l.jsx)("circle",{className:o.default.ringBg,cx:"10",cy:"10",r:7.5}),(0,l.jsx)("circle",{cx:"10",cy:"10",r:7.5,fill:"none",strokeWidth:"2.5",strokeLinecap:"round",stroke:r?"var(--clash)":"var(--holding)",strokeDasharray:a,strokeDashoffset:a*(1-e.ttl),style:{transform:"rotate(-90deg)",transformOrigin:"50% 50%"}})]}),(0,l.jsx)("span",{className:o.default.fname,title:e.path,children:e.path.split("/").pop()}),r?(0,l.jsxs)("span",{className:`${o.default.pill} ${o.default.pClash}`,children:["⚠ ",e.clashUsers.length," people"]}):e.waiting>0?(0,l.jsxs)("span",{className:`${o.default.pill} ${o.default.pWait}`,children:[e.waiting," more"]}):null]}),(0,l.jsx)("div",{className:o.default.fp,children:e.path}),(0,l.jsx)("div",{className:o.default.who,style:r?{color:"var(--clash)"}:void 0,children:r?`${e.clashUsers.map(e=>"@"+e).join(" and ")} both editing`:e.holder?`${e.holder} has it \xb7 ${e.secondsLeft}s left`:e.reader?`${e.reader} is reading it`:"Not being edited"})]})}},c={state:function({id:e,sourceX:a,sourceY:t,targetX:r,targetY:i,sourcePosition:n,targetPosition:d,data:c}){let h=c.kind,g=c.animate,u="wait"===h?52:6,[_]=(0,s.getBezierPath)({sourceX:a,sourceY:t,sourcePosition:n,targetX:r-u,targetY:i,targetPosition:d}),f="hold"===h?o.default.eHold:"read"===h?o.default.eRead:"wait"===h?o.default.eWait:o.default.eClash;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("path",{id:e,d:_,className:`${f} ${("hold"===h||"clash"===h)&&g?o.default.flowing:""}`,fill:"none"}),"wait"===h&&(0,l.jsx)("circle",{cx:r-u,cy:i,r:"3",fill:"var(--waiting)"})]})}};function h(){let{dashboard:e,user:s}=(0,r.useRelay)(),[n,h]=(0,a.useState)(()=>Date.now()),[g,u]=(0,a.useState)(!0),[_,f]=(0,a.useState)(!0),p=(0,t.useReactFlow)();(0,a.useEffect)(()=>{let e=window.setInterval(()=>h(Date.now()),500);return()=>window.clearInterval(e)},[]);let m=(0,a.useMemo)(()=>{var l,a;let t,r=e?.locks??[],o=e?.reads??[],d=e?.collaborators??[],c=e?.conflicts??[],h=e?.agents??[],g=(l=[...r,...o.map(e=>({agentId:e.agentId,holder:e.holder}))],a=!!e?.room?.url,t=new Set(l.map(e=>i(e.agentId).host).filter(Boolean)).size<=1&&!a,(e,l)=>{let a=l?.login;if(a){let e=d.find(e=>String(e.login).toLowerCase()===String(a).toLowerCase());return{key:a.toLowerCase(),login:a,name:e?.name||a,avatarUrl:e?.avatarUrl||null}}let{host:r}=i(e);if(t&&s)return{key:s.login,login:s.login,name:s.name||s.login,avatarUrl:s.avatarUrl||null};let o=r||"this machine";return{key:`host:${o}`,login:o,name:o,avatarUrl:null}}),u=new Map,_=new Map,f=new Map,p=[],m=e=>{if(!u.has(e.key)){let l=d.find(l=>String(l.login).toLowerCase()===String(e.login).toLowerCase());u.set(e.key,{key:e.key,login:e.login,name:e.name,avatarUrl:e.avatarUrl,online:l?.online??!0,agents:[]})}return u.get(e.key)},x=(e,l)=>{let a=function(e){let{label:l,host:a}=i(e);return`${l}:${a}`}(e);if(!_.has(a)){let{label:t,host:s}=i(e),r=m(g(e,l)),o={id:a,label:l?.label||t,host:s,userKey:r.key,state:"idle"};_.set(a,o),r.agents.push(o)}return _.get(a)};for(let e of r){if("read"===e.mode)continue;let l=e.filePath.includes("::")?e.filePath.split("::")[1]:e.filePath,a=e.released?Math.max(0,(e.releasedAt||0)+45e3-n):Math.max(0,(e.expiresAt||0)-n);if(e.released&&a<=0)continue;f.has(l)||f.set(l,{id:l,path:l,holder:null,reader:null,ttl:0,secondsLeft:0,waiting:0,clashUsers:[]});let t=f.get(l),s=x(e.agentId,e.holder),r=Math.max(0,Math.min(1,a/(e.released?45e3:e.ttlMs||45e3)));t.holder=s.label,t.ttl=r,t.secondsLeft=Math.ceil(a/1e3),s.state="hold",p.push({id:`l-${s.id}-${l}`,agentId:s.id,fileId:l,kind:"hold"})}for(let e of o){let l=e.filePath.includes("::")?e.filePath.split("::")[1]:e.filePath;if(!l)continue;f.has(l)||f.set(l,{id:l,path:l,holder:null,reader:null,ttl:0,secondsLeft:0,waiting:0,clashUsers:[]});let a=f.get(l),t=x(e.agentId,e.holder),s=e.expiresAt||(e.at||0)+3e4,r=e.ttlMs||3e4,i=Math.max(0,s-n),o=Math.max(0,Math.min(1,i/r));a.holder||(a.reader=t.label,a.ttl=o,a.secondsLeft=Math.ceil(i/1e3)),"idle"===t.state&&(t.state="read"),p.some(e=>e.agentId===t.id&&e.fileId===l&&"hold"===e.kind)||p.push({id:`r-${t.id}-${l}`,agentId:t.id,fileId:l,kind:"read"})}for(let l of e?.edits??[]){let e=String(l.file||"").replace(/\\/g,"/");if(!e||n-(l.ts||0)>45e3||f.has(e))continue;f.set(e,{id:e,path:e,holder:null,reader:null,ttl:0,secondsLeft:0,waiting:0,clashUsers:[]});let a=f.get(e),t=x(`${l.agent}:${l.ownerLogin||"local"}`,{label:l.agent,login:l.ownerLogin}),s=Math.max(0,45e3-(n-l.ts));a.holder=t.label,a.ttl=s/45e3,a.secondsLeft=Math.ceil(s/1e3),t.state="hold",p.push({id:`e-${t.id}-${e}`,agentId:t.id,fileId:e,kind:"hold"})}for(let e of f.values()){let l=new Set(p.filter(l=>l.fileId===e.id&&("hold"===l.kind||"clash"===l.kind)).map(e=>_.get(e.agentId)?.userKey).filter(Boolean));l.size>1&&(e.clashUsers=[...l].map(e=>u.get(e)?.login||e),p.forEach(l=>{l.fileId===e.id&&"hold"===l.kind&&(l.kind="clash")}))}let k=new Map;for(let e of(p.forEach(e=>{k.has(e.fileId)||k.set(e.fileId,new Set),k.get(e.fileId).add(e.agentId)}),c)){let l=f.get(e.file);if(l)for(let a of e.agents){let t=[..._.values()].find(e=>e.label.toLowerCase()===String(a).toLowerCase());!t||k.get(e.file)?.has(t.id)||("idle"===t.state&&(t.state="wait"),l.waiting+=1,p.push({id:`w-${t.id}-${e.file}`,agentId:t.id,fileId:e.file,kind:"wait"}))}}for(let e of h){if("connected"!==e.status)continue;let l=String(e.label||"");if([..._.values()].some(e=>e.label.toLowerCase()===l.toLowerCase()))continue;let a=m(g(l,null)),t={id:`idle:${l}`,label:l,host:"",userKey:a.key,state:"idle"};_.set(t.id,t),a.agents.push(t)}let j=[...u.values()].sort((e,l)=>e.login.localeCompare(l.login)),w=[...f.values()].sort((e,l)=>!!l.clashUsers.length!=!!e.clashUsers.length?l.clashUsers.length-e.clashUsers.length:e.path.localeCompare(l.path));return{users:j,files:w,edges:p,empty:0===w.length&&0===j.length}},[e,s,n]),x=(0,a.useMemo)(()=>[...m.users.map(e=>e.key+":"+e.agents.map(e=>e.id).join(",")),...m.files.map(e=>e.id)].join("|"),[m.users,m.files]),k=(0,a.useMemo)(()=>{let e=new Map,l=0;for(let a of m.users){let t=46+66*Math.max(1,a.agents.length)+14;e.set(a.key,{x:0,y:l,h:t}),a.agents.forEach((l,a)=>e.set(l.id,{x:16,y:46+66*a})),l+=t+26}return m.files.forEach((l,a)=>e.set(l.id,{x:640,y:116*a})),e},[x]),j=(0,a.useMemo)(()=>{let e=[];for(let l of m.users){let a=k.get(l.key);if(a)for(let t of(e.push({id:l.key,type:"user",position:{x:a.x,y:a.y},data:l,style:{width:250,height:a.h},zIndex:0}),l.agents)){let a=k.get(t.id);a&&e.push({id:t.id,type:"agent",parentId:l.key,extent:"parent",position:{x:a.x,y:a.y},data:{label:t.label,state:t.state,host:t.host},zIndex:1})}}for(let l of m.files){let a=k.get(l.id);a&&e.push({id:l.id,type:"file",position:{x:a.x,y:a.y},data:l,zIndex:1})}return e},[m,k]),w=(0,a.useMemo)(()=>m.edges.filter(e=>!!_||"wait"!==e.kind).map(e=>({id:e.id,source:e.agentId,target:e.fileId,type:"state",data:{kind:e.kind,animate:g}})),[m.edges,g,_]);(0,a.useEffect)(()=>{let e=window.setTimeout(()=>p.fitView({padding:.14,duration:350}),80);return()=>window.clearTimeout(e)},[x,p]);let y=m.files.filter(e=>e.clashUsers.length>1).length,M=m.files.find(e=>e.holder&&!e.clashUsers.length),U=m.files.find(e=>e.reader&&!e.holder),v=m.files.reduce((e,l)=>e+l.waiting,0);if(m.empty){let a=e?.room,t=a?.role==="guest"&&!1===a.hostReachable;return(0,l.jsxs)("div",{className:o.default.empty,children:[(0,l.jsx)("div",{className:o.default.emptyIcon,children:t?"◌":"◍"}),t?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("p",{children:(0,l.jsx)("b",{children:"Can't reach the room host right now."})}),(0,l.jsxs)("p",{className:o.default.emptyHint,children:["The board mirrors whoever is hosting the coordinator, so it stays empty until"," ",a?.url?(0,l.jsx)("code",{children:a.url}):"the host"," answers again. Locks you take meanwhile are kept locally and merge back on reconnect."]})]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("p",{children:(0,l.jsx)("b",{children:"No files are being edited or read right now."})}),(0,l.jsxs)("p",{className:o.default.emptyHint,children:["The board fills in the moment an agent reads or edits a file — run ",(0,l.jsx)("code",{children:"relay serve"})," and start a task in Claude Code, Cursor, Codex, Copilot or Antigravity.",a?" Everyone in the room sees the same board.":""]})]})]})}return(0,l.jsxs)("div",{className:o.default.wrap,children:[(0,l.jsxs)("div",{className:o.default.caption,children:[M?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:M.holder})," is editing ",(0,l.jsx)("b",{children:M.path.split("/").pop()})," right now. "]}):U?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:U.reader})," is reading ",(0,l.jsx)("b",{children:U.path.split("/").pop()}),". "]}):"Files are open. ",v>0&&(0,l.jsxs)("span",{className:o.default.warn,children:[(0,l.jsx)("b",{children:v})," other agent",v>1?"s":""," recently edited ",v>1?"files that are":"a file that is"," open. "]}),y>0&&(0,l.jsxs)("span",{className:o.default.bad,children:[(0,l.jsx)("b",{children:y})," file",y>1?"s need":" needs"," attention — two people editing at once."]})]}),(0,l.jsxs)("div",{className:o.default.bar,children:[(0,l.jsxs)("div",{className:o.default.legend,children:[(0,l.jsxs)("span",{className:o.default.lg,children:[(0,l.jsx)("svg",{width:"34",height:"9",children:(0,l.jsx)("line",{x1:"0",y1:"5",x2:"32",y2:"5",stroke:"var(--holding)",strokeWidth:"2.5",strokeDasharray:"7 5"})}),(0,l.jsx)("b",{children:"Editing"})]}),(0,l.jsxs)("span",{className:o.default.lg,children:[(0,l.jsx)("svg",{width:"34",height:"9",children:(0,l.jsx)("line",{x1:"0",y1:"5",x2:"32",y2:"5",stroke:"var(--idle)",strokeWidth:"1.5",strokeDasharray:"2 4"})}),(0,l.jsx)("b",{children:"Reading"})]}),(0,l.jsxs)("span",{className:o.default.lg,children:[(0,l.jsxs)("svg",{width:"34",height:"9",children:[(0,l.jsx)("line",{x1:"0",y1:"5",x2:"22",y2:"5",stroke:"var(--waiting)",strokeWidth:"1.5",strokeDasharray:"4 4"}),(0,l.jsx)("circle",{cx:"26",cy:"5",r:"3",fill:"var(--waiting)"})]}),(0,l.jsx)("b",{children:"Also working here"})]}),(0,l.jsxs)("span",{className:o.default.lg,children:[(0,l.jsx)("svg",{width:"34",height:"9",children:(0,l.jsx)("line",{x1:"0",y1:"5",x2:"32",y2:"5",stroke:"var(--clash)",strokeWidth:"2.5",strokeDasharray:"7 5"})}),(0,l.jsx)("b",{children:"Clash"})]})]}),(0,l.jsxs)("div",{className:o.default.toggles,children:[(0,l.jsxs)("button",{className:`${o.default.tog} ${g?o.default.togOn:""}`,onClick:()=>u(e=>!e),children:[g?"✓":"○"," Motion"]}),(0,l.jsxs)("button",{className:`${o.default.tog} ${_?o.default.togOn:""}`,onClick:()=>f(e=>!e),children:[_?"✓":"○"," Recent editors"]})]})]}),(0,l.jsx)("div",{className:o.default.canvas,children:(0,l.jsxs)(t.ReactFlow,{nodes:j,edges:w,nodeTypes:d,edgeTypes:c,fitView:!0,proOptions:{hideAttribution:!0},minZoom:.15,maxZoom:1.8,nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[(0,l.jsx)(t.Background,{color:"#161616",gap:22,size:1}),(0,l.jsx)(t.Controls,{showInteractive:!1}),(0,l.jsx)(t.MiniMap,{pannable:!0,zoomable:!0,maskColor:"rgba(0,0,0,.78)",nodeColor:e=>"file"===e.type?"#333":"user"===e.type?"#1c1c1c":"#3a3a3a"})]})})]})}e.s(["default",0,function(){return(0,l.jsx)(t.ReactFlowProvider,{children:(0,l.jsx)(h,{})})}],3387)},93858,function(e){e.n(e.i(3387))}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/31cgqj_-l15yt.js","static/chunks/0-3l04fnym95-.js","static/chunks/2n66mlnb34vjq.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;var t,r="/_next/",n=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),o=((t=o||{})[t.Runtime=0]="Runtime",t[t.Parent=1]="Parent",t[t.Update=2]="Update",t);let l=new WeakMap;function i(e,t){this.m=e,this.e=t}let u=i.prototype,s=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function a(e,t,r){s.call(e,t)||Object.defineProperty(e,t,r)}function f(e,t){let r=e[t];return r||(r=p(t),e[t]=r),r}function p(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function h(e,t,r){a(e,"__esModule",{value:!0}),c&&a(e,c,{value:"Module"});let n=0;for(;n<t.length;){let r=t[n++],o=t[n++];if("number"==typeof o)if(0===o)a(e,r,{value:t[n++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[n]?a(e,r,{get:o,set:t[n++],enumerable:!0}):a(e,r,{get:o,enumerable:!0})}r||Object.seal(e)}function d(e,t){(null!=t?f(this.c,t):this.m).exports=e}u.s=function(e,t,r){let n,o;null!=t?o=(n=f(this.c,t)).exports:(n=this.m,o=this.e),n.namespaceObject=o,h(o,e,r)},u.j=function(e,t){let r,n;null!=t?n=(r=f(this.c,t)).exports:(r=this.m,n=this.e);let o=function(e,t){let r=l.get(e);if(!r){l.set(e,r=[]);let n=e=>{if("default"!==e){for(let t of r)if(s.call(t,e))return t}};e.exports=e.namespaceObject=new Proxy(t,{get(e,t){if(s.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);let r=n(t);return r&&Reflect.get(r,t)},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1,has:(e,t)=>!!Reflect.has(e,t)||"default"!==t&&"__esModule"!==t&&void 0!==n(t),ownKeys(e){let t=Reflect.ownKeys(e);for(let e of r)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t},getOwnPropertyDescriptor(e,t){let r=Reflect.getOwnPropertyDescriptor(e,t);if(r||"default"===t||"__esModule"===t)return r;let o=n(t);if(o)return{enumerable:!0,configurable:!0,get:()=>Reflect.get(o,t)}}})}return r}(r,n);"object"==typeof e&&null!==e&&o.push(e)},u.v=d,u.n=function(e,t){let r;(r=null!=t?f(this.c,t):this.m).exports=r.namespaceObject=e};let m=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,m({}),m([]),m(m)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=m(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),h(t,n),t}function b(e){let t=K(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function O(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}u.i=b,u.A=function(e){return this.r(e)(b.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return K(e,this.m).exports},u.f=function(e){function t(t){if(t=O(t),s.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=O(t),s.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let w=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function k(e,t){throw Error(`Invariant: ${t(e)}`)}w.prototype=URL.prototype,u.U=w,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let R=i.prototype,v=new Map;u.M=v;let U=new Map,j=new Map,$=new Map;async function _(e,t,r){let n;if("string"==typeof r)return function(e,t,r){return T(e,t,r)}(e,t,E(r));let o=r.included||[],l=o.map(e=>!!v.has(e)||U.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);for(let l of(n=T(e,t,E(r.path)),o))U.has(l)||U.set(l,n);await n}R.l=function(e){return _(o.Parent,this.m.id,e)};let P=Promise.resolve(void 0),C=new WeakMap;function T(t,r,n){let l=e.loadChunkCached(t,n),i=C.get(l);if(void 0===i){let e=C.set.bind(C,l,P);i=l.then(e).catch(e=>{let l;switch(t){case o.Runtime:l=`as a runtime dependency of chunk ${r}`;break;case o.Parent:l=`from module ${r}`;break;case o.Update:l="from an HMR update";break;default:k(t,e=>`Unknown source type: ${e}`)}let i=Error(`Failed to load chunk ${n} ${l}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw i.name="ChunkLoadError",i}),C.set(l,i)}return i}R.L=function(e){var t,r;return t=o.Parent,r=this.m.id,T(t,r,e)};R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.F=function(e){return e?`file:///ROOT/${e.split("/").map(encodeURIComponent).join("/")}`:"file:///ROOT/"},R.q=function(e,t){d.call(this,`${e}${n}`,t)};let A=/[^A-Za-z0-9\-_.!~*'()/]/;function E(e,t=r){let o=A.test(e)?e.split("/").map(encodeURIComponent).join("/"):e;return`${t}${o}${n}`}function M(e,t){let r,n=e.indexOf("?");if(-1!==n)r=n;else{let t=e.indexOf("#");r=-1!==t?t:e.length}return r>=t.length&&e.startsWith(t,r-t.length)}R.b=r,R.X=n,R.h=E;function S(e){return M(e,".css")}let x={};u.c=x;let K=(e,t)=>{let r=x[e];if(r){if(r.error)throw r.error;return r}return N(e,o.Parent,t.id)};function N(e,t,r){let n=v.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:k(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=p(e),l=o.exports;x[e]=o;let u=new i(o,l);try{n(u,o,l)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function L(t){let r;if(!Array.isArray(t))return e.registerChunk(void 0,t);let n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let l=e[o];for(let l=r;l<o;l++){let r=e[l],o=t.get(r);if(o){n=o;break}}let i=n??l,u=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(u||(i===l&&Object.defineProperty(l,"name",{value:"module evaluation"}),u=!0),t.set(r,i))}r=o+1}}(t,v)),e.registerChunk(n,r)}let q=new Map;function B(e){let t=q.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,retryAttempts:0,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},q.set(e,t)}return t}function I(e,t,r,n,o){!(null==n||n instanceof DOMException&&"NetworkError"===n.name)||r.retryAttempts>=1||q.get(t)!==r?(q.get(t)===r&&q.delete(t),r.reject(n)):(r.retryAttempts++,setTimeout(()=>{r.resolved||q.get(t)!==r||(o?o():(r.loadingStarted=!1,F(e,t)))},200+Math.floor(401*Math.random())))}function F(e,t){let r=B(t);if(r.loadingStarted)return r.promise;if(e===o.Runtime)return r.loadingStarted=!0,S(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(S(t));else if(M(t,".js")){self.TURBOPACK_NEXT_CHUNK_URLS.push(t);try{importScripts(t)}catch(n){I(e,t,r,n)}}else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let n=decodeURI(t);if(S(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${n}"],link[rel=stylesheet][href^="${n}?"]`).length>0)r.resolve();else{let n=()=>{let o=document.createElement("link");return o.rel="stylesheet",o.crossOrigin=null,o.href=t,o.onerror=()=>{let l=document.createComment("");o.replaceWith(l),I(e,t,r,void 0,()=>l.replaceWith(n()))},o.onload=()=>{r.resolve()},o};document.head.appendChild(n())}else if(M(t,".js")){let o=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${n}"],script[src^="${n}?"]`);if(o.length>0)for(let n of Array.from(o))n.addEventListener("error",()=>{n.remove(),I(e,t,r)},{once:!0});else{let n=document.createElement("script");n.crossOrigin=null,n.src=t,n.onerror=()=>{n.remove(),I(e,t,r)},document.head.appendChild(n)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise}e={async registerChunk(e,t){let n;if(null!=e&&(n=function(e){if("string"==typeof e)return e;let t=decodeURIComponent(e.src.replace(/[?#].*$/,""));return t.startsWith(r)?t.slice(r.length):t}(e),B("string"==typeof e?E(e):e.src).resolve()),null!=t){for(let e of t.otherChunks)B(E("string"==typeof e?e:e.path));if(await Promise.all(t.otherChunks.map(e=>{var t;return t=n,_(o.Runtime,t,e)})),t.runtimeModuleIds.length>0)for(let e of t.runtimeModuleIds)!function(e,t){let r=x[t];if(r){if(r.error)throw r.error;return}N(t,o.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>F(e,t)};var D=globalThis.TURBOPACK;globalThis.TURBOPACK={push:L},D.forEach(L)})();
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
2
+ <rect width="32" height="32" rx="8" fill="#f5a524"/>
3
+ <text x="16" y="22" text-anchor="middle" font-size="16" font-family="Arial" font-weight="700" fill="#1a1204">R</text>
4
+ </svg>
@@ -0,0 +1,18 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[38070,["/_next/static/chunks/1ya1u0izct4f6.js"],"RelayProvider"]
3
+ 3:I[39756,["/_next/static/chunks/1ya1u0izct4f6.js"],"default"]
4
+ 4:I[37457,["/_next/static/chunks/1ya1u0izct4f6.js"],"default"]
5
+ 5:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"OutletBoundary"]
6
+ 6:"$Sreact.suspense"
7
+ 9:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"ViewportBoundary"]
8
+ b:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"MetadataBoundary"]
9
+ d:I[68027,["/_next/static/chunks/1ya1u0izct4f6.js"],"default",1]
10
+ :HL["/_next/static/chunks/2xar70jzx8f1y.css","style"]
11
+ :HL["https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","style"]
12
+ 8:X
13
+ 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2xar70jzx8f1y.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ya1u0izct4f6.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style","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":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,null]},null,false,"$8"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],null]}],false]],"m":"$undefined","G":["$d",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2xar70jzx8f1y.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"BuhfCxd0WQE65yIzZJCOM"}
14
+ 8:C
15
+ a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
16
+ e:I[27201,["/_next/static/chunks/1ya1u0izct4f6.js"],"IconMark"]
17
+ 7:null
18
+ c:[["$","title","0",{"children":"./relay"}],["$","meta","1",{"name":"description","content":"GitHub Desktop for AI agents"}],["$","link","2",{"rel":"shortcut icon","href":"/logo_transparent.png"}],["$","link","3",{"rel":"icon","href":"/logo_transparent.png"}],["$","link","4",{"rel":"apple-touch-icon","href":"/logo.png"}],["$","$Le","5",{}]]
@@ -0,0 +1,24 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"OutletBoundary"]
3
+ 3:"$Sreact.suspense"
4
+ 7:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"ViewportBoundary"]
5
+ 8:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"MetadataBoundary"]
6
+ 9:I[27201,["/_next/static/chunks/1ya1u0izct4f6.js"],"IconMark"]
7
+ b:I[39756,["/_next/static/chunks/1ya1u0izct4f6.js"],"default"]
8
+ c:I[37457,["/_next/static/chunks/1ya1u0izct4f6.js"],"default"]
9
+ f:I[38070,["/_next/static/chunks/1ya1u0izct4f6.js"],"RelayProvider"]
10
+ :HL["/_next/static/chunks/2xar70jzx8f1y.css","style"]
11
+ :HL["https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","style"]
12
+ 6:X
13
+ e:X
14
+ e:C
15
+ 0:{"buildId":"BuhfCxd0WQE65yIzZJCOM","data":[{"rsc":["$","$1","c",{"children":[[["$","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."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":"$@5","staleTime":"$6","varyParams":null},{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L8",null,{"children":["$","$3",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"./relay"}],["$","meta","1",{"name":"description","content":"GitHub Desktop for AI agents"}],["$","link","2",{"rel":"shortcut icon","href":"/logo_transparent.png"}],["$","link","3",{"rel":"icon","href":"/logo_transparent.png"}],["$","link","4",{"rel":"apple-touch-icon","href":"/logo.png"}],["$","$L9","5",{}]]}]}]}],null]}],"isPartial":"$@a","staleTime":"$6","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]]}],"isPartial":"$@d","staleTime":"$6","varyParams":"$e"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2xar70jzx8f1y.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/1ya1u0izct4f6.js","async":true}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"children":["$","$Lf",null,{"children":["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:data:0:rsc:props:children:0:1:props:style","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":"$0:data:0:rsc:props:children:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:data:0:rsc:props:children:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:data:0:rsc:props:children:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}]]}],"isPartial":"$@10","staleTime":"$6","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@11","rootVaryParams":null,"needsRuntimeRequest":"$@12"}
16
+ 4:null
17
+ 6:300
18
+ 12:true
19
+ 6:C
20
+ 11:0
21
+ a:"$undefined"
22
+ d:"$undefined"
23
+ 10:"$undefined"
24
+ 5:"$undefined"
@@ -0,0 +1,3 @@
1
+ :HL["/_next/static/chunks/2xar70jzx8f1y.css","style"]
2
+ :HL["https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","style"]
3
+ 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"BuhfCxd0WQE65yIzZJCOM"}
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/2xar70jzx8f1y.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/31cgqj_-l15yt.js"/><script src="/_next/static/chunks/0-3l04fnym95-.js" async=""></script><script src="/_next/static/chunks/2n66mlnb34vjq.js" async=""></script><script src="/_next/static/chunks/turbopack-3hsllzpnzz12p.js" async=""></script><script src="/_next/static/chunks/1ya1u0izct4f6.js" async="" crossorigin=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&amp;family=IBM+Plex+Sans:wght@400;500;600;700&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><title>./relay</title><meta name="description" content="GitHub Desktop for AI agents"/><link rel="shortcut icon" href="/logo_transparent.png"/><link rel="icon" href="/logo_transparent.png"/><link rel="apple-touch-icon" href="/logo.png"/><link rel="preconnect" href="https://fonts.googleapis.com"/><title>404: This page could not be found.</title><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&amp;family=IBM+Plex+Sans:wght@400;500;600;700&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>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)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/31cgqj_-l15yt.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[38070,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"RelayProvider\"]\n3:I[39756,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"default\"]\n5:I[97367,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n9:I[97367,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"ViewportBoundary\"]\nb:I[97367,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"MetadataBoundary\"]\nd:I[68027,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2xar70jzx8f1y.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500\u0026family=IBM+Plex+Sans:wght@400;500;600;700\u0026display=swap\",\"style\"]\n8:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2xar70jzx8f1y.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1ya1u0izct4f6.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500\u0026family=IBM+Plex+Sans:wght@400;500;600;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",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,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"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\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,null]},null,false,\"$8\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2xar70jzx8f1y.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"BuhfCxd0WQE65yIzZJCOM\"}\n8:C\na:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\ne:I[27201,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"IconMark\"]\n7:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"./relay\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"GitHub Desktop for AI agents\"}],[\"$\",\"link\",\"2\",{\"rel\":\"shortcut icon\",\"href\":\"/logo_transparent.png\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/logo_transparent.png\"}],[\"$\",\"link\",\"4\",{\"rel\":\"apple-touch-icon\",\"href\":\"/logo.png\"}],[\"$\",\"$Le\",\"5\",{}]]\n"])</script></body></html>
@@ -0,0 +1,18 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[38070,["/_next/static/chunks/1ya1u0izct4f6.js"],"RelayProvider"]
3
+ 3:I[39756,["/_next/static/chunks/1ya1u0izct4f6.js"],"default"]
4
+ 4:I[37457,["/_next/static/chunks/1ya1u0izct4f6.js"],"default"]
5
+ 5:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"OutletBoundary"]
6
+ 6:"$Sreact.suspense"
7
+ 9:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"ViewportBoundary"]
8
+ b:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"MetadataBoundary"]
9
+ d:I[68027,["/_next/static/chunks/1ya1u0izct4f6.js"],"default",1]
10
+ :HL["/_next/static/chunks/2xar70jzx8f1y.css","style"]
11
+ :HL["https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","style"]
12
+ 8:X
13
+ 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2xar70jzx8f1y.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ya1u0izct4f6.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:style","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":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],{},null,false,null]},null,false,"$8"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L9",null,{"children":"$La"}],["$","div",null,{"hidden":true,"children":["$","$Lb",null,{"children":["$","$6",null,{"name":"Next.Metadata","children":"$Lc"}]}]}],null]}],false]],"m":"$undefined","G":["$d",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2xar70jzx8f1y.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"BuhfCxd0WQE65yIzZJCOM"}
14
+ 8:C
15
+ a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
16
+ e:I[27201,["/_next/static/chunks/1ya1u0izct4f6.js"],"IconMark"]
17
+ 7:null
18
+ c:[["$","title","0",{"children":"./relay"}],["$","meta","1",{"name":"description","content":"GitHub Desktop for AI agents"}],["$","link","2",{"rel":"shortcut icon","href":"/logo_transparent.png"}],["$","link","3",{"rel":"icon","href":"/logo_transparent.png"}],["$","link","4",{"rel":"apple-touch-icon","href":"/logo.png"}],["$","$Le","5",{}]]
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
2
+ <rect width="32" height="32" rx="8" fill="#f5a524"/>
3
+ <text x="16" y="22" text-anchor="middle" font-size="16" font-family="Arial" font-weight="700" fill="#1a1204">R</text>
4
+ </svg>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/2xar70jzx8f1y.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/1-dy52ls2ntb_.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/31cgqj_-l15yt.js"/><script src="/_next/static/chunks/0-3l04fnym95-.js" async=""></script><script src="/_next/static/chunks/2n66mlnb34vjq.js" async=""></script><script src="/_next/static/chunks/turbopack-3hsllzpnzz12p.js" async=""></script><script src="/_next/static/chunks/1ya1u0izct4f6.js" async="" crossorigin=""></script><script src="/_next/static/chunks/31qgr-p-oulpb.js" async="" crossorigin=""></script><script src="/_next/static/chunks/064ntycm-fx5v.js" async="" crossorigin=""></script><script src="/_next/static/chunks/1q0cmt0kqufow.js" async="" crossorigin=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&amp;family=IBM+Plex+Sans:wght@400;500;600;700&amp;display=swap" as="style"/><title>./relay</title><meta name="description" content="GitHub Desktop for AI agents"/><link rel="shortcut icon" href="/logo_transparent.png"/><link rel="icon" href="/logo_transparent.png"/><link rel="apple-touch-icon" href="/logo.png"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&amp;family=IBM+Plex+Sans:wght@400;500;600;700&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="ui-module__vWrHcG__empty">Booting ./relay…</div><!--$--><!--/$--><script src="/_next/static/chunks/31cgqj_-l15yt.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[38070,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"RelayProvider\"]\n3:I[39756,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"default\"]\n5:I[47257,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"ClientPageRoot\"]\n6:I[88764,[\"/_next/static/chunks/1ya1u0izct4f6.js\",\"/_next/static/chunks/31qgr-p-oulpb.js\",\"/_next/static/chunks/064ntycm-fx5v.js\",\"/_next/static/chunks/1q0cmt0kqufow.js\"],\"default\"]\n9:I[97367,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nc:I[97367,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"ViewportBoundary\"]\ne:I[97367,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"MetadataBoundary\"]\n10:I[68027,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2xar70jzx8f1y.css\",\"style\"]\n:HL[\"/_next/static/chunks/1-dy52ls2ntb_.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500\u0026family=IBM+Plex+Sans:wght@400;500;600;700\u0026display=swap\",\"style\"]\n0:{\"P\":null,\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2xar70jzx8f1y.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1ya1u0izct4f6.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500\u0026family=IBM+Plex+Sans:wght@400;500;600;700\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",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\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/1-dy52ls2ntb_.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/31qgr-p-oulpb.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/064ntycm-fx5v.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/1q0cmt0kqufow.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Le\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lf\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2xar70jzx8f1y.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"BuhfCxd0WQE65yIzZJCOM\"}\n7:{}\n8:\"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params\"\nd:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n11:I[27201,[\"/_next/static/chunks/1ya1u0izct4f6.js\"],\"IconMark\"]\nb:null\nf:[[\"$\",\"title\",\"0\",{\"children\":\"./relay\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"GitHub Desktop for AI agents\"}],[\"$\",\"link\",\"2\",{\"rel\":\"shortcut icon\",\"href\":\"/logo_transparent.png\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/logo_transparent.png\"}],[\"$\",\"link\",\"4\",{\"rel\":\"apple-touch-icon\",\"href\":\"/logo.png\"}],[\"$\",\"$L11\",\"5\",{}]]\n"])</script></body></html>
@@ -0,0 +1,21 @@
1
+ 1:"$Sreact.fragment"
2
+ 2:I[38070,["/_next/static/chunks/1ya1u0izct4f6.js"],"RelayProvider"]
3
+ 3:I[39756,["/_next/static/chunks/1ya1u0izct4f6.js"],"default"]
4
+ 4:I[37457,["/_next/static/chunks/1ya1u0izct4f6.js"],"default"]
5
+ 5:I[47257,["/_next/static/chunks/1ya1u0izct4f6.js"],"ClientPageRoot"]
6
+ 6:I[88764,["/_next/static/chunks/1ya1u0izct4f6.js","/_next/static/chunks/31qgr-p-oulpb.js","/_next/static/chunks/064ntycm-fx5v.js","/_next/static/chunks/1q0cmt0kqufow.js"],"default"]
7
+ 9:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"OutletBoundary"]
8
+ a:"$Sreact.suspense"
9
+ c:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"ViewportBoundary"]
10
+ e:I[97367,["/_next/static/chunks/1ya1u0izct4f6.js"],"MetadataBoundary"]
11
+ 10:I[68027,["/_next/static/chunks/1ya1u0izct4f6.js"],"default",1]
12
+ :HL["/_next/static/chunks/2xar70jzx8f1y.css","style"]
13
+ :HL["/_next/static/chunks/1-dy52ls2ntb_.css","style"]
14
+ :HL["https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","style"]
15
+ 0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2xar70jzx8f1y.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1ya1u0izct4f6.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap","rel":"stylesheet"}]]}],["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",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":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/1-dy52ls2ntb_.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/31qgr-p-oulpb.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/064ntycm-fx5v.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/1q0cmt0kqufow.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2xar70jzx8f1y.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"BuhfCxd0WQE65yIzZJCOM"}
16
+ 7:{}
17
+ 8:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
18
+ d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
19
+ 11:I[27201,["/_next/static/chunks/1ya1u0izct4f6.js"],"IconMark"]
20
+ b:null
21
+ f:[["$","title","0",{"children":"./relay"}],["$","meta","1",{"name":"description","content":"GitHub Desktop for AI agents"}],["$","link","2",{"rel":"shortcut icon","href":"/logo_transparent.png"}],["$","link","3",{"rel":"icon","href":"/logo_transparent.png"}],["$","link","4",{"rel":"apple-touch-icon","href":"/logo.png"}],["$","$L11","5",{}]]
Binary file
package/package.json CHANGED
@@ -1,6 +1,76 @@
1
- {
2
- "name": "relaybrain",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
1
+ {
2
+ "name": "relaybrain",
3
+ "version": "0.2.1",
4
+ "description": "Coordination layer for parallel AI coding agents — file locks, patch sync, Mission Control, and a FalkorDB memory graph that tells every agent who is doing what, and why.",
5
+ "keywords": [
6
+ "ai-agents",
7
+ "multi-agent",
8
+ "coordination",
9
+ "agent-memory",
10
+ "falkordb",
11
+ "graph",
12
+ "mcp",
13
+ "claude-code",
14
+ "cursor",
15
+ "codex",
16
+ "copilot",
17
+ "file-locking"
18
+ ],
19
+ "homepage": "https://relay-brain.vercel.app",
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/prakrititz/relayBrain.git"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/prakrititz/relayBrain/issues"
26
+ },
27
+ "license": "MIT",
28
+ "workspaces": [
29
+ "mission-control"
30
+ ],
31
+ "bin": {
32
+ "relay": "cli/relay.js",
33
+ "relaybrain": "cli/relay.js"
34
+ },
35
+ "files": [
36
+ "backend/",
37
+ "!backend/**/*.test.js",
38
+ "cli/",
39
+ "hooks/",
40
+ "mission-control/out/",
41
+ "scripts/falkor-rebuild.js",
42
+ "scripts/falkor-seed-demo.js",
43
+ "docker-compose.falkor.yml",
44
+ "docs/MEMORY-GRAPH.md"
45
+ ],
46
+ "scripts": {
47
+ "dev": "concurrently -n api,ui -c cyan,magenta \"node backend/server.js --port 3001\" \"npm run dev -w mission-control\"",
48
+ "dev:api": "node backend/server.js --port 3001",
49
+ "dev:ui": "npm run dev -w mission-control",
50
+ "start": "node backend/server.js --port 3001",
51
+ "coordinator": "node backend/coordinator/server.js",
52
+ "test": "node scripts/run-tests.js",
53
+ "build:ui": "node scripts/build-ui.js",
54
+ "prepack": "node scripts/build-ui.js",
55
+ "falkor:up": "docker compose -f docker-compose.falkor.yml up -d",
56
+ "falkor:down": "docker compose -f docker-compose.falkor.yml down",
57
+ "falkor:spike": "node scripts/falkor-spike.js",
58
+ "falkor:rebuild": "node scripts/falkor-rebuild.js",
59
+ "falkor:seed-demo": "node scripts/falkor-seed-demo.js",
60
+ "test:e2e": "node scripts/e2e-full-test.js",
61
+ "test:e2e:room": "node scripts/e2e-room-test.js"
62
+ },
63
+ "dependencies": {
64
+ "@vscode/tree-sitter-wasm": "^0.3.1",
65
+ "cors": "^2.8.5",
66
+ "express": "^4.21.2",
67
+ "falkordb": "^6.8.0",
68
+ "ws": "^8.18.0"
69
+ },
70
+ "devDependencies": {
71
+ "concurrently": "^9.1.2"
72
+ },
73
+ "engines": {
74
+ "node": ">=20"
75
+ }
76
+ }
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ // Drop one project's memory graph and rebuild it from ~/.relay data.
3
+ // RELAY_FALKOR_URL=falkor://localhost:6379 node scripts/falkor-rebuild.js <projectId|all> [--keep]
4
+ const falkor = require("../backend/lib/falkor");
5
+ const { rebuildProjectGraph } = require("../backend/lib/falkor/demo");
6
+ const { loadRegistry } = require("../backend/lib/store");
7
+
8
+ async function main() {
9
+ const target = process.argv[2];
10
+ const keep = process.argv.includes("--keep");
11
+ if (!target) {
12
+ console.error("usage: falkor-rebuild <projectId|all> [--keep]");
13
+ process.exit(2);
14
+ }
15
+ const info = falkor.init({ get() {}, post() {} }, {});
16
+ if (!info.enabled) {
17
+ console.error("RELAY_FALKOR_URL is not set");
18
+ process.exit(2);
19
+ }
20
+ const projects = loadRegistry().projects.filter((p) => target === "all" || p.id === target);
21
+ if (!projects.length) {
22
+ console.error(`no project ${target}`);
23
+ process.exit(2);
24
+ }
25
+ for (const p of projects) {
26
+ const out = await rebuildProjectGraph(falkor, p.id, { keep });
27
+ console.log(
28
+ `${out.projectId} ${out.path}\n events=${out.events} peers=${out.peers} ${JSON.stringify(out.ingest)} analytics=${JSON.stringify(out.analytics)} in ${out.ms}ms`
29
+ );
30
+ }
31
+ await falkor.state.client.close();
32
+ process.exit(0);
33
+ }
34
+
35
+ main().catch((err) => {
36
+ console.error(err);
37
+ process.exit(1);
38
+ });
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+ // Seeds a rich, realistic multi-agent coordination history + FalkorDB graph for the live demo (#14, #15).
3
+ // By default seeds the isolated demo sandbox graph (`demo_<projectId>`), never polluting real workspace graphs.
4
+ // Pass `--raw` only if you explicitly want to write into the raw target projectId.
5
+ const falkor = require("../backend/lib/falkor");
6
+ const { seedDemoGraph } = require("../backend/lib/falkor/demo");
7
+ const { loadRegistry } = require("../backend/lib/store");
8
+
9
+ async function main() {
10
+ const args = process.argv.slice(2);
11
+ const rawTarget = args.includes("--raw");
12
+ const targetArg = args.find((a) => !a.startsWith("--"));
13
+ const baseId = targetArg || loadRegistry().projects?.[0]?.id || "proj_demo";
14
+
15
+ const info = falkor.init({ get() {}, post() {} }, {});
16
+ if (!info.enabled) {
17
+ console.error("FalkorDB is not enabled. Run `relay graph enable` or set RELAY_FALKOR_URL first.");
18
+ process.exit(1);
19
+ }
20
+ const { targetId, summary } = await seedDemoGraph(falkor, baseId, { rawTarget });
21
+ console.log(`Seeded isolated FalkorDB demo graph "${targetId}" (for workspace "${baseId}"):`, JSON.stringify(summary));
22
+ await falkor.state.client.close();
23
+ process.exit(0);
24
+ }
25
+
26
+ main().catch((err) => {
27
+ console.error(err);
28
+ process.exit(1);
29
+ });