neural-loom 0.2.12 → 0.2.14

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 (141) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/cache/.previewinfo +1 -1
  5. package/.next/cache/.rscinfo +1 -1
  6. package/.next/cache/.tsbuildinfo +1 -1
  7. package/.next/diagnostics/route-bundle-stats.json +2 -2
  8. package/.next/fallback-build-manifest.json +3 -3
  9. package/.next/prerender-manifest.json +3 -3
  10. package/.next/routes-manifest.json +12 -0
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  26. package/.next/server/app/api/context/aider/route.js +1 -1
  27. package/.next/server/app/api/context/aider/route.js.nft.json +1 -1
  28. package/.next/server/app/api/context/claude/route.js +1 -1
  29. package/.next/server/app/api/context/claude/route.js.nft.json +1 -1
  30. package/.next/server/app/api/recents/route/app-paths-manifest.json +3 -0
  31. package/.next/server/app/api/recents/route/build-manifest.json +9 -0
  32. package/.next/server/app/api/recents/route/server-reference-manifest.json +4 -0
  33. package/.next/server/app/api/recents/route.js +6 -0
  34. package/.next/server/app/api/recents/route.js.map +5 -0
  35. package/.next/server/app/api/recents/route.js.nft.json +1 -0
  36. package/.next/server/app/api/recents/route_client-reference-manifest.js +3 -0
  37. package/.next/server/app/api/sessions/inject/route.js +1 -1
  38. package/.next/server/app/api/sessions/inject/route.js.nft.json +1 -1
  39. package/.next/server/app/api/sessions/input/route.js +1 -1
  40. package/.next/server/app/api/sessions/input/route.js.nft.json +1 -1
  41. package/.next/server/app/api/sessions/launch/route.js +1 -1
  42. package/.next/server/app/api/sessions/launch/route.js.nft.json +1 -1
  43. package/.next/server/app/api/sessions/route.js +1 -1
  44. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  45. package/.next/server/app/api/sessions/scope/route/app-paths-manifest.json +3 -0
  46. package/.next/server/app/api/sessions/scope/route/build-manifest.json +9 -0
  47. package/.next/server/app/api/sessions/scope/route/server-reference-manifest.json +4 -0
  48. package/.next/server/app/api/sessions/scope/route.js +7 -0
  49. package/.next/server/app/api/sessions/scope/route.js.map +5 -0
  50. package/.next/server/app/api/sessions/scope/route.js.nft.json +1 -0
  51. package/.next/server/app/api/sessions/scope/route_client-reference-manifest.js +3 -0
  52. package/.next/server/app/api/sessions/stats/route.js +1 -1
  53. package/.next/server/app/api/sessions/stats/route.js.nft.json +1 -1
  54. package/.next/server/app/api/sessions/stop/route.js +1 -1
  55. package/.next/server/app/api/sessions/stop/route.js.nft.json +1 -1
  56. package/.next/server/app/index.html +1 -1
  57. package/.next/server/app/index.rsc +2 -2
  58. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  59. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  60. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  61. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  62. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  63. package/.next/server/app/page/react-loadable-manifest.json +6 -5
  64. package/.next/server/app/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app-paths-manifest.json +2 -0
  66. package/.next/server/chunks/[root-of-the-server]__0_2_i_q._.js +15 -0
  67. package/.next/server/chunks/{[root-of-the-server]__0rd5ojc._.js.map → [root-of-the-server]__0_2_i_q._.js.map} +1 -1
  68. package/.next/server/chunks/[root-of-the-server]__0__9rdk._.js +15 -0
  69. package/.next/server/chunks/{[root-of-the-server]__0m7xwu2._.js.map → [root-of-the-server]__0__9rdk._.js.map} +1 -1
  70. package/.next/server/chunks/[root-of-the-server]__0bi3d5z._.js +15 -0
  71. package/.next/server/chunks/{[root-of-the-server]__0ezygp7._.js.map → [root-of-the-server]__0bi3d5z._.js.map} +1 -1
  72. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +3 -3
  73. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
  74. package/.next/server/chunks/[root-of-the-server]__0iqaxhx._.js +15 -0
  75. package/.next/server/chunks/[root-of-the-server]__0iqaxhx._.js.map +1 -0
  76. package/.next/server/chunks/{[root-of-the-server]__12-x1lx._.js → [root-of-the-server]__0m91xif._.js} +3 -3
  77. package/.next/server/chunks/{[root-of-the-server]__12-x1lx._.js.map → [root-of-the-server]__0m91xif._.js.map} +1 -1
  78. package/.next/server/chunks/[root-of-the-server]__0p~u94k._.js +3 -0
  79. package/.next/server/chunks/[root-of-the-server]__0p~u94k._.js.map +1 -0
  80. package/.next/server/chunks/[root-of-the-server]__0qyrt6_._.js +3 -0
  81. package/.next/server/chunks/[root-of-the-server]__0qyrt6_._.js.map +1 -0
  82. package/.next/server/chunks/[root-of-the-server]__0qz~w0~._.js +15 -0
  83. package/.next/server/chunks/[root-of-the-server]__0qz~w0~._.js.map +1 -0
  84. package/.next/server/chunks/[root-of-the-server]__0ty8hwz._.js +15 -0
  85. package/.next/server/chunks/{[root-of-the-server]__0tl2n51._.js.map → [root-of-the-server]__0ty8hwz._.js.map} +1 -1
  86. package/.next/server/chunks/[root-of-the-server]__0ylcu31._.js +3 -0
  87. package/.next/server/chunks/[root-of-the-server]__0ylcu31._.js.map +1 -0
  88. package/.next/server/chunks/_next-internal_server_app_api_recents_route_actions_0wmi3sl.js +3 -0
  89. package/.next/server/chunks/_next-internal_server_app_api_recents_route_actions_0wmi3sl.js.map +1 -0
  90. package/.next/server/chunks/_next-internal_server_app_api_sessions_scope_route_actions_0g112ee.js +3 -0
  91. package/.next/server/chunks/_next-internal_server_app_api_sessions_scope_route_actions_0g112ee.js.map +1 -0
  92. package/.next/server/chunks/ssr/_0t7oqy6._.js +1 -1
  93. package/.next/server/chunks/ssr/_0t7oqy6._.js.map +1 -1
  94. package/.next/server/middleware-build-manifest.js +3 -3
  95. package/.next/server/pages/404.html +1 -1
  96. package/.next/server/pages/500.html +1 -1
  97. package/.next/server/server-reference-manifest.js +1 -1
  98. package/.next/server/server-reference-manifest.json +1 -1
  99. package/.next/static/chunks/{14pu0yottw6p0.js → 06z14vx5drwj0.js} +2 -2
  100. package/.next/static/chunks/0b89ti7ob.09t.js +1 -0
  101. package/.next/static/chunks/0eidfx-s54367.js +1 -0
  102. package/.next/static/chunks/0ew-ei_k3d-qg.js +1 -0
  103. package/.next/static/chunks/0g45rn_9mbzt6.js +1 -0
  104. package/.next/static/chunks/0jxar8nsw_py3.js +1 -0
  105. package/.next/trace +1 -1
  106. package/.next/trace-build +1 -1
  107. package/.next/types/routes.d.ts +3 -1
  108. package/.next/types/validator.ts +18 -0
  109. package/package.json +1 -1
  110. package/src/app/api/context/aider/route.ts +37 -22
  111. package/src/app/api/context/claude/route.ts +28 -16
  112. package/src/app/api/recents/route.ts +34 -0
  113. package/src/app/api/sessions/launch/route.ts +12 -0
  114. package/src/app/api/sessions/scope/route.ts +139 -0
  115. package/src/app/components/AiderWizard.tsx +70 -4
  116. package/src/app/components/ClaudeWizard.tsx +70 -4
  117. package/src/app/components/IdeLayout.tsx +86 -12
  118. package/src/app/components/TerminalConsole.tsx +3 -3
  119. package/src/app/page.tsx +2 -1
  120. package/src/lib/agents/AgentRunner.ts +2 -0
  121. package/src/lib/agents/SessionManager.ts +62 -4
  122. package/src/lib/agents/SessionPersister.ts +57 -14
  123. package/src/lib/recents.ts +57 -0
  124. package/src/lib/workspaceParser.ts +40 -0
  125. package/.next/server/chunks/[root-of-the-server]__0e5cwnx._.js +0 -3
  126. package/.next/server/chunks/[root-of-the-server]__0e5cwnx._.js.map +0 -1
  127. package/.next/server/chunks/[root-of-the-server]__0efi5cr._.js +0 -3
  128. package/.next/server/chunks/[root-of-the-server]__0efi5cr._.js.map +0 -1
  129. package/.next/server/chunks/[root-of-the-server]__0ezygp7._.js +0 -15
  130. package/.next/server/chunks/[root-of-the-server]__0m7xwu2._.js +0 -15
  131. package/.next/server/chunks/[root-of-the-server]__0rd5ojc._.js +0 -15
  132. package/.next/server/chunks/[root-of-the-server]__0tl2n51._.js +0 -15
  133. package/.next/server/chunks/[root-of-the-server]__0y-63z8._.js +0 -15
  134. package/.next/server/chunks/[root-of-the-server]__0y-63z8._.js.map +0 -1
  135. package/.next/static/chunks/09.xgpyzqwrhv.js +0 -1
  136. package/.next/static/chunks/095uz52in_39t.js +0 -1
  137. package/.next/static/chunks/0ayrw9yot-bjb.js +0 -1
  138. package/.next/static/chunks/178yphwi3n~oc.js +0 -1
  139. /package/.next/static/{tvKY2oiwfjXnsPv5B4a3i → g7S_nNTPWKtmCY0Va4YcB}/_buildManifest.js +0 -0
  140. /package/.next/static/{tvKY2oiwfjXnsPv5B4a3i → g7S_nNTPWKtmCY0Va4YcB}/_clientMiddlewareManifest.js +0 -0
  141. /package/.next/static/{tvKY2oiwfjXnsPv5B4a3i → g7S_nNTPWKtmCY0Va4YcB}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54370,e=>{"use strict";var r=e.i(43476),o=e.i(71645);let t={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.85)",backdropFilter:"blur(12px)",zIndex:1100,display:"flex",alignItems:"center",justifyContent:"center"},n={width:"90%",maxWidth:"550px",height:"480px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 20px 25px -5px rgba(0,0,0,0.7), 0 10px 10px -5px rgba(0,0,0,0.7)",display:"flex",flexDirection:"column",overflow:"hidden"},l={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},i={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},a={display:"flex",padding:"0.75rem 1.25rem",gap:"0.5rem",backgroundColor:"rgba(10, 15, 25, 0.5)",borderBottom:"1px solid var(--border)"},s={flex:1,padding:"0.45rem 0.75rem",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.8rem",outline:"none"},d={padding:"0.45rem 0.85rem",backgroundColor:"var(--border)",border:"1px solid var(--border-focus)",borderRadius:"6px",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},c={padding:"0.15rem 0.45rem",backgroundColor:"rgba(255, 255, 255, 0.15)",border:"none",borderRadius:"4px",color:"var(--foreground)",fontSize:"0.7rem",cursor:"pointer",fontWeight:600},p={flex:1,padding:"0.5rem 1.25rem",overflowY:"auto",backgroundColor:"#070a0f"},u={display:"flex",flexDirection:"column",gap:"0.25rem"},m={display:"flex",alignItems:"center",gap:"0.6rem",padding:"0.45rem 0.65rem",borderRadius:"6px",cursor:"pointer",fontSize:"0.825rem",border:"1px solid transparent",userSelect:"none",transition:"all 0.15s ease"},x={textAlign:"center",padding:"2rem",fontSize:"0.85rem",color:"var(--muted)"},g={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},f={fontSize:"0.75rem",color:"var(--muted)",maxWidth:"240px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},b={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",color:"#fff",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},h={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"};e.s(["default",0,function({title:e,initialPath:y,onClose:v,onSelect:j}){let[k,C]=(0,o.useState)(y||""),[S,w]=(0,o.useState)(null),[D,R]=(0,o.useState)([]),[z,W]=(0,o.useState)(null),[F,I]=(0,o.useState)(""),[T,P]=(0,o.useState)(!1),[B,L]=(0,o.useState)(""),A=async e=>{P(!0),L("");try{let r=`/api/files?action=browse_dirs&path=${encodeURIComponent(e)}`,o=await fetch(r),t=await o.json();o.ok&&t.success?(C(t.currentPath),I(t.currentPath),w(t.parentPath),R(t.directories),W(null)):L(t.error||"Failed to load directory content.")}catch(e){console.error("Error browsing directories:",e),L("Failed to fetch directory contents.")}finally{P(!1)}};(0,o.useEffect)(()=>{A(y)},[y]);let O=e=>{A(e)},E=()=>{F.trim()&&A(F.trim())};return(0,r.jsx)("div",{style:t,children:(0,r.jsxs)("div",{style:n,children:[(0,r.jsxs)("div",{style:l,children:[(0,r.jsxs)("h3",{style:{fontSize:"1rem",fontWeight:700,margin:0,color:"var(--foreground)"},children:["📁 ",e]}),(0,r.jsx)("button",{onClick:v,style:i,"aria-label":"Close browser",children:"✖"})]}),(0,r.jsxs)("div",{style:a,children:[(0,r.jsx)("input",{type:"text",value:F,onChange:e=>I(e.target.value),onKeyDown:e=>{"Enter"===e.key&&E()},style:s,placeholder:"Absolute folder path..."}),(0,r.jsx)("button",{onClick:E,style:d,disabled:T,children:"Go"})]}),(0,r.jsx)("div",{style:p,children:T?(0,r.jsx)("div",{style:x,children:"Loading directories..."}):B?(0,r.jsxs)("div",{style:{...x,color:"var(--danger)"},children:[B,(0,r.jsx)("button",{onClick:()=>A(k||"."),style:{...d,display:"block",margin:"0.75rem auto 0"},children:"Retry"})]}):(0,r.jsxs)("div",{style:u,children:[S&&(0,r.jsxs)("div",{onClick:()=>O(S),onDoubleClick:()=>O(S),style:m,title:"Go up to parent directory",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"⬆️"}),(0,r.jsx)("span",{style:{fontWeight:600},children:".. (Up)"})]}),0===D.length?(0,r.jsx)("div",{style:{...x,color:"var(--muted)"},children:"No subdirectories found"}):D.map(e=>{let o=z===e.path;return(0,r.jsxs)("div",{onClick:()=>W(e.path),onDoubleClick:()=>O(e.path),style:{...m,backgroundColor:o?"rgba(109, 40, 217, 0.25)":"transparent",borderColor:o?"var(--border-focus)":"transparent"},title:"Single click to highlight, double click to enter",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"📁"}),(0,r.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),o&&(0,r.jsx)("button",{type:"button",onClick:r=>{r.stopPropagation(),O(e.path)},style:c,children:"Enter ➜"})]},e.path)})]})}),(0,r.jsxs)("div",{style:g,children:[(0,r.jsxs)("span",{style:f,children:["Selection: ",(0,r.jsx)("span",{style:{color:"var(--foreground)",fontFamily:"var(--font-mono), monospace"},children:z||k||"(None)"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("button",{onClick:v,style:h,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{j(z||k),v()},style:b,disabled:T,children:"Select Folder"})]})]})]})})}])},44837,e=>{"use strict";var r=e.i(43476),o=e.i(71645),t=e.i(54370);let n={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.8)",backdropFilter:"blur(8px)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center",animation:"fadeIn 0.2s ease-out"},l={width:"90%",maxWidth:"500px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.5)",overflow:"hidden",display:"flex",flexDirection:"column"},i={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"1rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},a={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},s={padding:"1.25rem",display:"flex",flexDirection:"column"},d={display:"flex",flexDirection:"column",marginBottom:"1rem"},c={fontSize:"0.75rem",fontWeight:600,color:"var(--foreground)",marginBottom:"0.375rem",textTransform:"uppercase",letterSpacing:"0.05em"},p={width:"100%",padding:"0.5rem 0.75rem",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.825rem",outline:"none",transition:"border-color 0.15s ease"},u={marginTop:"0.75rem",padding:"0.75rem",borderRadius:"6px",border:"1px solid var(--danger)",backgroundColor:"rgba(239, 68, 68, 0.05)",color:"var(--danger)",fontSize:"0.8rem",lineHeight:1.4},m={display:"flex",justifyContent:"flex-end",gap:"0.75rem",padding:"1rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},x={padding:"0.5rem 1rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",color:"#fff",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},g={padding:"0.5rem 1rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},f={padding:"0.35rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"rgba(255, 255, 255, 0.05)",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer",transition:"all 0.15s ease"};e.s(["default",0,function({onClose:e,onConfirmLaunch:b,isDocker:h}){let[y,v]=(0,o.useState)({name:h?"Claude Docker":"Claude Local",workspaceRoot:"",scopedDirs:[],extraFlags:""}),[j,k]=(0,o.useState)(""),[C,S]=(0,o.useState)(!0),[w,D]=(0,o.useState)(!1),[R,z]=(0,o.useState)(""),[W,F]=(0,o.useState)(!1),[I,T]=(0,o.useState)(!1),[P,B]=(0,o.useState)({workspaces:[],scopes:[]});(0,o.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/context/claude");if(e.ok){let r=await e.json();r.success&&r.config&&v({name:r.config.name||(h?"Claude Docker":"Claude Local"),workspaceRoot:r.config.workspaceRoot||"",scopedDirs:r.config.scopedDirs||[],extraFlags:r.config.extraFlags||""})}let r=await fetch("/api/recents");if(r.ok){let e=await r.json();e.success&&e.recents&&B(e.recents)}}catch(e){console.error("Failed to load Claude configuration / recents:",e)}finally{S(!1)}})()},[h]);let L=async()=>{D(!0),z("");try{let e=await fetch("/api/context/claude",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});if(e.ok)D(!1),b(y.name,y.workspaceRoot,y.scopedDirs);else{let r=await e.json();z(r.error||"Failed to save settings."),D(!1)}}catch(e){console.error(e),z("Network error: failed to connect to NeuralLoom dashboard API."),D(!1)}};return C?(0,r.jsx)("div",{style:n,children:(0,r.jsx)("div",{style:l,children:(0,r.jsx)("div",{style:{textAlign:"center",padding:"2rem"},children:(0,r.jsx)("span",{style:{color:"var(--muted)"},children:"Loading Claude Configuration..."})})})}):(0,r.jsx)("div",{style:n,children:(0,r.jsxs)("div",{style:l,children:[(0,r.jsxs)("div",{style:i,children:[(0,r.jsxs)("h3",{style:{fontSize:"1.1rem",fontWeight:700,margin:0,display:"flex",alignItems:"center",gap:"0.5rem"},children:[h?"🐳":"🤖"," Claude PTY Launch Wizard ",h?"(Docker)":"(Local)"]}),(0,r.jsx)("button",{onClick:e,style:a,"aria-label":"Close wizard",children:"✖"})]}),(0,r.jsxs)("div",{style:s,children:[(0,r.jsx)("p",{style:{fontSize:"0.825rem",color:"var(--muted)",marginBottom:"1.25rem",lineHeight:1.4},children:"Configure the local workspace path and access parameters for the Claude Code session. Settings are saved in `.ai/neural-loom/claude.json`."}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Session Display Name"}),(0,r.jsx)("input",{type:"text",value:y.name,onChange:e=>v({...y,name:e.target.value}),placeholder:h?"Claude Docker":"Claude Local",style:p})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Workspace Directory (Root)"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:y.workspaceRoot,onChange:e=>v({...y,workspaceRoot:e.target.value}),placeholder:"e.g. C:\\Users\\Dave\\OneDrive\\Projects\\JS\\wingman",style:{...p,flex:1}}),(0,r.jsx)("button",{type:"button",onClick:()=>F(!0),style:f,children:"Browse..."})]}),P.workspaces.length>0&&(0,r.jsxs)("div",{style:{marginTop:"0.35rem",display:"flex",gap:"0.35rem",flexWrap:"wrap",alignItems:"center"},children:[(0,r.jsx)("span",{style:{fontSize:"0.65rem",color:"var(--muted)"},children:"Recent:"}),P.workspaces.map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>v({...y,workspaceRoot:e}),style:{background:"rgba(255,255,255,0.03)",border:"1px solid var(--border)",borderRadius:"3px",color:"var(--muted)",fontSize:"0.65rem",padding:"1px 6px",cursor:"pointer",fontFamily:"var(--font-mono)"},title:e,children:e.split(/[/\\]/).pop()||e},e))]}),(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginTop:"0.25rem"},children:"The active folder Claude Code will run in. Leave blank to run in the current orchestrator directory."})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Extra Command Flags"}),(0,r.jsx)("input",{type:"text",value:y.extraFlags||"",onChange:e=>v({...y,extraFlags:e.target.value}),placeholder:"e.g. --resume ace806f9-cb5f-4a19-b0e9-d4331b7863a7",style:p}),(0,r.jsxs)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginTop:"0.25rem"},children:["Custom parameters passed to the Claude CLI (e.g. ",(0,r.jsx)("code",{children:"--resume <session-id>"}),")."]})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Scoped Directories (Additional Access)"}),y.scopedDirs.length>0&&(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem",marginBottom:"0.5rem"},children:y.scopedDirs.map((e,o)=>(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:"#080c14",padding:"0.35rem 0.5rem",borderRadius:"4px",border:"1px solid var(--border)"},children:[(0,r.jsx)("span",{style:{fontSize:"0.8rem",fontFamily:"var(--font-mono), monospace",wordBreak:"break-all"},children:e}),(0,r.jsx)("button",{type:"button",onClick:()=>{let e=y.scopedDirs.filter((e,r)=>r!==o);v({...y,scopedDirs:e})},style:{background:"none",border:"none",color:"var(--danger)",cursor:"pointer",fontSize:"0.8rem",padding:"0 0.25rem"},children:"Remove"})]},o))}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:j,onChange:e=>k(e.target.value),placeholder:"e.g. C:\\Users\\Dave\\OneDrive\\Projects\\JS\\other-repo",style:{...p,flex:1}}),(0,r.jsx)("button",{type:"button",onClick:()=>T(!0),style:f,children:"Browse..."}),(0,r.jsx)("button",{type:"button",onClick:()=>{j.trim()&&!y.scopedDirs.includes(j.trim())&&(v({...y,scopedDirs:[...y.scopedDirs,j.trim()]}),k(""))},style:{padding:"0.35rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border-focus)",backgroundColor:"rgba(109, 40, 217, 0.1)",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},children:"Add"})]}),P.scopes.length>0&&(0,r.jsxs)("div",{style:{marginTop:"0.35rem",display:"flex",gap:"0.35rem",flexWrap:"wrap",alignItems:"center"},children:[(0,r.jsx)("span",{style:{fontSize:"0.65rem",color:"var(--muted)"},children:"Recent:"}),P.scopes.filter(e=>!y.scopedDirs.includes(e)).map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>{y.scopedDirs.includes(e)||v({...y,scopedDirs:[...y.scopedDirs,e]})},style:{background:"rgba(168, 85, 247, 0.05)",border:"1px solid rgba(168, 85, 247, 0.2)",borderRadius:"3px",color:"#c084fc",fontSize:"0.65rem",padding:"1px 6px",cursor:"pointer",fontFamily:"var(--font-mono)"},title:e,children:["+",e.split(/[/\\]/).pop()||e]},e))]})]}),R&&(0,r.jsxs)("div",{style:u,children:["✗ ",R]})]}),(0,r.jsxs)("div",{style:m,children:[(0,r.jsx)("button",{onClick:e,style:g,disabled:w,children:"Cancel"}),(0,r.jsx)("button",{onClick:L,style:x,disabled:w,children:w?"Saving...":"Launch Session"})]}),W&&(0,r.jsx)(t.default,{title:"Select Workspace Root",initialPath:y.workspaceRoot,onClose:()=>F(!1),onSelect:e=>v({...y,workspaceRoot:e})}),I&&(0,r.jsx)(t.default,{title:"Add Scoped Directory",initialPath:j,onClose:()=>T(!1),onSelect:e=>k(e)})]})})}])},20032,e=>{e.n(e.i(44837))}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54370,e=>{"use strict";var r=e.i(43476),o=e.i(71645);let t={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.85)",backdropFilter:"blur(12px)",zIndex:1100,display:"flex",alignItems:"center",justifyContent:"center"},n={width:"90%",maxWidth:"550px",height:"480px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 20px 25px -5px rgba(0,0,0,0.7), 0 10px 10px -5px rgba(0,0,0,0.7)",display:"flex",flexDirection:"column",overflow:"hidden"},l={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},i={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},d={display:"flex",padding:"0.75rem 1.25rem",gap:"0.5rem",backgroundColor:"rgba(10, 15, 25, 0.5)",borderBottom:"1px solid var(--border)"},a={flex:1,padding:"0.45rem 0.75rem",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.8rem",outline:"none"},s={padding:"0.45rem 0.85rem",backgroundColor:"var(--border)",border:"1px solid var(--border-focus)",borderRadius:"6px",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},c={padding:"0.15rem 0.45rem",backgroundColor:"rgba(255, 255, 255, 0.15)",border:"none",borderRadius:"4px",color:"var(--foreground)",fontSize:"0.7rem",cursor:"pointer",fontWeight:600},p={flex:1,padding:"0.5rem 1.25rem",overflowY:"auto",backgroundColor:"#070a0f"},u={display:"flex",flexDirection:"column",gap:"0.25rem"},b={display:"flex",alignItems:"center",gap:"0.6rem",padding:"0.45rem 0.65rem",borderRadius:"6px",cursor:"pointer",fontSize:"0.825rem",border:"1px solid transparent",userSelect:"none",transition:"all 0.15s ease"},x={textAlign:"center",padding:"2rem",fontSize:"0.85rem",color:"var(--muted)"},h={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},f={fontSize:"0.75rem",color:"var(--muted)",maxWidth:"240px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},g={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",color:"#fff",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},m={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"};e.s(["default",0,function({title:e,initialPath:y,onClose:v,onSelect:j}){let[k,C]=(0,o.useState)(y||""),[S,w]=(0,o.useState)(null),[z,R]=(0,o.useState)([]),[W,F]=(0,o.useState)(null),[I,P]=(0,o.useState)(""),[D,T]=(0,o.useState)(!1),[A,B]=(0,o.useState)(""),E=async e=>{T(!0),B("");try{let r=`/api/files?action=browse_dirs&path=${encodeURIComponent(e)}`,o=await fetch(r),t=await o.json();o.ok&&t.success?(C(t.currentPath),P(t.currentPath),w(t.parentPath),R(t.directories),F(null)):B(t.error||"Failed to load directory content.")}catch(e){console.error("Error browsing directories:",e),B("Failed to fetch directory contents.")}finally{T(!1)}};(0,o.useEffect)(()=>{E(y)},[y]);let O=e=>{E(e)},U=()=>{I.trim()&&E(I.trim())};return(0,r.jsx)("div",{style:t,children:(0,r.jsxs)("div",{style:n,children:[(0,r.jsxs)("div",{style:l,children:[(0,r.jsxs)("h3",{style:{fontSize:"1rem",fontWeight:700,margin:0,color:"var(--foreground)"},children:["📁 ",e]}),(0,r.jsx)("button",{onClick:v,style:i,"aria-label":"Close browser",children:"✖"})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("input",{type:"text",value:I,onChange:e=>P(e.target.value),onKeyDown:e=>{"Enter"===e.key&&U()},style:a,placeholder:"Absolute folder path..."}),(0,r.jsx)("button",{onClick:U,style:s,disabled:D,children:"Go"})]}),(0,r.jsx)("div",{style:p,children:D?(0,r.jsx)("div",{style:x,children:"Loading directories..."}):A?(0,r.jsxs)("div",{style:{...x,color:"var(--danger)"},children:[A,(0,r.jsx)("button",{onClick:()=>E(k||"."),style:{...s,display:"block",margin:"0.75rem auto 0"},children:"Retry"})]}):(0,r.jsxs)("div",{style:u,children:[S&&(0,r.jsxs)("div",{onClick:()=>O(S),onDoubleClick:()=>O(S),style:b,title:"Go up to parent directory",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"⬆️"}),(0,r.jsx)("span",{style:{fontWeight:600},children:".. (Up)"})]}),0===z.length?(0,r.jsx)("div",{style:{...x,color:"var(--muted)"},children:"No subdirectories found"}):z.map(e=>{let o=W===e.path;return(0,r.jsxs)("div",{onClick:()=>F(e.path),onDoubleClick:()=>O(e.path),style:{...b,backgroundColor:o?"rgba(109, 40, 217, 0.25)":"transparent",borderColor:o?"var(--border-focus)":"transparent"},title:"Single click to highlight, double click to enter",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"📁"}),(0,r.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),o&&(0,r.jsx)("button",{type:"button",onClick:r=>{r.stopPropagation(),O(e.path)},style:c,children:"Enter ➜"})]},e.path)})]})}),(0,r.jsxs)("div",{style:h,children:[(0,r.jsxs)("span",{style:f,children:["Selection: ",(0,r.jsx)("span",{style:{color:"var(--foreground)",fontFamily:"var(--font-mono), monospace"},children:W||k||"(None)"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("button",{onClick:v,style:m,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{j(W||k),v()},style:g,disabled:D,children:"Select Folder"})]})]})]})})}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,3839,e=>{"use strict";var t=e.i(43476),r=e.i(71645),o=e.i(5991),n=e.i(54370);let i={display:"flex",width:"100%",height:"100%",flex:1,minHeight:0,backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"12px",overflow:"hidden",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.6)"},l={width:"50px",backgroundColor:"#030406",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",justifyContent:"space-between",alignItems:"center",padding:"0.75rem 0"},a={display:"flex",flexDirection:"column",width:"100%",gap:"0.5rem"},s={width:"100%",height:"45px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:"1.25rem",transition:"all 0.15s ease"},d={width:"260px",backgroundColor:"#080c14",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",overflow:"hidden"},c={padding:"0.75rem 1rem",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",background:"rgba(255,255,255,0.02)"},p={flex:1,overflowY:"auto",padding:"0.75rem 0"},m={padding:"0.25rem 1rem",fontSize:"0.75rem",fontWeight:700,color:"var(--muted)",display:"flex",alignItems:"center",justifyContent:"space-between",textTransform:"uppercase",letterSpacing:"0.05em"},u={fontSize:"0.6rem",backgroundColor:"rgba(59, 130, 246, 0.1)",color:"#3b82f6",padding:"0.1rem 0.3rem",borderRadius:"3px",textTransform:"none",letterSpacing:"normal"},f={fontSize:"0.75rem",fontWeight:600,color:"var(--foreground)"},h={flex:1,display:"flex",flexDirection:"column",overflow:"hidden",backgroundColor:"#0b101b"},x={flex:1,display:"flex",flexDirection:"column",borderBottom:"1px solid var(--border)",overflow:"hidden"},g={height:"35px",backgroundColor:"#05070a",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",paddingRight:"0.75rem"},y={display:"flex",height:"100%",overflowX:"auto"},b={padding:"0 1rem",height:"100%",display:"flex",alignItems:"center",gap:"0.75rem",fontSize:"0.75rem",borderRight:"1px solid var(--border)",borderBottom:"2px solid transparent",cursor:"pointer",transition:"all 0.15s ease",maxWidth:"150px"},v={fontSize:"0.65rem",color:"var(--muted)",cursor:"pointer",padding:"2px"},j={color:"var(--primary)",fontSize:"0.65rem",marginLeft:"2px"},C={padding:"0.25rem 0.5rem",borderRadius:"4px",border:"1px solid var(--border-focus)",backgroundColor:"rgba(16, 185, 129, 0.15)",color:"var(--success)",fontSize:"0.7rem",fontWeight:600},w={flex:1,position:"relative",overflow:"hidden"},S={width:"100%",height:"100%",backgroundColor:"#0b101b",border:"none",outline:"none",color:"#e2e8f0",fontFamily:"var(--font-mono), monospace",fontSize:"0.85rem",padding:"1rem",resize:"none",lineHeight:1.5},k={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",color:"var(--muted)",textAlign:"center",padding:"2rem"},T={flex:1.4,backgroundColor:"#05070a",display:"flex",flexDirection:"column",overflow:"hidden"},z={padding:"0.5rem 1rem",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:"rgba(255,255,255,0.01)"},R={padding:"0.3rem 0.6rem",borderRadius:"4px",border:"1px solid var(--primary)",backgroundColor:"transparent",color:"var(--primary)",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},P={padding:"0.3rem 0.6rem",borderRadius:"4px",border:"1px solid var(--success)",backgroundColor:"transparent",color:"var(--success)",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},F={flex:1,overflow:"hidden"};function I({node:e,onSelect:o,onCreate:n,onRename:i,onDelete:l,isReadOnly:a=!1}){let[s,d]=(0,r.useState)(!1),[c,p]=(0,r.useState)(!1),m="directory"===e.type,u={padding:"0.25rem 0.5rem",display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:"0.8rem",fontFamily:"var(--font-mono), monospace",cursor:"pointer",color:"var(--foreground)",borderRadius:"4px",transition:"background 0.1s ease",userSelect:"none",backgroundColor:c?"rgba(255, 255, 255, 0.05)":"transparent",minWidth:0,width:"100%"},f={display:"flex",alignItems:"center",gap:"0.375rem",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},h={display:c?"flex":"none",alignItems:"center",gap:"0.25rem",paddingLeft:"0.5rem",flexShrink:0},x={background:"none",border:"none",padding:"2px 4px",cursor:"pointer",fontSize:"0.75rem",color:"var(--muted)",borderRadius:"3px",transition:"all 0.1s ease"},g=(e,t)=>{e.stopPropagation(),t()};return m?(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{onClick:()=>d(!s),style:u,onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),children:[(0,t.jsxs)("div",{style:f,children:[(0,t.jsx)("span",{style:{color:"#eab308"},children:s?"📂":"📁"}),(0,t.jsx)("span",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),!a&&(0,t.jsxs)("div",{style:h,children:[(0,t.jsx)("button",{onClick:t=>g(t,()=>n(e.path,"file")),style:x,title:"New File inside...",onMouseEnter:e=>e.currentTarget.style.color="var(--success)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"📄+"}),(0,t.jsx)("button",{onClick:t=>g(t,()=>n(e.path,"directory")),style:x,title:"New Folder inside...",onMouseEnter:e=>e.currentTarget.style.color="var(--success)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"📁+"}),(0,t.jsx)("button",{onClick:t=>g(t,()=>i(e.path)),style:x,title:"Rename...",onMouseEnter:e=>e.currentTarget.style.color="var(--primary)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"✏️"}),(0,t.jsx)("button",{onClick:t=>g(t,()=>l(e.path)),style:x,title:"Delete Folder",onMouseEnter:e=>e.currentTarget.style.color="var(--danger)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"🗑️"})]})]}),s&&e.children&&(0,t.jsx)("div",{style:{paddingLeft:"10px",borderLeft:"1px solid rgba(255, 255, 255, 0.05)",marginLeft:"8px"},children:e.children.map(e=>(0,t.jsx)(I,{node:e,onSelect:o,onCreate:n,onRename:i,onDelete:l,isReadOnly:a},e.path))})]}):(0,t.jsxs)("div",{onClick:()=>o(e.path),style:u,onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),children:[(0,t.jsxs)("div",{style:f,children:[(0,t.jsx)("span",{style:{color:"#3b82f6"},children:"📄"}),(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),!a&&(0,t.jsxs)("div",{style:h,children:[(0,t.jsx)("button",{onClick:t=>g(t,()=>i(e.path)),style:x,title:"Rename...",onMouseEnter:e=>e.currentTarget.style.color="var(--primary)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"✏️"}),(0,t.jsx)("button",{onClick:t=>g(t,()=>l(e.path)),style:x,title:"Delete File",onMouseEnter:e=>e.currentTarget.style.color="var(--danger)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"🗑️"})]})]})}let W={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.7)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},L={width:"420px",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"12px",padding:"1.5rem",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.8)"},O={width:"100%",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",padding:"0.5rem 0.75rem",color:"#e2e8f0",fontSize:"0.85rem",outline:"none",marginBottom:"1.5rem",fontFamily:"var(--font-mono), monospace"},D={display:"flex",justifyContent:"flex-end",gap:"0.75rem"},E={backgroundColor:"transparent",border:"1px solid var(--border)",color:"var(--foreground)",padding:"0.5rem 1rem",borderRadius:"6px",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},M={backgroundColor:"var(--primary)",border:"none",color:"#ffffff",padding:"0.5rem 1rem",borderRadius:"6px",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},B={background:"none",border:"none",color:"var(--muted)",cursor:"pointer",fontSize:"0.8rem",padding:"4px",borderRadius:"3px",transition:"all 0.1s ease"},N={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.5)",display:"flex",alignItems:"flex-start",justifyContent:"center",zIndex:1100,paddingTop:"5vh",backdropFilter:"blur(2px)"},U={width:"600px",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"8px",boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.8)",display:"flex",flexDirection:"column",overflow:"hidden"},$={width:"100%",backgroundColor:"#05070a",border:"none",borderBottom:"1px solid var(--border)",padding:"0.75rem 1rem",color:"#e2e8f0",fontSize:"0.9rem",outline:"none",fontFamily:"var(--font-mono), monospace"},A={maxHeight:"300px",overflowY:"auto",padding:"0.25rem 0"},V={display:"flex",alignItems:"center",padding:"0.5rem 1rem",cursor:"pointer",transition:"all 0.1s ease",justifyContent:"space-between"},J={backgroundColor:"rgba(255,255,255,0.02)",border:"1px solid var(--border)",borderRadius:"6px",padding:"0.5rem 0.75rem",display:"flex",flexDirection:"column",gap:"0.25rem"},K={fontSize:"0.6rem",color:"var(--muted)",textTransform:"uppercase"},_={fontSize:"1.1rem",fontWeight:700,fontFamily:"var(--font-mono)"},H={width:"100%",height:"6px",backgroundColor:"rgba(255,255,255,0.05)",borderRadius:"3px",overflow:"hidden"},Y={height:"100%",borderRadius:"3px",transition:"width 0.5s ease-out"},X={padding:"0.35rem 1rem",borderBottom:"1px solid var(--border)",backgroundColor:"#030406",display:"flex",alignItems:"center",gap:"0.75rem",flexWrap:"nowrap",overflowX:"auto"},G={padding:"0.15rem 0.45rem",borderRadius:"4px",border:"1px solid var(--border)",backgroundColor:"rgba(255,255,255,0.02)",color:"var(--muted)",fontSize:"0.7rem",fontFamily:"var(--font-mono)",fontWeight:600,cursor:"pointer",transition:"all 0.1s ease"},Q={backgroundColor:"#05070a",borderBottom:"1px solid var(--border)",padding:"0.25rem 0.75rem 0 0.75rem",display:"flex",alignItems:"center",justifyContent:"space-between"},q={padding:"0.35rem 0.75rem",borderRadius:"6px 6px 0 0",border:"1px solid var(--border)",borderBottom:"none",display:"flex",alignItems:"center",gap:"0.5rem",cursor:"pointer",transition:"all 0.15s ease"};e.s(["default",0,function({sessionId:e,workspaceRoot:Z,scopedDirs:ee,onClose:et,sessions:er,onSwitchSession:eo,onRefreshSessions:en}){let ei=JSON.stringify(ee),[el,ea]=(0,r.useState)(null),[es,ed]=(0,r.useState)([]),[ec,ep]=(0,r.useState)(!1),em=async t=>{try{let r=await fetch("/api/sessions/scope",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:e,path:t,action:"add"})});if(r.ok)en&&en();else{let e=await r.json();alert(e.error||"Failed to add scoped folder.")}}catch(e){console.error(e),alert("Network error: failed to add scoped folder.")}},eu=async t=>{try{let r=await fetch("/api/sessions/scope",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:e,path:t,action:"remove"})});if(r.ok)en&&en();else{let e=await r.json();alert(e.error||"Failed to remove scoped folder.")}}catch(e){console.error(e),alert("Network error: failed to remove scoped folder.")}},[ef,eh]=(0,r.useState)({}),[ex,eg]=(0,r.useState)({}),ey=ef[e]||[],eb=ex[e]||null,ev=(0,r.useCallback)(t=>{eh(r=>{let o=r[e]||[],n="function"==typeof t?t(o):t;return{...r,[e]:n}})},[e]),ej=(0,r.useCallback)(t=>{eg(r=>({...r,[e]:t}))},[e]),[eC,ew]=(0,r.useState)(!0),[eS,ek]=(0,r.useState)("explorer"),[eT,ez]=(0,r.useState)(!1),[eR,eP]=(0,r.useState)([]),[eF,eI]=(0,r.useState)(!1),[eW,eL]=(0,r.useState)(!1),[eO,eD]=(0,r.useState)(null),[eE,eM]=(0,r.useState)(null),[eB,eN]=(0,r.useState)(""),[eU,e$]=(0,r.useState)([]),[eA,eV]=(0,r.useState)(""),[eJ,eK]=(0,r.useState)(""),[e_,eH]=(0,r.useState)(null),eY=(0,r.useCallback)(async()=>{await new Promise(e=>setTimeout(e,0)),eL(!0);try{let e=await fetch(`/api/git?action=status&root=${encodeURIComponent(Z)}`);if(e.ok){let t=await e.json();t.success&&(eI(t.isGit),eP(t.files||[]))}}catch(e){console.error("Failed to load git status:",e)}finally{eL(!1)}},[Z]);(0,r.useEffect)(()=>{setTimeout(()=>{eY()},0);let e=setInterval(eY,5e3);return()=>clearInterval(e)},[eY]),(0,r.useEffect)(()=>{let t=async()=>{try{let t=await fetch(`/api/sessions?id=${e}`);if(t.ok){let e=await t.json();eD(e)}}catch(e){console.error("Failed to fetch session status:",e)}};t();let r=setInterval(t,3e3);return()=>clearInterval(r)},[e]),(0,r.useEffect)(()=>{let t=async()=>{try{let t=await fetch(`/api/sessions/stats?id=${e}`);if(t.ok){let e=await t.json();eM(e)}}catch(e){console.error("Failed to fetch container/process stats:",e)}};t();let r=setInterval(t,3e3);return()=>clearInterval(r)},[e]),(0,r.useEffect)(()=>{let e=localStorage.getItem("neural_loom_custom_commands");if(e)try{let t=JSON.parse(e);setTimeout(()=>{e$(t)},0)}catch{}},[]);let eX=e=>{e$(e),localStorage.setItem("neural_loom_custom_commands",JSON.stringify(e))},eG=async t=>{try{await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,command:t})})}catch(e){console.error("Failed to inject command:",e)}},eQ=eO?.type?.includes("aider"),[eq,eZ]=(0,r.useState)({type:null,targetPath:null,inputValue:"",error:null}),[e0,e5]=(0,r.useState)(!1),[e1,e2]=(0,r.useState)(""),[e7,e8]=(0,r.useState)([]),[e6,e3]=(0,r.useState)(0),e4=(0,r.useCallback)(async()=>{await new Promise(e=>setTimeout(e,0)),ez(!0);try{let e=ee&&ee.length>0?`&scoped=${encodeURIComponent(ee.join(","))}`:"",t=await fetch(`/api/files?action=list&root=${encodeURIComponent(Z)}${e}`);if(t.ok){let e=await t.json();e.success&&(ea(e.workspace),ed(e.scoped||[]))}}catch(e){console.error("Failed to load file explorer:",e)}finally{ez(!1)}},[Z,ei]);(0,r.useEffect)(()=>{setTimeout(()=>{e4()},0)},[e4]);let e9=(e,t)=>{eZ({type:"file"===t?"create-file":"create-folder",targetPath:e,inputValue:"",error:null})},te=e=>{let t=e.split(/[/\\]/).pop()||"";eZ({type:"rename",targetPath:e,inputValue:t,error:null})},tt=e=>{eZ({type:"delete",targetPath:e,inputValue:"",error:null})},tr=async e=>{if(e&&e.preventDefault(),eq.type&&eq.targetPath){eZ(e=>({...e,error:null}));try{if("create-file"===eq.type||"create-folder"===eq.type){if(!eq.inputValue.trim())return void eZ(e=>({...e,error:"Name cannot be empty"}));let e=`${eq.targetPath}/${eq.inputValue.trim()}`,t="create-file"===eq.type?"file":"directory",r=await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"create",path:e,type:t})});if(r.ok){let o=await r.json();o.success?(eZ({type:null,targetPath:null,inputValue:"",error:null}),await e4(),"file"===t&&await tn(e)):eZ(e=>({...e,error:o.error||"Failed to create item"}))}else{let e=await r.json();eZ(t=>({...t,error:e.error||"Failed to create item"}))}}if("rename"===eq.type){if(!eq.inputValue.trim())return void eZ(e=>({...e,error:"Name cannot be empty"}));let e=eq.targetPath.replace(/\\/g,"/"),t=e.substring(0,e.lastIndexOf("/")),r=t?`${t}/${eq.inputValue.trim()}`:eq.inputValue.trim(),o=await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"rename",oldPath:eq.targetPath,newPath:r})});if(o.ok){let e=await o.json();e.success?(ev(e=>e.map(e=>e.path===eq.targetPath?{...e,path:r,name:eq.inputValue.trim()}:e)),eb===eq.targetPath&&ej(r),eZ({type:null,targetPath:null,inputValue:"",error:null}),await e4()):eZ(t=>({...t,error:e.error||"Failed to rename item"}))}else{let e=await o.json();eZ(t=>({...t,error:e.error||"Failed to rename item"}))}}if("delete"===eq.type){let e=await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",path:eq.targetPath})});if(e.ok){let t=await e.json();t.success?(ti(eq.targetPath),eZ({type:null,targetPath:null,inputValue:"",error:null}),await e4()):eZ(e=>({...e,error:t.error||"Failed to delete item"}))}else{let t=await e.json();eZ(e=>({...e,error:t.error||"Failed to delete item"}))}}}catch(e){console.error("File operation failed:",e),eZ(e=>({...e,error:"An unexpected error occurred"}))}}},to=(0,r.useCallback)(async()=>{try{let e=ee&&ee.length>0?`&scoped=${encodeURIComponent(ee.join(","))}`:"",t=await fetch(`/api/files?action=flat_list&root=${encodeURIComponent(Z)}${e}`);if(t.ok){let e=await t.json();e.success&&e.files&&e8(e.files)}}catch(e){console.error("Failed to load flat files list:",e)}},[Z,ei]);(0,r.useEffect)(()=>{e0&&setTimeout(()=>{e2(""),e3(0),to()},0)},[e0,to]);let tn=async e=>{if(ey.find(t=>t.path===e))return void ej(e);try{let t=await fetch(`/api/files?action=read&path=${encodeURIComponent(e)}`);if(t.ok){let r=await t.json();if(r.success){let t={name:e.split(/[/\\]/).pop()||"Untitled",path:e,content:r.content,isModified:!1};ev([...ey,t]),ej(e)}}}catch(t){console.error(`Failed to read file ${e}:`,t)}},ti=e=>{let t=ey.filter(t=>t.path!==e);ev(t),eb===e&&ej(t.length>0?t[t.length-1].path:null)},tl=ey.find(e=>e.path===eb),ta=(0,r.useCallback)(async()=>{if(tl)try{(await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"write",path:tl.path,content:tl.content})})).ok&&ev(e=>e.map(e=>e.path===eb?{...e,isModified:!1}:e))}catch(e){console.error(`Failed to save file ${tl.path}:`,e)}},[tl,eb,ev]);(0,r.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),ta()),(e.ctrlKey||e.metaKey)&&"p"===e.key&&(e.preventDefault(),e5(e=>!e))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[ta]);let ts=e7.filter(e=>e.name.toLowerCase().includes(e1.toLowerCase())||e.relativePath.toLowerCase().includes(e1.toLowerCase())).slice(0,10);return(0,t.jsxs)("div",{style:i,children:[(0,t.jsxs)("div",{style:l,children:[(0,t.jsxs)("div",{style:a,children:[(0,t.jsx)("div",{onClick:()=>{"explorer"===eS?ew(!eC):(ek("explorer"),ew(!0))},style:{...s,backgroundColor:"explorer"===eS&&eC?"rgba(255,255,255,0.08)":"transparent",borderLeft:"explorer"===eS&&eC?"2px solid var(--primary)":"2px solid transparent"},title:"File Explorer (Ctrl+P to search files)",children:"📁"}),(0,t.jsx)("div",{onClick:()=>{"git"===eS?ew(!eC):(ek("git"),ew(!0))},style:{...s,backgroundColor:"git"===eS&&eC?"rgba(255,255,255,0.08)":"transparent",borderLeft:"git"===eS&&eC?"2px solid var(--primary)":"2px solid transparent"},title:"Source Control (Git Changes)",children:"🌿"}),(0,t.jsx)("div",{onClick:()=>{"analytics"===eS?ew(!eC):(ek("analytics"),ew(!0))},style:{...s,backgroundColor:"analytics"===eS&&eC?"rgba(255,255,255,0.08)":"transparent",borderLeft:"analytics"===eS&&eC?"2px solid var(--primary)":"2px solid transparent"},title:"Token Usage & Cost Analytics",children:"📊"}),(0,t.jsx)("div",{onClick:()=>{"auditor"===eS?ew(!eC):(ek("auditor"),ew(!0))},style:{...s,backgroundColor:"auditor"===eS&&eC?"rgba(255,255,255,0.08)":"transparent",borderLeft:"auditor"===eS&&eC?"2px solid var(--primary)":"2px solid transparent"},title:"Session Log Auditor & Search",children:"🔍"})]}),(0,t.jsx)("div",{onClick:et,style:{...s,color:"var(--danger)",fontSize:"1rem"},title:"Exit Session Layout",children:"✖"})]}),eC&&(0,t.jsxs)("div",{style:d,children:[(0,t.jsxs)("div",{style:c,children:[(0,t.jsxs)("span",{style:{fontWeight:700,fontSize:"0.75rem",textTransform:"uppercase",letterSpacing:"0.05em"},children:["explorer"===eS&&"Workspace Explorer","git"===eS&&"Source Control","analytics"===eS&&"Telemetry & Cost","auditor"===eS&&"Session Auditor"]}),"explorer"===eS&&(0,t.jsxs)("div",{style:{display:"flex",gap:"0.25rem"},children:[el&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>e9(el.path,"file"),style:B,title:"New File at Root...",children:"📄+"}),(0,t.jsx)("button",{onClick:()=>e9(el.path,"directory"),style:B,title:"New Folder at Root...",children:"📁+"})]}),(0,t.jsx)("button",{onClick:e4,disabled:eT,style:B,title:"Refresh tree",children:"🔄"})]}),"git"===eS&&(0,t.jsx)("button",{onClick:eY,disabled:eW,style:B,title:"Refresh git status",children:"🔄"})]}),(0,t.jsxs)("div",{style:p,children:["explorer"===eS&&(0,t.jsxs)(t.Fragment,{children:[el?(0,t.jsxs)("div",{style:{marginBottom:"1.5rem"},children:[(0,t.jsxs)("div",{style:m,children:["💼 ",el.name," ",(0,t.jsx)("span",{style:u,title:el.path,children:"root"})]}),(0,t.jsx)("div",{style:{padding:"0.25rem 0.5rem"},children:el.tree.map(e=>(0,t.jsx)(I,{node:e,onSelect:tn,onCreate:e9,onRename:te,onDelete:tt,isReadOnly:!1},e.path))})]}):(0,t.jsx)("div",{style:{padding:"1rem",color:"var(--muted)",fontSize:"0.8rem"},children:"Scanning Workspace directory..."}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{...m,borderTop:"1px solid var(--border)",paddingTop:"1rem"},children:[(0,t.jsxs)("span",{children:["🔍 Scoped Folders (",es.length,")"]}),(0,t.jsx)("button",{onClick:()=>ep(!0),style:B,title:"Add Scoped Folder...",children:"➕"})]}),es.length>0?es.map(e=>(0,t.jsxs)("div",{style:{marginTop:"0.75rem",padding:"0 0.5rem"},children:[(0,t.jsxs)("div",{style:{...f,display:"flex",gap:"0.25rem",color:"#a855f7",fontSize:"0.75rem",fontWeight:700,padding:"0.25rem",justifyContent:"space-between",alignItems:"center"},title:e.path,children:[(0,t.jsxs)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:["🔗 ",e.name,"/"]}),(0,t.jsx)("button",{onClick:()=>eu(e.path),style:{background:"none",border:"none",color:"var(--danger)",cursor:"pointer",fontSize:"0.75rem",padding:"0 0.25rem"},title:"Remove Scoped Folder",children:"✖"})]}),(0,t.jsx)("div",{style:{paddingLeft:"0.25rem"},children:e.tree.map(e=>(0,t.jsx)(I,{node:e,onSelect:tn,onCreate:e9,onRename:te,onDelete:tt,isReadOnly:!0},e.path))})]},e.path)):(0,t.jsx)("div",{style:{padding:"0.5rem 1rem",color:"var(--muted)",fontSize:"0.75rem",fontStyle:"italic"},children:"No extra scoped folders. Click [+] to mount a folder."})]})]}),"git"===eS&&(0,t.jsxs)("div",{style:{padding:"0.5rem 1rem"},children:[(0,t.jsx)("div",{style:{fontSize:"0.75rem",fontWeight:700,textTransform:"uppercase",color:"var(--muted)",marginBottom:"0.5rem"},children:"Changes"}),eF?0===eR.length?(0,t.jsx)("div",{style:{color:"var(--success)",fontSize:"0.75rem",padding:"0.5rem 0"},children:"✔ Workspace clean."}):(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:eR.map(e=>{let r="#eab308";return"??"===e.status&&(r="#10b981"),"A"===e.status&&(r="#10b981"),"D"===e.status&&(r="#ef4444"),(0,t.jsxs)("div",{onClick:async()=>{try{let t=await fetch(`/api/git?action=diff&file=${encodeURIComponent(e.relativePath)}&root=${encodeURIComponent(Z)}`);if(t.ok){let r=await t.json();if(r.success){let t=`diff:${e.relativePath}`;ey.some(e=>e.path===t)||ev(o=>[...o,{name:`Diff: ${e.name}`,path:t,content:r.diff,isModified:!1}]),ej(t)}}}catch(e){console.error(e)}},style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.35rem 0.5rem",borderRadius:"4px",backgroundColor:"rgba(255,255,255,0.02)",cursor:"pointer",fontSize:"0.75rem",fontFamily:"var(--font-mono)"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="rgba(255,255,255,0.06)",onMouseLeave:e=>e.currentTarget.style.backgroundColor="rgba(255,255,255,0.02)",children:[(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},title:e.relativePath,children:e.name}),(0,t.jsx)("span",{style:{fontSize:"0.6rem",padding:"0.1rem 0.3rem",borderRadius:"3px",backgroundColor:r+"22",color:r,fontWeight:700},children:e.status})]},e.relativePath)})}):(0,t.jsx)("div",{style:{color:"var(--muted)",fontSize:"0.75rem",fontStyle:"italic"},children:"Not a git repository."})]}),"analytics"===eS&&(0,t.jsxs)("div",{style:{padding:"0.5rem 1rem",display:"flex",flexDirection:"column",gap:"1.25rem"},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:"0.75rem",fontWeight:700,textTransform:"uppercase",color:"var(--muted)",marginBottom:"0.5rem"},children:"Token Usage"}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"0.5rem"},children:[(0,t.jsxs)("div",{style:J,children:[(0,t.jsx)("div",{style:K,children:"Input"}),(0,t.jsx)("div",{style:_,children:(eO?.tokenUsage?.input??0).toLocaleString()})]}),(0,t.jsxs)("div",{style:J,children:[(0,t.jsx)("div",{style:K,children:"Output"}),(0,t.jsx)("div",{style:_,children:(eO?.tokenUsage?.output??0).toLocaleString()})]}),(0,t.jsxs)("div",{style:{...J,gridColumn:"span 2"},children:[(0,t.jsx)("div",{style:K,children:"Cost"}),(0,t.jsxs)("div",{style:{..._,color:"#10b981",fontSize:"1.25rem"},children:["$",(eO?.tokenUsage?.cost??0).toFixed(4)]})]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:"0.75rem",fontWeight:700,textTransform:"uppercase",color:"var(--muted)",marginBottom:"0.5rem"},children:"Resource Telemetry"}),(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"0.7rem",marginBottom:"0.25rem"},children:[(0,t.jsx)("span",{children:"CPU Usage"}),(0,t.jsx)("span",{style:{fontWeight:600,color:"var(--primary)"},children:eE?.cpu??"0.0%"})]}),(0,t.jsx)("div",{style:H,children:(0,t.jsx)("div",{style:{...Y,width:eE?.cpu||"0%",backgroundColor:"var(--primary)"}})})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"0.7rem",marginBottom:"0.25rem"},children:[(0,t.jsx)("span",{children:"Memory Usage"}),(0,t.jsx)("span",{style:{fontWeight:600,color:"#eab308"},children:eE?.memory??"0.0MiB"})]}),(0,t.jsx)("div",{style:H,children:(0,t.jsx)("div",{style:{...Y,width:eE?.memoryPercent||"0%",backgroundColor:"#eab308"}})})]}),(0,t.jsx)("div",{style:{fontSize:"0.6rem",color:"var(--muted)",marginTop:"0.25rem",fontStyle:"italic"},children:eE?.type?.includes("docker")?"🐳 Docker container statistics":"💻 Local process statistics"})]})]})]}),"auditor"===eS&&(0,t.jsxs)("div",{style:{padding:"0.5rem 1rem",display:"flex",flexDirection:"column",gap:"1rem",height:"100%"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:"0.25rem"},children:[(0,t.jsx)("input",{type:"text",placeholder:"Search logs...",value:eB,onChange:e=>eN(e.target.value),style:{flex:1,backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"4px",padding:"0.25rem 0.5rem",color:"#ffffff",fontSize:"0.75rem",outline:"none"}}),(0,t.jsx)("button",{onClick:()=>{if(!eO?.logs)return;let t=new Blob([eO.logs.join("").replace(/\x1b\[[0-9;]*m/g,"")],{type:"text/plain;charset=utf-8"}),r=URL.createObjectURL(t),o=document.createElement("a");o.href=r,o.download=`session-${e}-logs.txt`,o.click(),URL.revokeObjectURL(r)},style:{backgroundColor:"rgba(59, 130, 246, 0.15)",border:"1px solid #3b82f6",color:"#3b82f6",padding:"0.25rem 0.5rem",borderRadius:"4px",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},children:"Export"})]}),(0,t.jsx)("div",{style:{height:"220px",overflowY:"auto",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",padding:"0.5rem",fontFamily:"var(--font-mono)",fontSize:"0.7rem",lineHeight:"1.4",whiteSpace:"pre-wrap",color:"#cbd5e1"},children:(()=>{if(!eO?.logs||0===eO.logs.length)return(0,t.jsx)("div",{style:{color:"var(--muted)",fontStyle:"italic",textAlign:"center"},children:"No logs captured."});let e=eO.logs.join("").replace(/\x1b\[[0-9;]*m/g,"").split(/\r?\n/),r=eB.trim()?e.filter(e=>e.toLowerCase().includes(eB.toLowerCase())):e;return 0===r.length?(0,t.jsx)("div",{style:{color:"var(--muted)",fontStyle:"italic",textAlign:"center"},children:"No matches."}):r.map((e,r)=>{if(!eB.trim())return(0,t.jsx)("div",{children:e},r);let o=e.split(RegExp(`(${eB})`,"gi"));return(0,t.jsx)("div",{children:o.map((e,r)=>e.toLowerCase()===eB.toLowerCase()?(0,t.jsx)("span",{style:{backgroundColor:"#eab308",color:"#000000",fontWeight:600},children:e},r):e)},r)})})()}),(0,t.jsxs)("div",{style:{borderTop:"1px solid var(--border)",paddingTop:"0.75rem"},children:[(0,t.jsx)("div",{style:{fontSize:"0.75rem",fontWeight:700,color:"var(--muted)",marginBottom:"0.5rem"},children:"Custom Buttons"}),(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.35rem"},children:[(0,t.jsx)("input",{type:"text",placeholder:"Button Name (e.g. /undo)",value:eA,onChange:e=>eV(e.target.value),style:{backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"4px",padding:"0.25rem 0.5rem",color:"#ffffff",fontSize:"0.7rem",outline:"none"}}),(0,t.jsx)("input",{type:"text",placeholder:"Injection Command",value:eJ,onChange:e=>eK(e.target.value),style:{backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"4px",padding:"0.25rem 0.5rem",color:"#ffffff",fontSize:"0.7rem",outline:"none"}}),(0,t.jsx)("button",{onClick:()=>{eA.trim()&&eJ.trim()&&(eX([...eU,{name:eA.trim(),command:eJ.trim()}]),eV(""),eK(""))},style:{backgroundColor:"rgba(168, 85, 247, 0.15)",border:"1px solid #a855f7",color:"#c084fc",padding:"0.3rem",borderRadius:"4px",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},children:"+ Add Button"}),eU.length>0&&(0,t.jsx)("div",{style:{marginTop:"0.25rem",maxHeight:"60px",overflowY:"auto"},children:eU.map((e,r)=>(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",fontSize:"0.65rem",backgroundColor:"rgba(255,255,255,0.02)",padding:"0.1rem 0.25rem",borderRadius:"3px",marginTop:"0.15rem"},children:[(0,t.jsx)("span",{style:{color:"#c084fc"},children:e.name}),(0,t.jsx)("span",{onClick:()=>{eX(eU.filter((e,t)=>t!==r))},style:{color:"var(--danger)",cursor:"pointer"},children:"✖"})]},r))})]})]})]})]})]}),(0,t.jsxs)("div",{style:h,children:[(0,t.jsx)("div",{style:Q,children:(0,t.jsx)("div",{style:{display:"flex",gap:"0.25rem",overflowX:"auto"},children:er.map(r=>{let o=r.id===e,n="running"===r.status?"#10b981":"rgba(255,255,255,0.2)";return(0,t.jsxs)("div",{onClick:()=>{e_===r.id&&eH(null),eo(r.id)},style:{...q,backgroundColor:o?"#0b101b":"rgba(8,12,20,0.6)",borderColor:o?"var(--border-focus)":"var(--border)",color:o?"var(--foreground)":"var(--muted)"},children:[(0,t.jsx)("span",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:n,display:"inline-block"}}),(0,t.jsx)("span",{style:{fontSize:"0.75rem",fontWeight:o?600:500},children:r.name}),(0,t.jsx)("span",{style:{fontSize:"0.6rem",color:"var(--muted)",backgroundColor:"rgba(255,255,255,0.05)",padding:"1px 4px",borderRadius:"3px"},children:r.type.replace("claude-","").replace("aider-","")})]},r.id)})})}),(0,t.jsxs)("div",{style:x,children:[(0,t.jsxs)("div",{style:g,children:[(0,t.jsx)("div",{style:y,children:ey.map(e=>(0,t.jsxs)("div",{style:{...b,backgroundColor:eb===e.path?"#0b101b":"rgba(8,12,20,0.4)",borderColor:eb===e.path?"var(--border-focus)":"transparent",color:eb===e.path?"var(--foreground)":"var(--muted)"},onClick:()=>ej(e.path),children:[(0,t.jsxs)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[e.name," ",e.isModified&&(0,t.jsx)("span",{style:j,children:"●"})]}),(0,t.jsx)("span",{onClick:t=>{t.stopPropagation(),ti(e.path)},style:v,children:"✖"})]},e.path))}),tl&&!tl.path.startsWith("diff:")&&(0,t.jsx)("button",{onClick:ta,disabled:!tl.isModified,style:{...C,opacity:tl.isModified?1:.5,cursor:tl.isModified?"pointer":"not-allowed"},children:"💾 Save (Ctrl+S)"})]}),(0,t.jsx)("div",{style:w,children:tl?tl.path.startsWith("diff:")?(0,t.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:"0.8rem",padding:"1rem",overflow:"auto",height:"100%",backgroundColor:"#0b101b",lineHeight:1.5},children:tl.content.split("\n").map((e,r)=>{let o="#e2e8f0",n="transparent";return e.startsWith("+")?(o="#4ade80",n="rgba(74, 222, 128, 0.08)"):e.startsWith("-")?(o="#f87171",n="rgba(248, 113, 113, 0.08)"):e.startsWith("@@")&&(o="#60a5fa",n="rgba(96, 165, 250, 0.05)"),(0,t.jsx)("div",{style:{color:o,backgroundColor:n,whiteSpace:"pre-wrap",padding:"0.1rem 0.5rem"},children:e},r)})}):(0,t.jsx)("textarea",{value:tl.content,onChange:e=>{var t;return t=e.target.value,void(eb&&ev(ey.map(e=>e.path===eb?{...e,content:t,isModified:!0}:e)))},style:S,spellCheck:!1}):(0,t.jsxs)("div",{style:k,children:[(0,t.jsx)("div",{style:{fontSize:"2rem",marginBottom:"1rem"},children:"💻"}),(0,t.jsx)("h4",{style:{margin:0,fontWeight:600},children:"NeuralLoom Workspace Editor"}),(0,t.jsx)("p",{style:{margin:"0.5rem 0 0 0",color:"var(--muted)",fontSize:"0.8rem"},children:"Select files from the left explorer panel to view and edit. Use Ctrl+S to save changes."}),(0,t.jsxs)("p",{style:{margin:"0.5rem 0 0 0",color:"var(--muted)",fontSize:"0.75rem",fontStyle:"italic"},children:["Press ",(0,t.jsx)("kbd",{style:{background:"rgba(255,255,255,0.1)",padding:"2px 4px",borderRadius:"3px"},children:"Ctrl+P"})," to search files."]})]})})]}),(0,t.jsxs)("div",{style:T,children:[(0,t.jsxs)("div",{style:z,children:[(0,t.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:"0.5rem",fontWeight:600,fontSize:"0.8rem"},children:["🖥️ Session Console Bridge ",e_&&"(Split View Active)"]}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,t.jsxs)("select",{onChange:e=>{eH(e.target.value||null)},value:e_||"",style:{backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"4px",padding:"0.2rem 0.5rem",color:"var(--foreground)",fontSize:"0.7rem",outline:"none",cursor:"pointer"},children:[(0,t.jsx)("option",{value:"",children:"🖥️ Single Terminal"}),er.filter(t=>t.id!==e&&"running"===t.status).map(e=>(0,t.jsxs)("option",{value:e.id,children:["🖥️|🖥️ Split: ",e.name]},e.id))]}),(0,t.jsx)("button",{onClick:async()=>{await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,command:"/ccc"})})},style:R,children:"🚀 Mount Context (/ccc)"}),(0,t.jsx)("button",{onClick:async()=>{await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,command:"/ccp"})})},style:P,children:"⚡ Trigger Prompt (/ccp)"})]})]}),(0,t.jsxs)("div",{style:X,children:[(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",fontWeight:700},children:"Quick Commands:"}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.35rem",flexWrap:"wrap",alignItems:"center"},children:[eQ?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>eG("/undo"),style:G,title:"Aider: undo last commit",children:"/undo"}),(0,t.jsx)("button",{onClick:()=>eG("/diff"),style:G,title:"Aider: show git diff",children:"/diff"}),(0,t.jsx)("button",{onClick:()=>eG("/commit"),style:G,title:"Aider: commit edits",children:"/commit"}),(0,t.jsx)("button",{onClick:()=>eG("/test"),style:G,title:"Aider: run tests",children:"/test"}),(0,t.jsx)("button",{onClick:()=>eG("/clear"),style:G,title:"Clear terminal screen",children:"/clear"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>eG("/compact"),style:G,title:"Claude Code: compact history",children:"/compact"}),(0,t.jsx)("button",{onClick:()=>eG("/history"),style:G,title:"Claude Code: view history",children:"/history"}),(0,t.jsx)("button",{onClick:()=>eG("/reset"),style:G,title:"Claude Code: reset conversation",children:"/reset"}),(0,t.jsx)("button",{onClick:()=>eG("/help"),style:G,title:"Claude Code: show help",children:"/help"})]}),eU.map((e,r)=>(0,t.jsx)("button",{onClick:()=>eG(e.command),style:{...G,borderColor:"rgba(168, 85, 247, 0.4)",color:"#c084fc"},title:`Inject command: ${e.command}`,children:e.name},r))]})]}),(0,t.jsxs)("div",{style:{...F,display:"flex",width:"100%",height:"100%"},children:[(0,t.jsx)("div",{style:{flex:1,height:"100%",borderRight:e_?"1px solid var(--border)":"none",overflow:"hidden"},children:(0,t.jsx)(o.default,{sessionId:e,height:"100%"})}),e_&&(0,t.jsxs)("div",{style:{flex:1,height:"100%",overflow:"hidden",display:"flex",flexDirection:"column"},children:[(0,t.jsxs)("div",{style:{padding:"0.25rem 0.5rem",backgroundColor:"#030406",fontSize:"0.7rem",borderBottom:"1px solid var(--border)",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,t.jsxs)("span",{style:{color:"#a855f7",fontWeight:600},children:["🔗 Focused PTY Connection: ",er.find(e=>e.id===e_)?.name]}),(0,t.jsx)("button",{onClick:()=>eH(null),style:{background:"none",border:"none",color:"var(--danger)",cursor:"pointer",fontSize:"0.7rem"},children:"Close Split ✖"})]}),(0,t.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,t.jsx)(o.default,{sessionId:e_,height:"100%"})})]})]})]})]}),eq.type&&(0,t.jsx)("div",{style:W,children:(0,t.jsxs)("div",{style:L,children:[(0,t.jsxs)("h3",{style:{margin:"0 0 1rem 0",fontSize:"1rem",fontWeight:600},children:["create-file"===eq.type&&"Create New File","create-folder"===eq.type&&"Create New Folder","rename"===eq.type&&"Rename Item","delete"===eq.type&&"Confirm Deletion"]}),eq.error&&(0,t.jsxs)("div",{style:{color:"var(--danger)",fontSize:"0.8rem",marginBottom:"1rem"},children:["⚠️ ",eq.error]}),"delete"!==eq.type?(0,t.jsxs)("form",{onSubmit:tr,children:[(0,t.jsxs)("div",{style:{marginBottom:"0.5rem",fontSize:"0.75rem",color:"var(--muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:eq.targetPath||"",children:["Target: ",eq.targetPath]}),(0,t.jsx)("input",{type:"text",value:eq.inputValue,onChange:e=>eZ({...eq,inputValue:e.target.value}),style:O,autoFocus:!0,placeholder:"rename"===eq.type?"Enter new name":"Enter name"}),(0,t.jsxs)("div",{style:D,children:[(0,t.jsx)("button",{type:"button",onClick:()=>eZ({type:null,targetPath:null,inputValue:"",error:null}),style:E,children:"Cancel"}),(0,t.jsx)("button",{type:"submit",style:M,children:"Submit"})]})]}):(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{fontSize:"0.85rem",marginBottom:"1.5rem",color:"var(--muted)",overflowWrap:"break-word"},children:["Are you sure you want to delete this item? This action is permanent.",(0,t.jsx)("div",{style:{marginTop:"0.5rem",color:"#e2e8f0",fontFamily:"var(--font-mono)",fontSize:"0.75rem",background:"rgba(255,255,255,0.05)",padding:"0.5rem",borderRadius:"4px"},children:eq.targetPath})]}),(0,t.jsxs)("div",{style:D,children:[(0,t.jsx)("button",{type:"button",onClick:()=>eZ({type:null,targetPath:null,inputValue:"",error:null}),style:E,children:"Cancel"}),(0,t.jsx)("button",{onClick:()=>tr(),style:{...M,backgroundColor:"var(--danger)"},children:"Delete Permanently"})]})]})]})}),e0&&(0,t.jsx)("div",{style:N,onClick:()=>e5(!1),children:(0,t.jsxs)("div",{style:U,onClick:e=>e.stopPropagation(),children:[(0,t.jsx)("input",{type:"text",value:e1,onChange:e=>{e2(e.target.value),e3(0)},onKeyDown:e=>{"ArrowDown"===e.key?(e.preventDefault(),e3(e=>(e+1)%Math.max(1,ts.length))):"ArrowUp"===e.key?(e.preventDefault(),e3(e=>(e-1+ts.length)%Math.max(1,ts.length))):"Enter"===e.key?(e.preventDefault(),ts[e6]&&(tn(ts[e6].path),e5(!1))):"Escape"===e.key&&(e.preventDefault(),e5(!1))},placeholder:"Search files by name or path...",style:$,autoFocus:!0}),(0,t.jsx)("div",{style:A,children:ts.length>0?ts.map((e,r)=>(0,t.jsxs)("div",{onClick:()=>{tn(e.path),e5(!1)},style:{...V,backgroundColor:r===e6?"rgba(168, 85, 247, 0.15)":"transparent",borderLeft:r===e6?"3px solid var(--primary)":"3px solid transparent"},children:[(0,t.jsx)("span",{style:{fontSize:"0.85rem",fontWeight:600},children:e.name}),(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginLeft:"0.5rem",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.relativePath})]},e.path)):(0,t.jsx)("div",{style:{padding:"0.75rem 1rem",color:"var(--muted)",fontSize:"0.8rem",textAlign:"center"},children:"No matching files found"})}),(0,t.jsx)("div",{style:{padding:"0.5rem 1rem",borderTop:"1px solid var(--border)",fontSize:"0.65rem",color:"var(--muted)",textAlign:"right"},children:"Use ↑↓ to navigate, Enter to select, Esc to close"})]})}),ec&&(0,t.jsx)(n.default,{title:"Add Scoped Directory",initialPath:Z,onClose:()=>ep(!1),onSelect:e=>{em(e),ep(!1)}})]})}])},97722,e=>{e.n(e.i(3839))}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67585,(e,a,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"BailoutToCSR",{enumerable:!0,get:function(){return n}});let t=e.r(32061);function n({reason:e,children:a}){if("u"<typeof window)throw Object.defineProperty(new t.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return a}},9885,(e,a,s)=>{"use strict";function t(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"encodeURIPath",{enumerable:!0,get:function(){return t}})},52157,(e,a,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"PreloadChunks",{enumerable:!0,get:function(){return i}});let t=e.r(43476),n=e.r(74080),l=e.r(63599),r=e.r(9885),o=e.r(43369);function i({moduleIds:e}){if("u">typeof window)return null;let a=l.workAsyncStorage.getStore();if(void 0===a)return null;let s=[];if(a.reactLoadableManifest&&e){let t=a.reactLoadableManifest;for(let a of e){if(!t[a])continue;let e=t[a].files;s.push(...e)}}if(0===s.length)return null;let d=(0,o.getAssetTokenQuery)();return(0,t.jsx)(t.Fragment,{children:s.map(e=>{let s=`${a.assetPrefix}/_next/${(0,r.encodeURIPath)(e)}${d}`;return e.endsWith(".css")?(0,t.jsx)("link",{precedence:"dynamic",href:s,rel:"stylesheet",as:"style",nonce:a.nonce},e):((0,n.preload)(s,{as:"script",fetchPriority:"low",nonce:a.nonce}),null)})})}},69093,(e,a,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return d}});let t=e.r(43476),n=e.r(71645),l=e.r(67585),r=e.r(52157);function o(e){return{default:e&&"default"in e?e.default:e}}let i={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},d=function(e){let a={...i,...e},s=(0,n.lazy)(()=>a.loader().then(o)),d=a.loading;function c(e){let o=d?(0,t.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,i=!a.ssr||!!a.loading,c=i?n.Suspense:n.Fragment,u=a.ssr?(0,t.jsxs)(t.Fragment,{children:["u"<typeof window?(0,t.jsx)(r.PreloadChunks,{moduleIds:a.modules}):null,(0,t.jsx)(s,{...e})]}):(0,t.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,t.jsx)(s,{...e})});return(0,t.jsx)(c,{...i?{fallback:o}:{},children:u})}return c.displayName="LoadableComponent",c}},70703,(e,a,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return n}});let t=e.r(55682)._(e.r(69093));function n(e,a){let s={};"function"==typeof e&&(s.loader=e);let n={...s,...a};return(0,t.default)({...n,modules:n.loadableGenerated?.modules})}("function"==typeof s.default||"object"==typeof s.default&&null!==s.default)&&void 0===s.default.__esModule&&(Object.defineProperty(s.default,"__esModule",{value:!0}),Object.assign(s.default,s),a.exports=s.default)},20897,e=>{e.v({activeBorder:"page-module___8aEwW__activeBorder",agentBadge:"page-module___8aEwW__agentBadge",agentCard:"page-module___8aEwW__agentCard",agentGrid:"page-module___8aEwW__agentGrid",agentHeader:"page-module___8aEwW__agentHeader",agentName:"page-module___8aEwW__agentName",ansiCyan:"page-module___8aEwW__ansiCyan",ansiGreen:"page-module___8aEwW__ansiGreen",ansiMagenta:"page-module___8aEwW__ansiMagenta",ansiRed:"page-module___8aEwW__ansiRed",ansiYellow:"page-module___8aEwW__ansiYellow",cardBody:"page-module___8aEwW__cardBody",container:"page-module___8aEwW__container",containerActive:"page-module___8aEwW__containerActive",contextDetails:"page-module___8aEwW__contextDetails",contextItem:"page-module___8aEwW__contextItem",contextList:"page-module___8aEwW__contextList",contextMeta:"page-module___8aEwW__contextMeta",contextTitle:"page-module___8aEwW__contextTitle",dashboardGrid:"page-module___8aEwW__dashboardGrid",envGrid:"page-module___8aEwW__envGrid",envName:"page-module___8aEwW__envName",envRow:"page-module___8aEwW__envRow",envStatus:"page-module___8aEwW__envStatus",footer:"page-module___8aEwW__footer",header:"page-module___8aEwW__header",logoArea:"page-module___8aEwW__logoArea",mainPanel:"page-module___8aEwW__mainPanel",pulse:"page-module___8aEwW__pulse",pulseDot:"page-module___8aEwW__pulseDot",quickLaunchBtn:"page-module___8aEwW__quickLaunchBtn",sectionTitle:"page-module___8aEwW__sectionTitle",sidePanel:"page-module___8aEwW__sidePanel",statusIndicator:"page-module___8aEwW__statusIndicator",stoppedBadge:"page-module___8aEwW__stoppedBadge",subtitle:"page-module___8aEwW__subtitle",terminalContainer:"page-module___8aEwW__terminalContainer",terminalInput:"page-module___8aEwW__terminalInput",terminalInputArea:"page-module___8aEwW__terminalInputArea",terminalLine:"page-module___8aEwW__terminalLine",terminalSendBtn:"page-module___8aEwW__terminalSendBtn",title:"page-module___8aEwW__title"})},52683,e=>{"use strict";var a=e.i(43476),s=e.i(71645),t=e.i(70703),n=e.i(20897);let l=(0,t.default)(()=>e.A(33779),{loadableGenerated:{modules:[37314]},ssr:!1,loading:()=>(0,a.jsx)("div",{style:{height:"400px",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"#05070a",color:"var(--muted)",border:"1px solid var(--border)",borderBottomLeftRadius:"12px",borderBottomRightRadius:"12px"},children:(0,a.jsx)("span",{children:"Initializing terminal emulator..."})})}),r=(0,t.default)(()=>e.A(39429),{loadableGenerated:{modules:[1985]},ssr:!1,loading:()=>(0,a.jsx)("div",{style:{height:"280px",display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"var(--card)",border:"1px solid var(--border)",borderRadius:"12px",marginTop:"1.5rem"},children:(0,a.jsx)("span",{style:{color:"var(--muted)"},children:"Initializing prompt editor..."})})}),o=(0,t.default)(()=>e.A(56915),{loadableGenerated:{modules:[99026]},ssr:!1}),i=(0,t.default)(()=>e.A(78716),{loadableGenerated:{modules:[9949]},ssr:!1}),d=(0,t.default)(()=>e.A(33789),{loadableGenerated:{modules:[20032]},ssr:!1}),c=(0,t.default)(()=>e.A(78003),{loadableGenerated:{modules:[97722]},ssr:!1});e.s(["default",0,function(){let[e,t]=(0,s.useState)([]),[u,p]=(0,s.useState)(null),[m,_]=(0,s.useState)(!1),[h,f]=(0,s.useState)(!1),[x,g]=(0,s.useState)(!1),[j,y]=(0,s.useState)(!1),[b,v]=(0,s.useState)(!1),[w,k]=(0,s.useState)(!1),[C,N]=(0,s.useState)(""),S=e.find(e=>e.id===u),E=e.some(e=>("claude-docker"===e.type||"aider-docker"===e.type)&&"running"===e.status),P=e.some(e=>"claude-ssh"===e.type&&"running"===e.status),W=async()=>{try{let e=await fetch("/api/sessions"),a=await e.json();a.sessions&&t(a.sessions),a.originalCwd&&N(a.originalCwd)}catch(e){console.error("Failed to fetch sessions:",e)}};(0,s.useEffect)(()=>{(async()=>{await W()})();let e=setInterval(W,4e3);return()=>clearInterval(e)},[]);let T=async(e,a,s,t)=>{_(!0);try{let n=a;n||("claude"===e?n="Claude Local":"claude-docker"===e?n="Claude Docker":"claude-ssh"===e?n="Claude SSH":"aider"===e?n="Aider Local":"aider-docker"===e?n="Aider Docker":"mock"===e&&(n="Mock Session"));let l={type:e,name:n,workspaceRoot:s,scopedDirs:t};if(("aider"===e||"aider-docker"===e)&&!s)try{let e=await fetch("/api/context/aider");if(e.ok){let a=await e.json();a.success&&a.config&&(l.workspaceRoot=a.config.workspaceRoot,l.scopedDirs=a.config.scopedDirs)}}catch(e){console.error("Failed to load aider configuration before launch:",e)}let r=await fetch("/api/sessions/launch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)}),o=await r.json();o.success&&(await W(),p(o.session.id))}catch(e){console.error("Failed to launch session:",e)}finally{_(!1)}},L=async(e,a=!1)=>{try{let s=await fetch("/api/sessions/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,delete:a})});(await s.json()).success&&(a&&u===e&&p(null),await W())}catch(e){console.error("Failed to stop session:",e)}};return(0,a.jsxs)("div",{className:`${n.default.container} ${S?n.default.containerActive:""}`,children:[(0,a.jsxs)("header",{className:n.default.header,children:[(0,a.jsxs)("div",{className:n.default.logoArea,children:[(0,a.jsx)("h1",{className:n.default.title,children:"NeuralLoom"}),(0,a.jsx)("span",{className:n.default.subtitle,children:"Unified AI Orchestrator & Context Bridge"})]}),(0,a.jsxs)("div",{className:n.default.statusIndicator,children:[(0,a.jsx)("span",{className:n.default.pulseDot}),(0,a.jsx)("span",{children:"Orchestrator Online"})]})]}),S?(0,a.jsx)("div",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column"},children:(0,a.jsx)(c,{sessionId:S.id,workspaceRoot:S.workspaceRoot||"",scopedDirs:S.scopedDirs||[],onClose:()=>p(null),sessions:e,onSwitchSession:e=>p(e),onRefreshSessions:W})}):(0,a.jsxs)("div",{className:n.default.dashboardGrid,children:[(0,a.jsxs)("main",{className:n.default.mainPanel,children:[(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{className:n.default.sectionTitle,children:"Active AI Agents"}),0===e.length?(0,a.jsxs)("div",{className:"card",style:{padding:"3rem 1.5rem",textAlign:"center"},children:[(0,a.jsx)("p",{style:{color:"var(--muted)",marginBottom:"1.5rem"},children:"No active agent sessions in this workspace. Launch a simulated session to verify the control bridge."}),(0,a.jsx)("button",{className:n.default.quickLaunchBtn,onClick:()=>T("mock"),disabled:m,style:{maxWidth:"240px",margin:"0 auto"},children:m?"Launching...":"⚡ Launch Simulated Session"})]}):(0,a.jsx)("div",{className:n.default.agentGrid,children:e.map(e=>(0,a.jsxs)("div",{className:`${n.default.agentCard} card ${u===e.id?n.default.activeBorder:""}`,children:[(0,a.jsxs)("div",{className:n.default.agentHeader,children:[(0,a.jsx)("span",{className:n.default.agentName,children:e.name}),(0,a.jsx)("span",{className:`${n.default.agentBadge} ${"stopped"===e.status?n.default.stoppedBadge:""}`,children:e.status})]}),(0,a.jsxs)("div",{className:n.default.cardBody,children:[(0,a.jsxs)("p",{style:{fontSize:"0.825rem",color:"var(--muted)"},children:["ID: ",(0,a.jsx)("code",{style:{fontSize:"0.75rem"},children:e.id.substring(0,8)}),(0,a.jsx)("br",{}),"Type: ","claude"===e.type?"Claude Local PTY":"claude-docker"===e.type?"Claude Docker PTY":"claude-ssh"===e.type?"Claude SSH PTY":"aider"===e.type?"Aider Local PTY":"aider-docker"===e.type?"Aider Docker PTY":"mock"===e.type?"Simulated Mock PTY":"Unknown PTY",(0,a.jsx)("br",{}),"Logs: ",e.logsCount," captured lines"]}),(0,a.jsxs)("div",{style:{display:"flex",gap:"0.5rem",marginTop:"1rem"},children:["running"===e.status?(0,a.jsx)("button",{onClick:()=>L(e.id,!1),style:{flex:1,padding:"0.4rem 0.6rem",borderRadius:"6px",border:"1px solid var(--danger)",backgroundColor:"transparent",fontSize:"0.75rem",fontWeight:600,color:"var(--danger)"},children:"Stop"}):(0,a.jsx)("button",{onClick:()=>L(e.id,!0),style:{flex:1,padding:"0.4rem 0.6rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",fontSize:"0.75rem",fontWeight:600,color:"var(--muted)"},children:"Delete"}),(0,a.jsx)("button",{onClick:()=>p(e.id),style:{flex:2,padding:"0.4rem 0.6rem",borderRadius:"6px",border:"none",backgroundColor:u===e.id?"var(--border-focus)":"var(--primary)",fontSize:"0.75rem",fontWeight:600,color:"#fff"},children:u===e.id?"Connected":"Open Session"})]})]})]},e.id))})]}),u&&(0,a.jsxs)("section",{className:"card",style:{display:"flex",flexDirection:"column",border:"1px solid var(--border-focus)"},children:[(0,a.jsxs)("div",{className:n.default.agentHeader,style:{justifyContent:"space-between",background:"rgba(109, 40, 217, 0.08)"},children:[(0,a.jsxs)("span",{style:{fontWeight:600,display:"flex",alignItems:"center",gap:"0.5rem"},children:["🖥️ Console Bridge — ",e.find(e=>e.id===u)?.name]}),(0,a.jsx)("button",{onClick:()=>p(null),style:{border:"none",background:"none",color:"var(--muted)",cursor:"pointer",fontSize:"0.75rem"},children:"Close Panel ✖"})]}),(0,a.jsx)(l,{sessionId:u})]}),(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{className:n.default.sectionTitle,children:"Shared Context Hub & Slash Commands"}),(0,a.jsxs)("div",{className:n.default.contextList,children:[(0,a.jsxs)("div",{className:`${n.default.contextItem} card`,children:[(0,a.jsxs)("div",{className:n.default.contextMeta,children:[(0,a.jsx)("span",{className:n.default.contextTitle,children:"Staged Context & System Rules (/ccc)"}),(0,a.jsx)("span",{className:n.default.contextDetails,children:"Compiles AGENTS.md guidelines and project files folder hierarchy map."})]}),(0,a.jsx)("button",{onClick:async()=>{u&&await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:u,command:"/ccc"})})},disabled:!u,style:{padding:"0.4rem 0.8rem",borderRadius:"6px",border:"1px solid var(--primary)",backgroundColor:"transparent",color:"var(--primary)",fontSize:"0.75rem",fontWeight:600,opacity:u?1:.5,cursor:u?"pointer":"not-allowed"},children:"🚀 Mount Context (/ccc)"})]}),(0,a.jsxs)("div",{className:`${n.default.contextItem} card`,children:[(0,a.jsxs)("div",{className:n.default.contextMeta,children:[(0,a.jsx)("span",{className:n.default.contextTitle,children:"Staged Developer Prompt (/ccp)"}),(0,a.jsx)("span",{className:n.default.contextDetails,children:"Executes instructions written in .ai/neural-loom/cprompt.md."})]}),(0,a.jsx)("button",{onClick:async()=>{u&&await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:u,command:"/ccp"})})},disabled:!u,style:{padding:"0.4rem 0.8rem",borderRadius:"6px",border:"1px solid var(--success)",backgroundColor:"transparent",color:"var(--success)",fontSize:"0.75rem",fontWeight:600,opacity:u?1:.5,cursor:u?"pointer":"not-allowed"},children:"⚡ Trigger Prompt (/ccp)"})]})]}),(0,a.jsx)(r,{})]})]}),(0,a.jsxs)("aside",{className:n.default.sidePanel,children:[(0,a.jsxs)("section",{children:[(0,a.jsx)("h2",{className:n.default.sectionTitle,children:"Execution Environments"}),(0,a.jsxs)("div",{className:n.default.envGrid,children:[(0,a.jsxs)("div",{className:n.default.envRow,children:[(0,a.jsx)("span",{className:n.default.envName,children:"💻 Local host OS"}),(0,a.jsx)("span",{className:n.default.envStatus,style:{color:"var(--success)"},children:"Active"})]}),(0,a.jsxs)("div",{className:n.default.envRow,style:{opacity:E?1:.6},children:[(0,a.jsx)("span",{className:n.default.envName,children:"🐳 Docker Sandbox"}),(0,a.jsx)("span",{className:n.default.envStatus,style:{color:E?"var(--success)":"var(--muted)"},children:E?"Active":"Not Mounted"})]}),(0,a.jsxs)("div",{className:n.default.envRow,style:{opacity:P?1:.6},children:[(0,a.jsx)("span",{className:n.default.envName,children:"🌐 Remote VM (SSH)"}),(0,a.jsx)("span",{className:n.default.envStatus,style:{color:P?"var(--success)":"var(--muted)"},children:P?"Active":"Disconnected"})]})]})]}),(0,a.jsxs)("section",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:[(0,a.jsxs)("button",{className:n.default.quickLaunchBtn,onClick:()=>T("mock"),disabled:m,children:[(0,a.jsx)("span",{children:"⚡"}),(0,a.jsx)("span",{children:"Launch Mock Agent"})]}),(0,a.jsxs)("button",{className:n.default.quickLaunchBtn,onClick:()=>{k(!1),v(!0)},disabled:m,style:{background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",border:"none"},children:[(0,a.jsx)("span",{children:"🤖"}),(0,a.jsx)("span",{children:"Launch Claude PTY"})]}),(0,a.jsxs)("button",{className:n.default.quickLaunchBtn,onClick:()=>{k(!0),v(!0)},disabled:m,style:{background:"linear-gradient(135deg, hsl(170, 72%, 40%) 0%, hsl(195, 100%, 40%) 100%)",border:"none"},children:[(0,a.jsx)("span",{children:"🐳"}),(0,a.jsx)("span",{children:"Launch Docker PTY"})]}),(0,a.jsxs)("button",{className:n.default.quickLaunchBtn,onClick:()=>f(!0),disabled:m,style:{background:"linear-gradient(135deg, hsl(38, 92%, 50%) 0%, hsl(0, 84%, 60%) 100%)",border:"none"},children:[(0,a.jsx)("span",{children:"🌐"}),(0,a.jsx)("span",{children:"Launch SSH PTY"})]}),(0,a.jsxs)("button",{className:n.default.quickLaunchBtn,onClick:()=>{y(!1),g(!0)},disabled:m,style:{background:"linear-gradient(135deg, hsl(210, 80%, 45%) 0%, hsl(262, 80%, 55%) 100%)",border:"none"},children:[(0,a.jsx)("span",{children:"🐍"}),(0,a.jsx)("span",{children:"Launch Aider PTY"})]}),(0,a.jsxs)("button",{className:n.default.quickLaunchBtn,onClick:()=>{y(!0),g(!0)},disabled:m,style:{background:"linear-gradient(135deg, hsl(195, 100%, 40%) 0%, hsl(262, 80%, 55%) 100%)",border:"none"},children:[(0,a.jsx)("span",{children:"🐳"}),(0,a.jsx)("span",{children:"Launch Aider Docker"})]})]}),(0,a.jsxs)("section",{className:"card",style:{padding:"1.5rem",display:"flex",flexDirection:"column",gap:"0.75rem"},children:[(0,a.jsx)("h3",{style:{fontSize:"1rem",fontWeight:700},children:"Quick Actions"}),(0,a.jsxs)("ul",{style:{listStyle:"none",fontSize:"0.875rem",display:"flex",flexDirection:"column",gap:"0.5rem",color:"var(--muted)"},children:[(0,a.jsxs)("li",{style:{display:"flex",justifyContent:"space-between"},children:[(0,a.jsx)("span",{children:"Configure global API Keys"}),(0,a.jsx)("span",{style:{color:"var(--primary)",cursor:"pointer"},children:"→"})]}),(0,a.jsxs)("li",{style:{display:"flex",justifyContent:"space-between"},children:[(0,a.jsx)("span",{children:"Edit rules templates"}),(0,a.jsx)("span",{style:{color:"var(--primary)",cursor:"pointer"},children:"→"})]}),(0,a.jsxs)("li",{style:{display:"flex",justifyContent:"space-between"},children:[(0,a.jsx)("span",{children:"Inspect process locks"}),(0,a.jsx)("span",{style:{color:"var(--primary)",cursor:"pointer"},children:"→"})]})]})]})]})]}),(0,a.jsxs)("footer",{className:n.default.footer,children:[(0,a.jsx)("span",{children:"NeuralLoom v0.2.13 — Experimental AI Orchestrator Bridge"}),(0,a.jsxs)("span",{children:["Directory: ",C||"Loading..."]})]}),h&&(0,a.jsx)(o,{onClose:()=>f(!1),onConfirmLaunch:()=>{f(!1),T("claude-ssh")}}),x&&(0,a.jsx)(i,{onClose:()=>g(!1),isDocker:j,onConfirmLaunch:()=>{g(!1),T(j?"aider-docker":"aider")}}),b&&(0,a.jsx)(d,{onClose:()=>v(!1),isDocker:w,onConfirmLaunch:(e,a,s)=>{v(!1),T(w?"claude-docker":"claude",e,a,s)}})]})}])},33779,e=>{e.v(a=>Promise.all(["static/chunks/03g6xpslyid3~.js","static/chunks/06z14vx5drwj0.js","static/chunks/0ga14ztvrhau2.css"].map(a=>e.l(a))).then(()=>a(37314)))},39429,e=>{e.v(a=>Promise.all(["static/chunks/16w4~t4h7gk13.js"].map(a=>e.l(a))).then(()=>a(1985)))},56915,e=>{e.v(a=>Promise.all(["static/chunks/0lnobx4eh3~-_.js"].map(a=>e.l(a))).then(()=>a(99026)))},78716,e=>{e.v(a=>Promise.all(["static/chunks/0jxar8nsw_py3.js"].map(a=>e.l(a))).then(()=>a(9949)))},33789,e=>{e.v(a=>Promise.all(["static/chunks/0b89ti7ob.09t.js"].map(a=>e.l(a))).then(()=>a(20032)))},78003,e=>{e.v(a=>Promise.all(["static/chunks/0eidfx-s54367.js","static/chunks/06z14vx5drwj0.js","static/chunks/0ew-ei_k3d-qg.js","static/chunks/0ga14ztvrhau2.css"].map(a=>e.l(a))).then(()=>a(97722)))}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54370,e=>{"use strict";var r=e.i(43476),o=e.i(71645);let t={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.85)",backdropFilter:"blur(12px)",zIndex:1100,display:"flex",alignItems:"center",justifyContent:"center"},n={width:"90%",maxWidth:"550px",height:"480px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 20px 25px -5px rgba(0,0,0,0.7), 0 10px 10px -5px rgba(0,0,0,0.7)",display:"flex",flexDirection:"column",overflow:"hidden"},i={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},l={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},s={display:"flex",padding:"0.75rem 1.25rem",gap:"0.5rem",backgroundColor:"rgba(10, 15, 25, 0.5)",borderBottom:"1px solid var(--border)"},a={flex:1,padding:"0.45rem 0.75rem",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.8rem",outline:"none"},d={padding:"0.45rem 0.85rem",backgroundColor:"var(--border)",border:"1px solid var(--border-focus)",borderRadius:"6px",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},c={padding:"0.15rem 0.45rem",backgroundColor:"rgba(255, 255, 255, 0.15)",border:"none",borderRadius:"4px",color:"var(--foreground)",fontSize:"0.7rem",cursor:"pointer",fontWeight:600},p={flex:1,padding:"0.5rem 1.25rem",overflowY:"auto",backgroundColor:"#070a0f"},u={display:"flex",flexDirection:"column",gap:"0.25rem"},m={display:"flex",alignItems:"center",gap:"0.6rem",padding:"0.45rem 0.65rem",borderRadius:"6px",cursor:"pointer",fontSize:"0.825rem",border:"1px solid transparent",userSelect:"none",transition:"all 0.15s ease"},g={textAlign:"center",padding:"2rem",fontSize:"0.85rem",color:"var(--muted)"},x={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},h={fontSize:"0.75rem",color:"var(--muted)",maxWidth:"240px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},b={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",color:"#fff",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},f={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"};e.s(["default",0,function({title:e,initialPath:y,onClose:v,onSelect:j}){let[k,S]=(0,o.useState)(y||""),[C,w]=(0,o.useState)(null),[A,R]=(0,o.useState)([]),[z,D]=(0,o.useState)(null),[K,I]=(0,o.useState)(""),[F,P]=(0,o.useState)(!1),[W,T]=(0,o.useState)(""),B=async e=>{P(!0),T("");try{let r=`/api/files?action=browse_dirs&path=${encodeURIComponent(e)}`,o=await fetch(r),t=await o.json();o.ok&&t.success?(S(t.currentPath),I(t.currentPath),w(t.parentPath),R(t.directories),D(null)):T(t.error||"Failed to load directory content.")}catch(e){console.error("Error browsing directories:",e),T("Failed to fetch directory contents.")}finally{P(!1)}};(0,o.useEffect)(()=>{B(y)},[y]);let O=e=>{B(e)},G=()=>{K.trim()&&B(K.trim())};return(0,r.jsx)("div",{style:t,children:(0,r.jsxs)("div",{style:n,children:[(0,r.jsxs)("div",{style:i,children:[(0,r.jsxs)("h3",{style:{fontSize:"1rem",fontWeight:700,margin:0,color:"var(--foreground)"},children:["📁 ",e]}),(0,r.jsx)("button",{onClick:v,style:l,"aria-label":"Close browser",children:"✖"})]}),(0,r.jsxs)("div",{style:s,children:[(0,r.jsx)("input",{type:"text",value:K,onChange:e=>I(e.target.value),onKeyDown:e=>{"Enter"===e.key&&G()},style:a,placeholder:"Absolute folder path..."}),(0,r.jsx)("button",{onClick:G,style:d,disabled:F,children:"Go"})]}),(0,r.jsx)("div",{style:p,children:F?(0,r.jsx)("div",{style:g,children:"Loading directories..."}):W?(0,r.jsxs)("div",{style:{...g,color:"var(--danger)"},children:[W,(0,r.jsx)("button",{onClick:()=>B(k||"."),style:{...d,display:"block",margin:"0.75rem auto 0"},children:"Retry"})]}):(0,r.jsxs)("div",{style:u,children:[C&&(0,r.jsxs)("div",{onClick:()=>O(C),onDoubleClick:()=>O(C),style:m,title:"Go up to parent directory",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"⬆️"}),(0,r.jsx)("span",{style:{fontWeight:600},children:".. (Up)"})]}),0===A.length?(0,r.jsx)("div",{style:{...g,color:"var(--muted)"},children:"No subdirectories found"}):A.map(e=>{let o=z===e.path;return(0,r.jsxs)("div",{onClick:()=>D(e.path),onDoubleClick:()=>O(e.path),style:{...m,backgroundColor:o?"rgba(109, 40, 217, 0.25)":"transparent",borderColor:o?"var(--border-focus)":"transparent"},title:"Single click to highlight, double click to enter",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"📁"}),(0,r.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),o&&(0,r.jsx)("button",{type:"button",onClick:r=>{r.stopPropagation(),O(e.path)},style:c,children:"Enter ➜"})]},e.path)})]})}),(0,r.jsxs)("div",{style:x,children:[(0,r.jsxs)("span",{style:h,children:["Selection: ",(0,r.jsx)("span",{style:{color:"var(--foreground)",fontFamily:"var(--font-mono), monospace"},children:z||k||"(None)"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("button",{onClick:v,style:f,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{j(z||k),v()},style:b,disabled:F,children:"Select Folder"})]})]})]})})}])},1663,e=>{"use strict";var r=e.i(43476),o=e.i(71645),t=e.i(54370);let n={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.8)",backdropFilter:"blur(8px)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center",animation:"fadeIn 0.2s ease-out"},i={width:"90%",maxWidth:"500px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.5)",overflow:"hidden",display:"flex",flexDirection:"column"},l={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"1rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},s={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},a={padding:"1.25rem",display:"flex",flexDirection:"column"},d={display:"flex",flexDirection:"column",marginBottom:"1rem"},c={fontSize:"0.75rem",fontWeight:600,color:"var(--foreground)",marginBottom:"0.375rem",textTransform:"uppercase",letterSpacing:"0.05em"},p={width:"100%",padding:"0.5rem 0.75rem",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.825rem",outline:"none",transition:"border-color 0.15s ease"},u={width:"100%",padding:"0.5rem 0.75rem",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontSize:"0.825rem",outline:"none",cursor:"pointer"},m={marginTop:"0.75rem",padding:"0.75rem",borderRadius:"6px",border:"1px solid var(--danger)",backgroundColor:"rgba(239, 68, 68, 0.05)",color:"var(--danger)",fontSize:"0.8rem",lineHeight:1.4},g={display:"flex",justifyContent:"flex-end",gap:"0.75rem",padding:"1rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},x={padding:"0.5rem 1rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(210, 80%, 45%) 0%, hsl(262, 80%, 55%) 100%)",color:"#fff",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},h={padding:"0.5rem 1rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},b={padding:"0.35rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"rgba(255, 255, 255, 0.05)",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer",transition:"all 0.15s ease"};e.s(["default",0,function({onClose:e,onConfirmLaunch:f,isDocker:y}){let[v,j]=(0,o.useState)({openaiApiKey:"",anthropicApiKey:"",geminiApiKey:"",model:"claude-3-5-sonnet",extraFlags:"",workspaceRoot:"",scopedDirs:[]}),[k,S]=(0,o.useState)(""),[C,w]=(0,o.useState)(!0),[A,R]=(0,o.useState)(!1),[z,D]=(0,o.useState)(""),[K,I]=(0,o.useState)(!1),[F,P]=(0,o.useState)(!1),[W,T]=(0,o.useState)({workspaces:[],scopes:[]});(0,o.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/context/aider");if(e.ok){let r=await e.json();r.success&&r.config&&j({openaiApiKey:r.config.openaiApiKey||"",anthropicApiKey:r.config.anthropicApiKey||"",geminiApiKey:r.config.geminiApiKey||"",model:r.config.model||"claude-3-5-sonnet",extraFlags:r.config.extraFlags||"",workspaceRoot:r.config.workspaceRoot||"",scopedDirs:r.config.scopedDirs||[]})}let r=await fetch("/api/recents");if(r.ok){let e=await r.json();e.success&&e.recents&&T(e.recents)}}catch(e){console.error("Failed to load Aider configuration / recents:",e)}finally{w(!1)}})()},[]);let B=async()=>{R(!0),D("");try{let e=await fetch("/api/context/aider",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});if(e.ok)R(!1),f();else{let r=await e.json();D(r.error||"Failed to save settings."),R(!1)}}catch(e){console.error(e),D("Network error: failed to connect to NeuralLoom dashboard API."),R(!1)}};return C?(0,r.jsx)("div",{style:n,children:(0,r.jsx)("div",{style:i,children:(0,r.jsx)("div",{style:{textAlign:"center",padding:"2rem"},children:(0,r.jsx)("span",{style:{color:"var(--muted)"},children:"Loading Aider Configuration..."})})})}):(0,r.jsx)("div",{style:n,children:(0,r.jsxs)("div",{style:i,children:[(0,r.jsxs)("div",{style:l,children:[(0,r.jsxs)("h3",{style:{fontSize:"1.1rem",fontWeight:700,margin:0,display:"flex",alignItems:"center",gap:"0.5rem"},children:["🐍 Aider Launch Panel ",y?"(Docker)":""]}),(0,r.jsx)("button",{onClick:e,style:s,"aria-label":"Close wizard",children:"✖"})]}),(0,r.jsxs)("div",{style:a,children:[(0,r.jsx)("p",{style:{fontSize:"0.825rem",color:"var(--muted)",marginBottom:"1.25rem",lineHeight:1.4},children:"Configure model and environment variables for the Aider session. API keys are saved locally in `.ai/neural-loom/aider.json` and are ignored by git."}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Anthropic API Key"}),(0,r.jsx)("input",{type:"password",value:v.anthropicApiKey,onChange:e=>j({...v,anthropicApiKey:e.target.value}),placeholder:v.anthropicApiKey?"••••••••••••••••":"sk-ant-...",style:p})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"OpenAI API Key"}),(0,r.jsx)("input",{type:"password",value:v.openaiApiKey,onChange:e=>j({...v,openaiApiKey:e.target.value}),placeholder:v.openaiApiKey?"••••••••••••••••":"sk-...",style:p})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Gemini API Key"}),(0,r.jsx)("input",{type:"password",value:v.geminiApiKey,onChange:e=>j({...v,geminiApiKey:e.target.value}),placeholder:v.geminiApiKey?"••••••••••••••••":"AIzaSy...",style:p})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Workspace Directory (Root)"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:v.workspaceRoot,onChange:e=>j({...v,workspaceRoot:e.target.value}),placeholder:"e.g. C:\\Users\\Dave\\OneDrive\\Projects\\JS\\neural-loom",style:{...p,flex:1}}),(0,r.jsx)("button",{type:"button",onClick:()=>I(!0),style:b,children:"Browse..."})]}),W.workspaces.length>0&&(0,r.jsxs)("div",{style:{marginTop:"0.35rem",display:"flex",gap:"0.35rem",flexWrap:"wrap",alignItems:"center"},children:[(0,r.jsx)("span",{style:{fontSize:"0.65rem",color:"var(--muted)"},children:"Recent:"}),W.workspaces.map(e=>(0,r.jsx)("button",{type:"button",onClick:()=>j({...v,workspaceRoot:e}),style:{background:"rgba(255,255,255,0.03)",border:"1px solid var(--border)",borderRadius:"3px",color:"var(--muted)",fontSize:"0.65rem",padding:"1px 6px",cursor:"pointer",fontFamily:"var(--font-mono)"},title:e,children:e.split(/[/\\]/).pop()||e},e))]}),(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginTop:"0.25rem"},children:"Leave blank to default to the current orchestrator directory."})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Scoped Directories (Additional Access)"}),v.scopedDirs.length>0&&(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem",marginBottom:"0.5rem"},children:v.scopedDirs.map((e,o)=>(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:"#080c14",padding:"0.35rem 0.5rem",borderRadius:"4px",border:"1px solid var(--border)"},children:[(0,r.jsx)("span",{style:{fontSize:"0.8rem",fontFamily:"var(--font-mono), monospace",wordBreak:"break-all"},children:e}),(0,r.jsx)("button",{type:"button",onClick:()=>{let e=v.scopedDirs.filter((e,r)=>r!==o);j({...v,scopedDirs:e})},style:{background:"none",border:"none",color:"var(--danger)",cursor:"pointer",fontSize:"0.8rem",padding:"0 0.25rem"},children:"Remove"})]},o))}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:k,onChange:e=>S(e.target.value),placeholder:"e.g. C:\\Users\\Dave\\OneDrive\\Projects\\JS\\wingman",style:{...p,flex:1}}),(0,r.jsx)("button",{type:"button",onClick:()=>P(!0),style:b,children:"Browse..."}),(0,r.jsx)("button",{type:"button",onClick:()=>{k.trim()&&!v.scopedDirs.includes(k.trim())&&(j({...v,scopedDirs:[...v.scopedDirs,k.trim()]}),S(""))},style:{padding:"0.35rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border-focus)",backgroundColor:"rgba(109, 40, 217, 0.1)",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},children:"Add"})]}),W.scopes.length>0&&(0,r.jsxs)("div",{style:{marginTop:"0.35rem",display:"flex",gap:"0.35rem",flexWrap:"wrap",alignItems:"center"},children:[(0,r.jsx)("span",{style:{fontSize:"0.65rem",color:"var(--muted)"},children:"Recent:"}),W.scopes.filter(e=>!v.scopedDirs.includes(e)).map(e=>(0,r.jsxs)("button",{type:"button",onClick:()=>{v.scopedDirs.includes(e)||j({...v,scopedDirs:[...v.scopedDirs,e]})},style:{background:"rgba(168, 85, 247, 0.05)",border:"1px solid rgba(168, 85, 247, 0.2)",borderRadius:"3px",color:"#c084fc",fontSize:"0.65rem",padding:"1px 6px",cursor:"pointer",fontFamily:"var(--font-mono)"},title:e,children:["+",e.split(/[/\\]/).pop()||e]},e))]})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"AI Model Selection"}),(0,r.jsxs)("select",{value:v.model,onChange:e=>j({...v,model:e.target.value}),style:u,children:[(0,r.jsx)("option",{value:"claude-3-5-sonnet",children:"Claude 3.5 Sonnet (Recommended)"}),(0,r.jsx)("option",{value:"gemini/gemini-1.5-pro",children:"Gemini 1.5 Pro"}),(0,r.jsx)("option",{value:"gemini/gemini-1.5-flash",children:"Gemini 1.5 Flash"}),(0,r.jsx)("option",{value:"gemini/gemini-2.0-flash-exp",children:"Gemini 2.0 Flash Exp"}),(0,r.jsx)("option",{value:"gpt-4o",children:"GPT-4o"}),(0,r.jsx)("option",{value:"deepseek/deepseek-coder",children:"DeepSeek Coder"}),(0,r.jsx)("option",{value:"gpt-4-turbo",children:"GPT-4 Turbo"})]})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Extra CLI Flags (Optional)"}),(0,r.jsx)("input",{type:"text",value:v.extraFlags,onChange:e=>j({...v,extraFlags:e.target.value}),placeholder:"e.g. --no-git --auto-commits",style:p}),(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginTop:"0.25rem"},children:"Appended directly to the startup shell command."})]}),z&&(0,r.jsxs)("div",{style:m,children:["✗ ",z]})]}),(0,r.jsxs)("div",{style:g,children:[(0,r.jsx)("button",{onClick:e,style:h,disabled:A,children:"Cancel"}),(0,r.jsx)("button",{onClick:B,style:x,disabled:A,children:A?"Saving...":"Save & Launch Session"})]}),K&&(0,r.jsx)(t.default,{title:"Select Workspace Root",initialPath:v.workspaceRoot,onClose:()=>I(!1),onSelect:e=>j({...v,workspaceRoot:e})}),F&&(0,r.jsx)(t.default,{title:"Add Scoped Directory",initialPath:k,onClose:()=>P(!1),onSelect:e=>S(e)})]})})}])},9949,e=>{e.n(e.i(1663))}]);
package/.next/trace CHANGED
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":302,"timestamp":112629075716,"id":4,"parentId":1,"tags":{},"startTime":1781333364846,"traceId":"99067ad71db990eb"},{"name":"load-custom-routes","duration":428,"timestamp":112629076140,"id":5,"parentId":1,"tags":{},"startTime":1781333364847,"traceId":"99067ad71db990eb"},{"name":"create-dist-dir","duration":2576,"timestamp":112629076621,"id":6,"parentId":1,"tags":{},"startTime":1781333364847,"traceId":"99067ad71db990eb"},{"name":"clean","duration":751,"timestamp":112629080417,"id":7,"parentId":1,"tags":{},"startTime":1781333364851,"traceId":"99067ad71db990eb"},{"name":"discover-routes","duration":8441,"timestamp":112629109521,"id":8,"parentId":1,"tags":{},"startTime":1781333364880,"traceId":"99067ad71db990eb"},{"name":"create-root-mapping","duration":73,"timestamp":112629118020,"id":9,"parentId":1,"tags":{},"startTime":1781333364888,"traceId":"99067ad71db990eb"},{"name":"generate-route-types","duration":19177,"timestamp":112629119542,"id":10,"parentId":1,"tags":{},"startTime":1781333364890,"traceId":"99067ad71db990eb"},{"name":"public-dir-conflict-check","duration":99,"timestamp":112629138882,"id":11,"parentId":1,"tags":{},"startTime":1781333364909,"traceId":"99067ad71db990eb"},{"name":"generate-routes-manifest","duration":3020,"timestamp":112629139101,"id":12,"parentId":1,"tags":{},"startTime":1781333364909,"traceId":"99067ad71db990eb"},{"name":"run-turbopack","duration":2527183,"timestamp":112629150852,"id":14,"parentId":1,"tags":{},"startTime":1781333364921,"traceId":"99067ad71db990eb"},{"name":"turbopack-build-events","duration":71,"timestamp":112629475550,"id":15,"parentId":1,"tags":{},"startTime":1781333365246,"traceId":"99067ad71db990eb"},{"name":"run-typescript","duration":3649585,"timestamp":112631689680,"id":16,"parentId":1,"tags":{},"startTime":1781333367460,"traceId":"99067ad71db990eb"},{"name":"generate-required-server-files","duration":1285,"timestamp":112635340074,"id":18,"parentId":1,"tags":{},"startTime":1781333371110,"traceId":"99067ad71db990eb"},{"name":"check-static-error-page","duration":6911,"timestamp":112635446367,"id":20,"parentId":19,"tags":{},"startTime":1781333371217,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":490023,"timestamp":112635457543,"id":38,"parentId":22,"tags":{},"startTime":1781333371228,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":498247,"timestamp":112635449438,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781333371220,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":586970,"timestamp":112635457671,"id":40,"parentId":24,"tags":{},"startTime":1781333371228,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":594669,"timestamp":112635450029,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781333371220,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":601423,"timestamp":112635457328,"id":37,"parentId":21,"tags":{},"startTime":1781333371228,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":610495,"timestamp":112635448309,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781333371219,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":604293,"timestamp":112635457615,"id":39,"parentId":23,"tags":{},"startTime":1781333371228,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":612186,"timestamp":112635449770,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781333371220,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":610110,"timestamp":112635457768,"id":42,"parentId":26,"tags":{},"startTime":1781333371228,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":617450,"timestamp":112635450481,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781333371221,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":612814,"timestamp":112635457969,"id":43,"parentId":27,"tags":{},"startTime":1781333371228,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":620140,"timestamp":112635450696,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781333371221,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":615844,"timestamp":112635458677,"id":51,"parentId":35,"tags":{},"startTime":1781333371229,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":622141,"timestamp":112635452430,"id":35,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1781333371223,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":617544,"timestamp":112635458103,"id":44,"parentId":28,"tags":{},"startTime":1781333371228,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":624734,"timestamp":112635450954,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781333371221,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":617218,"timestamp":112635458579,"id":49,"parentId":33,"tags":{},"startTime":1781333371229,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":623820,"timestamp":112635451998,"id":33,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781333371222,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":618495,"timestamp":112635458491,"id":47,"parentId":31,"tags":{},"startTime":1781333371229,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":625365,"timestamp":112635451652,"id":31,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781333371222,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":618572,"timestamp":112635458534,"id":48,"parentId":32,"tags":{},"startTime":1781333371229,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":625303,"timestamp":112635451826,"id":32,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781333371222,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":619490,"timestamp":112635457719,"id":41,"parentId":25,"tags":{},"startTime":1781333371228,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":626968,"timestamp":112635450260,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781333371221,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":621746,"timestamp":112635458214,"id":45,"parentId":29,"tags":{},"startTime":1781333371229,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":628804,"timestamp":112635451195,"id":29,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781333371222,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":625784,"timestamp":112635458404,"id":46,"parentId":30,"tags":{},"startTime":1781333371229,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":632764,"timestamp":112635451459,"id":30,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781333371222,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":629867,"timestamp":112635461324,"id":52,"parentId":36,"tags":{},"startTime":1781333371232,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":638259,"timestamp":112635452972,"id":36,"parentId":19,"tags":{"page":"/"},"startTime":1781333371223,"traceId":"99067ad71db990eb"},{"name":"is-page-static","duration":638044,"timestamp":112635458637,"id":50,"parentId":34,"tags":{},"startTime":1781333371229,"traceId":"99067ad71db990eb"},{"name":"check-page","duration":644546,"timestamp":112635452172,"id":34,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781333371223,"traceId":"99067ad71db990eb"},{"name":"static-check","duration":650966,"timestamp":112635445776,"id":19,"parentId":1,"tags":{},"startTime":1781333371216,"traceId":"99067ad71db990eb"},{"name":"write-routes-manifest","duration":794,"timestamp":112636097767,"id":54,"parentId":1,"tags":{},"startTime":1781333371868,"traceId":"99067ad71db990eb"},{"name":"load-dotenv","duration":35,"timestamp":112636114505,"id":57,"parentId":56,"tags":{},"startTime":1781333371885,"traceId":"99067ad71db990eb"},{"name":"run-export-path-map","duration":407,"timestamp":112636119320,"id":58,"parentId":56,"tags":{},"startTime":1781333371890,"traceId":"99067ad71db990eb"},{"name":"next-export","duration":627137,"timestamp":112636113562,"id":56,"parentId":1,"tags":{},"startTime":1781333371884,"traceId":"99067ad71db990eb"},{"name":"move-exported-app-not-found-","duration":1929,"timestamp":112636742163,"id":59,"parentId":55,"tags":{},"startTime":1781333372513,"traceId":"99067ad71db990eb"},{"name":"move-exported-app-global-error-","duration":1369,"timestamp":112636744186,"id":60,"parentId":55,"tags":{},"startTime":1781333372515,"traceId":"99067ad71db990eb"},{"name":"static-generation","duration":646082,"timestamp":112636103051,"id":55,"parentId":1,"tags":{},"startTime":1781333371873,"traceId":"99067ad71db990eb"},{"name":"write-routes-manifest","duration":683,"timestamp":112636749245,"id":61,"parentId":1,"tags":{},"startTime":1781333372520,"traceId":"99067ad71db990eb"},{"name":"print-tree-view","duration":3186,"timestamp":112636759291,"id":62,"parentId":1,"tags":{},"startTime":1781333372530,"traceId":"99067ad71db990eb"},{"name":"write-route-bundle-stats","duration":9511,"timestamp":112636762513,"id":63,"parentId":1,"tags":{},"startTime":1781333372533,"traceId":"99067ad71db990eb"},{"name":"telemetry-flush","duration":208371,"timestamp":112636772063,"id":64,"parentId":1,"tags":{},"startTime":1781333372542,"traceId":"99067ad71db990eb"},{"name":"next-build","duration":7958530,"timestamp":112629021925,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781333364792,"traceId":"99067ad71db990eb"}]
1
+ [{"name":"generate-buildid","duration":242,"timestamp":116202428050,"id":4,"parentId":1,"tags":{},"startTime":1781336938199,"traceId":"9e99489e5b6dfe49"},{"name":"load-custom-routes","duration":366,"timestamp":116202428412,"id":5,"parentId":1,"tags":{},"startTime":1781336938199,"traceId":"9e99489e5b6dfe49"},{"name":"create-dist-dir","duration":562,"timestamp":116202428811,"id":6,"parentId":1,"tags":{},"startTime":1781336938200,"traceId":"9e99489e5b6dfe49"},{"name":"clean","duration":485,"timestamp":116202430134,"id":7,"parentId":1,"tags":{},"startTime":1781336938201,"traceId":"9e99489e5b6dfe49"},{"name":"discover-routes","duration":8806,"timestamp":116202452509,"id":8,"parentId":1,"tags":{},"startTime":1781336938224,"traceId":"9e99489e5b6dfe49"},{"name":"create-root-mapping","duration":95,"timestamp":116202461387,"id":9,"parentId":1,"tags":{},"startTime":1781336938232,"traceId":"9e99489e5b6dfe49"},{"name":"generate-route-types","duration":16799,"timestamp":116202463346,"id":10,"parentId":1,"tags":{},"startTime":1781336938234,"traceId":"9e99489e5b6dfe49"},{"name":"public-dir-conflict-check","duration":88,"timestamp":116202480287,"id":11,"parentId":1,"tags":{},"startTime":1781336938251,"traceId":"9e99489e5b6dfe49"},{"name":"generate-routes-manifest","duration":2480,"timestamp":116202480477,"id":12,"parentId":1,"tags":{},"startTime":1781336938251,"traceId":"9e99489e5b6dfe49"},{"name":"run-turbopack","duration":2478438,"timestamp":116202490484,"id":14,"parentId":1,"tags":{},"startTime":1781336938262,"traceId":"9e99489e5b6dfe49"},{"name":"turbopack-build-events","duration":70,"timestamp":116202793308,"id":15,"parentId":1,"tags":{},"startTime":1781336938564,"traceId":"9e99489e5b6dfe49"},{"name":"run-typescript","duration":3593514,"timestamp":116204981999,"id":16,"parentId":1,"tags":{},"startTime":1781336940753,"traceId":"9e99489e5b6dfe49"},{"name":"generate-required-server-files","duration":1387,"timestamp":116208576324,"id":18,"parentId":1,"tags":{},"startTime":1781336944347,"traceId":"9e99489e5b6dfe49"},{"name":"check-static-error-page","duration":6185,"timestamp":116208691368,"id":20,"parentId":19,"tags":{},"startTime":1781336944462,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":516547,"timestamp":116208701537,"id":40,"parentId":22,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":524505,"timestamp":116208693727,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781336944465,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":626167,"timestamp":116208701656,"id":42,"parentId":24,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":633849,"timestamp":116208694190,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781336944465,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":645597,"timestamp":116208701958,"id":45,"parentId":27,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":652826,"timestamp":116208694781,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781336944466,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":645984,"timestamp":116208701753,"id":44,"parentId":26,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":653165,"timestamp":116208694596,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781336944466,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":646171,"timestamp":116208701705,"id":43,"parentId":25,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":653512,"timestamp":116208694385,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781336944465,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":646936,"timestamp":116208702888,"id":55,"parentId":37,"tags":{},"startTime":1781336944474,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":652934,"timestamp":116208696932,"id":37,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1781336944468,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":649006,"timestamp":116208702208,"id":47,"parentId":29,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":656061,"timestamp":116208695185,"id":29,"parentId":19,"tags":{"page":"/api/recents"},"startTime":1781336944466,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":650696,"timestamp":116208702096,"id":46,"parentId":28,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":657826,"timestamp":116208695000,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781336944466,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":653432,"timestamp":116208701316,"id":39,"parentId":21,"tags":{},"startTime":1781336944472,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":661961,"timestamp":116208692826,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781336944464,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":654104,"timestamp":116208705822,"id":56,"parentId":38,"tags":{},"startTime":1781336944477,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":662678,"timestamp":116208697293,"id":38,"parentId":19,"tags":{"page":"/"},"startTime":1781336944468,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":660494,"timestamp":116208702755,"id":52,"parentId":34,"tags":{},"startTime":1781336944474,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":667224,"timestamp":116208696058,"id":34,"parentId":19,"tags":{"page":"/api/sessions/scope"},"startTime":1781336944467,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":661357,"timestamp":116208702628,"id":50,"parentId":32,"tags":{},"startTime":1781336944474,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":668285,"timestamp":116208695733,"id":32,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781336944467,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":661622,"timestamp":116208702544,"id":49,"parentId":31,"tags":{},"startTime":1781336944474,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":668624,"timestamp":116208695556,"id":31,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781336944467,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":663663,"timestamp":116208702410,"id":48,"parentId":30,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":670736,"timestamp":116208695364,"id":30,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781336944466,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":664878,"timestamp":116208701606,"id":41,"parentId":23,"tags":{},"startTime":1781336944473,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":672510,"timestamp":116208693990,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781336944465,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":666929,"timestamp":116208702686,"id":51,"parentId":33,"tags":{},"startTime":1781336944474,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":673750,"timestamp":116208695889,"id":33,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781336944467,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":667403,"timestamp":116208702854,"id":54,"parentId":36,"tags":{},"startTime":1781336944474,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":673555,"timestamp":116208696727,"id":36,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781336944468,"traceId":"9e99489e5b6dfe49"},{"name":"is-page-static","duration":668602,"timestamp":116208702811,"id":53,"parentId":35,"tags":{},"startTime":1781336944474,"traceId":"9e99489e5b6dfe49"},{"name":"check-page","duration":675108,"timestamp":116208696330,"id":35,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781336944467,"traceId":"9e99489e5b6dfe49"},{"name":"static-check","duration":680526,"timestamp":116208690931,"id":19,"parentId":1,"tags":{},"startTime":1781336944462,"traceId":"9e99489e5b6dfe49"},{"name":"write-routes-manifest","duration":843,"timestamp":116209372458,"id":58,"parentId":1,"tags":{},"startTime":1781336945143,"traceId":"9e99489e5b6dfe49"},{"name":"load-dotenv","duration":29,"timestamp":116209386808,"id":61,"parentId":60,"tags":{},"startTime":1781336945158,"traceId":"9e99489e5b6dfe49"},{"name":"run-export-path-map","duration":339,"timestamp":116209391124,"id":62,"parentId":60,"tags":{},"startTime":1781336945162,"traceId":"9e99489e5b6dfe49"},{"name":"next-export","duration":644233,"timestamp":116209386006,"id":60,"parentId":1,"tags":{},"startTime":1781336945157,"traceId":"9e99489e5b6dfe49"},{"name":"move-exported-app-not-found-","duration":1868,"timestamp":116210031668,"id":63,"parentId":59,"tags":{},"startTime":1781336945803,"traceId":"9e99489e5b6dfe49"},{"name":"move-exported-app-global-error-","duration":1316,"timestamp":116210033625,"id":64,"parentId":59,"tags":{},"startTime":1781336945805,"traceId":"9e99489e5b6dfe49"},{"name":"static-generation","duration":660529,"timestamp":116209377116,"id":59,"parentId":1,"tags":{},"startTime":1781336945148,"traceId":"9e99489e5b6dfe49"},{"name":"write-routes-manifest","duration":652,"timestamp":116210037739,"id":65,"parentId":1,"tags":{},"startTime":1781336945809,"traceId":"9e99489e5b6dfe49"},{"name":"print-tree-view","duration":2840,"timestamp":116210048491,"id":66,"parentId":1,"tags":{},"startTime":1781336945820,"traceId":"9e99489e5b6dfe49"},{"name":"write-route-bundle-stats","duration":10342,"timestamp":116210051362,"id":67,"parentId":1,"tags":{},"startTime":1781336945822,"traceId":"9e99489e5b6dfe49"},{"name":"telemetry-flush","duration":174661,"timestamp":116210061741,"id":68,"parentId":1,"tags":{},"startTime":1781336945833,"traceId":"9e99489e5b6dfe49"},{"name":"next-build","duration":7858859,"timestamp":116202377566,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781336938149,"traceId":"9e99489e5b6dfe49"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":2527183,"timestamp":112629150852,"id":14,"parentId":1,"tags":{},"startTime":1781333364921,"traceId":"99067ad71db990eb"},{"name":"turbopack-build-events","duration":71,"timestamp":112629475550,"id":15,"parentId":1,"tags":{},"startTime":1781333365246,"traceId":"99067ad71db990eb"},{"name":"run-typescript","duration":3649585,"timestamp":112631689680,"id":16,"parentId":1,"tags":{},"startTime":1781333367460,"traceId":"99067ad71db990eb"},{"name":"static-check","duration":650966,"timestamp":112635445776,"id":19,"parentId":1,"tags":{},"startTime":1781333371216,"traceId":"99067ad71db990eb"},{"name":"static-generation","duration":646082,"timestamp":112636103051,"id":55,"parentId":1,"tags":{},"startTime":1781333371873,"traceId":"99067ad71db990eb"},{"name":"telemetry-flush","duration":208371,"timestamp":112636772063,"id":64,"parentId":1,"tags":{},"startTime":1781333372542,"traceId":"99067ad71db990eb"},{"name":"next-build","duration":7958530,"timestamp":112629021925,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781333364792,"traceId":"99067ad71db990eb"}]
1
+ [{"name":"run-turbopack","duration":2478438,"timestamp":116202490484,"id":14,"parentId":1,"tags":{},"startTime":1781336938262,"traceId":"9e99489e5b6dfe49"},{"name":"turbopack-build-events","duration":70,"timestamp":116202793308,"id":15,"parentId":1,"tags":{},"startTime":1781336938564,"traceId":"9e99489e5b6dfe49"},{"name":"run-typescript","duration":3593514,"timestamp":116204981999,"id":16,"parentId":1,"tags":{},"startTime":1781336940753,"traceId":"9e99489e5b6dfe49"},{"name":"static-check","duration":680526,"timestamp":116208690931,"id":19,"parentId":1,"tags":{},"startTime":1781336944462,"traceId":"9e99489e5b6dfe49"},{"name":"static-generation","duration":660529,"timestamp":116209377116,"id":59,"parentId":1,"tags":{},"startTime":1781336945148,"traceId":"9e99489e5b6dfe49"},{"name":"telemetry-flush","duration":174661,"timestamp":116210061741,"id":68,"parentId":1,"tags":{},"startTime":1781336945833,"traceId":"9e99489e5b6dfe49"},{"name":"next-build","duration":7858859,"timestamp":116202377566,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781336938149,"traceId":"9e99489e5b6dfe49"}]
@@ -2,7 +2,7 @@
2
2
  // Do not edit this file manually
3
3
 
4
4
  type AppRoutes = "/"
5
- type AppRouteHandlerRoutes = "/api/context" | "/api/context/aider" | "/api/context/claude" | "/api/context/ssh" | "/api/files" | "/api/git" | "/api/sessions" | "/api/sessions/inject" | "/api/sessions/input" | "/api/sessions/launch" | "/api/sessions/stats" | "/api/sessions/stop"
5
+ type AppRouteHandlerRoutes = "/api/context" | "/api/context/aider" | "/api/context/claude" | "/api/context/ssh" | "/api/files" | "/api/git" | "/api/recents" | "/api/sessions" | "/api/sessions/inject" | "/api/sessions/input" | "/api/sessions/launch" | "/api/sessions/scope" | "/api/sessions/stats" | "/api/sessions/stop"
6
6
  type PageRoutes = never
7
7
  type LayoutRoutes = "/"
8
8
  type RedirectRoutes = never
@@ -18,10 +18,12 @@ interface ParamMap {
18
18
  "/api/context/ssh": {}
19
19
  "/api/files": {}
20
20
  "/api/git": {}
21
+ "/api/recents": {}
21
22
  "/api/sessions": {}
22
23
  "/api/sessions/inject": {}
23
24
  "/api/sessions/input": {}
24
25
  "/api/sessions/launch": {}
26
+ "/api/sessions/scope": {}
25
27
  "/api/sessions/stats": {}
26
28
  "/api/sessions/stop": {}
27
29
  }
@@ -110,6 +110,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
110
110
  type __Unused = __Check
111
111
  }
112
112
 
113
+ // Validate ../../src/app/api/recents/route.ts
114
+ {
115
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/recents">> = Specific
116
+ const handler = {} as typeof import("../../src/app/api/recents/route.js")
117
+ type __Check = __IsExpected<typeof handler>
118
+ // @ts-ignore
119
+ type __Unused = __Check
120
+ }
121
+
113
122
  // Validate ../../src/app/api/sessions/inject/route.ts
114
123
  {
115
124
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/sessions/inject">> = Specific
@@ -146,6 +155,15 @@ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRou
146
155
  type __Unused = __Check
147
156
  }
148
157
 
158
+ // Validate ../../src/app/api/sessions/scope/route.ts
159
+ {
160
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/sessions/scope">> = Specific
161
+ const handler = {} as typeof import("../../src/app/api/sessions/scope/route.js")
162
+ type __Check = __IsExpected<typeof handler>
163
+ // @ts-ignore
164
+ type __Unused = __Check
165
+ }
166
+
149
167
  // Validate ../../src/app/api/sessions/stats/route.ts
150
168
  {
151
169
  type __IsExpected<Specific extends RouteHandlerConfig<"/api/sessions/stats">> = Specific
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neural-loom",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "bin": {
5
5
  "neural-loom": "./bin/cli.js"
6
6
  },
@@ -17,36 +17,51 @@ function maskKey(key: string): string {
17
17
  return `${key.slice(0, 6)}...${key.slice(-4)}`;
18
18
  }
19
19
 
20
+ import { getWorkspaceFileFolders } from "@/lib/workspaceParser";
21
+
20
22
  export async function GET() {
21
23
  try {
24
+ let openaiApiKey = "";
25
+ let anthropicApiKey = "";
26
+ let geminiApiKey = "";
27
+ let model = "claude-3-5-sonnet";
28
+ let extraFlags = "";
29
+ let workspaceRoot = "";
30
+ let scopedDirs: string[] = [];
31
+
22
32
  if (fs.existsSync(configPath)) {
23
- const rawData = fs.readFileSync(configPath, "utf8");
24
- const config = JSON.parse(rawData);
25
-
26
- return NextResponse.json({
27
- success: true,
28
- config: {
29
- openaiApiKey: config.openaiApiKey ? maskKey(config.openaiApiKey) : "",
30
- anthropicApiKey: config.anthropicApiKey ? maskKey(config.anthropicApiKey) : "",
31
- geminiApiKey: config.geminiApiKey ? maskKey(config.geminiApiKey) : "",
32
- model: config.model || "claude-3-5-sonnet",
33
- extraFlags: config.extraFlags || "",
34
- workspaceRoot: config.workspaceRoot || "",
35
- scopedDirs: config.scopedDirs || [],
36
- },
37
- });
33
+ try {
34
+ const rawData = fs.readFileSync(configPath, "utf8");
35
+ const config = JSON.parse(rawData);
36
+ openaiApiKey = config.openaiApiKey ? maskKey(config.openaiApiKey) : "";
37
+ anthropicApiKey = config.anthropicApiKey ? maskKey(config.anthropicApiKey) : "";
38
+ geminiApiKey = config.geminiApiKey ? maskKey(config.geminiApiKey) : "";
39
+ model = config.model || "claude-3-5-sonnet";
40
+ extraFlags = config.extraFlags || "";
41
+ workspaceRoot = config.workspaceRoot || "";
42
+ scopedDirs = config.scopedDirs || [];
43
+ } catch (e) {
44
+ console.error("Failed to parse aider.json:", e);
45
+ }
38
46
  }
39
47
 
48
+ // Resolve workspace folders from the code-workspace file if it exists
49
+ const rootToScan = workspaceRoot || process.env.ORIGINAL_CWD || process.cwd();
50
+ const wsFolders = getWorkspaceFileFolders(rootToScan);
51
+
52
+ // Merge scopedDirs, filtering out duplicates
53
+ const mergedScopes = Array.from(new Set([...scopedDirs, ...wsFolders]));
54
+
40
55
  return NextResponse.json({
41
56
  success: true,
42
57
  config: {
43
- openaiApiKey: "",
44
- anthropicApiKey: "",
45
- geminiApiKey: "",
46
- model: "claude-3-5-sonnet",
47
- extraFlags: "",
48
- workspaceRoot: "",
49
- scopedDirs: [],
58
+ openaiApiKey,
59
+ anthropicApiKey,
60
+ geminiApiKey,
61
+ model,
62
+ extraFlags,
63
+ workspaceRoot,
64
+ scopedDirs: mergedScopes,
50
65
  },
51
66
  });
52
67
  } catch (error) {
@@ -11,30 +11,42 @@ function ensureDir() {
11
11
  }
12
12
  }
13
13
 
14
+ import { getWorkspaceFileFolders } from "@/lib/workspaceParser";
15
+
14
16
  export async function GET() {
15
17
  try {
18
+ let name = "Claude Local";
19
+ let workspaceRoot = "";
20
+ let scopedDirs: string[] = [];
21
+ let extraFlags = "";
22
+
16
23
  if (fs.existsSync(configPath)) {
17
- const rawData = fs.readFileSync(configPath, "utf8");
18
- const config = JSON.parse(rawData);
19
-
20
- return NextResponse.json({
21
- success: true,
22
- config: {
23
- name: config.name || "Claude Local",
24
- workspaceRoot: config.workspaceRoot || "",
25
- scopedDirs: config.scopedDirs || [],
26
- extraFlags: config.extraFlags || "",
27
- },
28
- });
24
+ try {
25
+ const rawData = fs.readFileSync(configPath, "utf8");
26
+ const config = JSON.parse(rawData);
27
+ name = config.name || "Claude Local";
28
+ workspaceRoot = config.workspaceRoot || "";
29
+ scopedDirs = config.scopedDirs || [];
30
+ extraFlags = config.extraFlags || "";
31
+ } catch (e) {
32
+ console.error("Failed to parse claude.json:", e);
33
+ }
29
34
  }
30
35
 
36
+ // Resolve workspace folders from the code-workspace file if it exists
37
+ const rootToScan = workspaceRoot || process.env.ORIGINAL_CWD || process.cwd();
38
+ const wsFolders = getWorkspaceFileFolders(rootToScan);
39
+
40
+ // Merge scopedDirs, filtering out duplicates
41
+ const mergedScopes = Array.from(new Set([...scopedDirs, ...wsFolders]));
42
+
31
43
  return NextResponse.json({
32
44
  success: true,
33
45
  config: {
34
- name: "Claude Local",
35
- workspaceRoot: "",
36
- scopedDirs: [],
37
- extraFlags: "",
46
+ name,
47
+ workspaceRoot,
48
+ scopedDirs: mergedScopes,
49
+ extraFlags,
38
50
  },
39
51
  });
40
52
  } catch (error) {