neural-loom 0.2.52 → 0.2.54

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 (100) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +5 -5
  3. package/.next/cache/.previewinfo +1 -1
  4. package/.next/cache/.rscinfo +1 -1
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/diagnostics/route-bundle-stats.json +6 -6
  7. package/.next/fallback-build-manifest.json +3 -3
  8. package/.next/prerender-manifest.json +3 -3
  9. package/.next/server/app/_global-error/page/build-manifest.json +2 -2
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page/build-manifest.json +2 -2
  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.nft.json +1 -1
  27. package/.next/server/app/api/context/claude/route.js.nft.json +1 -1
  28. package/.next/server/app/api/context/route.js.nft.json +1 -1
  29. package/.next/server/app/api/context/ssh/route.js.nft.json +1 -1
  30. package/.next/server/app/api/recents/route.js.nft.json +1 -1
  31. package/.next/server/app/api/sessions/inject/route.js.nft.json +1 -1
  32. package/.next/server/app/api/sessions/input/route.js.nft.json +1 -1
  33. package/.next/server/app/api/sessions/launch/route.js.nft.json +1 -1
  34. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  35. package/.next/server/app/api/sessions/scope/route.js.nft.json +1 -1
  36. package/.next/server/app/api/sessions/start/route.js.nft.json +1 -1
  37. package/.next/server/app/api/sessions/stats/route.js.nft.json +1 -1
  38. package/.next/server/app/api/sessions/stop/route.js.nft.json +1 -1
  39. package/.next/server/app/api/sql/connections/route.js.nft.json +1 -1
  40. package/.next/server/app/api/sql/mcp/route.js.nft.json +1 -1
  41. package/.next/server/app/api/sql/query/route.js.nft.json +1 -1
  42. package/.next/server/app/api/sql/schema/route.js.nft.json +1 -1
  43. package/.next/server/app/index.html +1 -1
  44. package/.next/server/app/index.rsc +3 -3
  45. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  46. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  47. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  48. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  49. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  50. package/.next/server/app/page/build-manifest.json +2 -2
  51. package/.next/server/app/page/react-loadable-manifest.json +3 -3
  52. package/.next/server/app/page_client-reference-manifest.js +1 -1
  53. package/.next/server/chunks/[root-of-the-server]__0.ptwor._.js +8 -8
  54. package/.next/server/chunks/[root-of-the-server]__0.ptwor._.js.map +1 -1
  55. package/.next/server/chunks/[root-of-the-server]__00l5btc._.js +5 -5
  56. package/.next/server/chunks/[root-of-the-server]__00l5btc._.js.map +1 -1
  57. package/.next/server/chunks/[root-of-the-server]__06men8g._.js +5 -5
  58. package/.next/server/chunks/[root-of-the-server]__06men8g._.js.map +1 -1
  59. package/.next/server/chunks/[root-of-the-server]__0_o7_jj._.js +1 -1
  60. package/.next/server/chunks/[root-of-the-server]__0_o7_jj._.js.map +1 -1
  61. package/.next/server/chunks/[root-of-the-server]__0co.g5k._.js +5 -5
  62. package/.next/server/chunks/[root-of-the-server]__0co.g5k._.js.map +1 -1
  63. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +12 -12
  64. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
  65. package/.next/server/chunks/ssr/_0t7oqy6._.js +2 -2
  66. package/.next/server/chunks/ssr/_0t7oqy6._.js.map +1 -1
  67. package/.next/server/middleware-build-manifest.js +5 -5
  68. package/.next/server/pages/404.html +1 -1
  69. package/.next/server/pages/500.html +1 -1
  70. package/.next/server/server-reference-manifest.js +1 -1
  71. package/.next/server/server-reference-manifest.json +1 -1
  72. package/.next/static/chunks/{070hz362~_h8n.js → 0-vb7c~yrtpon.js} +1 -1
  73. package/.next/static/chunks/{0p28yw2f2duy-.js → 0ki2coq0yvb09.js} +1 -1
  74. package/.next/static/chunks/{0fpki3y6aj230.js → 0ljspdd3cv1ft.js} +1 -1
  75. package/.next/static/chunks/0lxxsee_tqtnv.js +6 -0
  76. package/.next/static/chunks/{0m-_sw1425nkp.css → 0osemmcuiexj3.css} +1 -1
  77. package/.next/static/chunks/{turbopack-08fpdsd.-ns2y.js → turbopack-0.g.4cakdth0h.js} +1 -1
  78. package/.next/trace +1 -1
  79. package/.next/trace-build +1 -1
  80. package/package.json +1 -1
  81. package/src/app/components/DbExplorer.tsx +4 -2
  82. package/src/app/components/IdeLayout.tsx +30 -1
  83. package/src/app/components/TerminalConsole.tsx +3 -0
  84. package/src/app/page.module.css +54 -0
  85. package/src/app/page.tsx +14 -3
  86. package/src/lib/agents/AgentRunner.ts +74 -0
  87. package/src/lib/agents/AiderRunner.ts +4 -2
  88. package/src/lib/agents/ClaudeRunner.ts +4 -3
  89. package/src/lib/agents/DockerRunner.ts +4 -2
  90. package/src/lib/agents/MockRunner.ts +2 -1
  91. package/src/lib/agents/SSHRunner.ts +4 -2
  92. package/src/lib/agents/ShellRunner.ts +4 -1
  93. package/src/lib/sql/adapters/MssqlAdapter.ts +1 -1
  94. package/src/lib/sql/adapters/MysqlAdapter.ts +1 -1
  95. package/src/lib/sql/adapters/PostgresAdapter.ts +1 -1
  96. package/src/lib/sql/adapters/SqliteAdapter.ts +1 -1
  97. package/.next/static/chunks/0bb9anc7wd3_e.js +0 -6
  98. /package/.next/static/{nL6vq7onX8i2nzr-zxraV → ZDEUElwAIl3MojuVa8D4O}/_buildManifest.js +0 -0
  99. /package/.next/static/{nL6vq7onX8i2nzr-zxraV → ZDEUElwAIl3MojuVa8D4O}/_clientMiddlewareManifest.js +0 -0
  100. /package/.next/static/{nL6vq7onX8i2nzr-zxraV → ZDEUElwAIl3MojuVa8D4O}/_ssgManifest.js +0 -0
@@ -0,0 +1,6 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,66381,e=>{"use strict";var t=e.i(43476),s=e.i(71645),r=e.i(74080);let a={display:"flex",height:"100%",width:"100%",backgroundColor:"#05070a",color:"#cbd5e1",fontSize:"0.875rem",minHeight:0},n={width:"280px",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",minHeight:0,backgroundColor:"rgba(10, 15, 24, 0.4)",flexShrink:0},l={display:"flex",flexDirection:"column",padding:"1rem",minHeight:0},o={display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"0.75rem"},i={fontWeight:700,letterSpacing:"0.05em",textTransform:"uppercase",fontSize:"0.75rem",color:"var(--muted)"},d={padding:"0.2rem 0.5rem",borderRadius:"4px",border:"1px solid var(--primary)",backgroundColor:"transparent",color:"var(--primary)",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},c={display:"flex",flexDirection:"column",gap:"0.4rem",overflowY:"auto",maxHeight:"220px"},u={fontSize:"0.65rem",fontWeight:600,color:"var(--muted)",marginTop:"0.5rem",marginBottom:"0.2rem",letterSpacing:"0.05em"},p={display:"flex",justifyContent:"space-between",alignItems:"center",padding:"0.5rem 0.6rem",borderRadius:"6px",backgroundColor:"rgba(255, 255, 255, 0.02)",border:"1px solid var(--border)",cursor:"pointer",transition:"all 0.2s ease"},m={backgroundColor:"rgba(109, 40, 217, 0.08)",border:"1px solid var(--border-focus)",boxShadow:"0 0 10px rgba(109, 40, 217, 0.1)"},h={display:"flex",flexDirection:"column",gap:"0.15rem",flex:1,minWidth:0},g={fontWeight:600,fontSize:"0.8rem",color:"#fff",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},x={fontSize:"0.7rem",color:"var(--muted)",textTransform:"uppercase"},f={background:"none",border:"none",color:"rgba(239, 68, 68, 0.4)",cursor:"pointer",fontSize:"0.75rem",padding:"0.25rem"},y={display:"flex",flexDirection:"column",gap:"0.25rem",overflowY:"auto",flex:1,minHeight:0},b={fontSize:"0.75rem",color:"var(--muted)",textAlign:"center",padding:"1rem 0"},j={display:"flex",flexDirection:"column"},v={display:"flex",alignItems:"center",padding:"0.35rem 0.5rem",borderRadius:"4px",cursor:"pointer",userSelect:"none",transition:"background 0.2s ease"},_={marginRight:"0.4rem",fontSize:"0.9rem"},w={flex:1,fontSize:"0.8rem",color:"#e2e8f0",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},k={fontSize:"0.6rem",color:"var(--muted)",marginLeft:"0.25rem"},S={display:"flex",flexDirection:"column",gap:"0.2rem",paddingLeft:"1.5rem",marginTop:"0.15rem",borderLeft:"1px dashed rgba(255,255,255,0.06)",marginLeft:"0.8rem",marginBottom:"0.25rem"},C={display:"flex",alignItems:"center",padding:"0.15rem 0.25rem",fontSize:"0.75rem"},N={marginRight:"0.3rem",fontSize:"0.7rem"},W={flex:1,color:"var(--muted)",overflow:"hidden",textOverflow:"ellipsis"},R={fontSize:"0.65rem",color:"rgba(109, 40, 217, 0.75)",fontFamily:"monospace",paddingLeft:"0.5rem"},E={flex:1,display:"flex",flexDirection:"column",minHeight:0,backgroundColor:"#05070a"},T={display:"flex",justifyContent:"space-between",alignItems:"center",padding:"0.75rem 1rem",borderBottom:"1px solid var(--border)",backgroundColor:"rgba(15, 23, 42, 0.3)",flexShrink:0},P={fontSize:"0.75rem",color:"var(--muted)"},L={fontSize:"0.8rem",fontWeight:600,color:"#fff",display:"flex",alignItems:"center",gap:"0.4rem"},I={padding:"0.1rem 0.4rem",borderRadius:"4px",backgroundColor:"rgba(234, 179, 8, 0.12)",color:"#eab308",fontSize:"0.65rem",fontWeight:700,border:"1px solid rgba(234, 179, 8, 0.2)"},O={padding:"0.4rem 0.9rem",borderRadius:"6px",border:"none",backgroundColor:"var(--primary)",color:"#fff",fontSize:"0.8rem",fontWeight:600,transition:"all 0.2s ease"},D={height:"180px",borderBottom:"1px solid var(--border)",position:"relative",flexShrink:0},q={width:"100%",height:"100%",backgroundColor:"#080c14",border:"none",resize:"none",color:"#e2e8f0",fontFamily:"monospace",fontSize:"0.85rem",padding:"1rem",outline:"none",lineHeight:"1.4"},A={flex:1,display:"flex",flexDirection:"column",minHeight:0,padding:"1rem"},z={padding:"1rem",borderRadius:"8px",backgroundColor:"rgba(239, 68, 68, 0.08)",border:"1px solid rgba(239, 68, 68, 0.2)",overflowY:"auto"},B={margin:0,fontFamily:"monospace",fontSize:"0.8rem",color:"#f87171",whiteSpace:"pre-wrap"},F={marginTop:"1rem",padding:"0.75rem",borderRadius:"6px",backgroundColor:"rgba(0, 0, 0, 0.3)",border:"1px solid var(--border)"},M={display:"block",padding:"0.5rem",backgroundColor:"#090d16",borderRadius:"4px",fontFamily:"monospace",fontSize:"0.8rem",color:"var(--primary)",border:"1px solid var(--border)"},H={display:"flex",flexDirection:"column",height:"100%",minHeight:0},G={display:"flex",justifyContent:"space-between",fontSize:"0.75rem",color:"var(--muted)",marginBottom:"0.5rem"},$={flex:1,overflow:"auto",border:"1px solid var(--border)",borderRadius:"6px"},Y={width:"100%",borderCollapse:"collapse",fontFamily:"monospace",fontSize:"0.8rem"},U={padding:"0.5rem 0.75rem",textAlign:"left",backgroundColor:"#0f172a",borderBottom:"1px solid var(--border)",color:"#94a3b8",fontWeight:600,position:"sticky",top:0,zIndex:1},Q={padding:"0.4rem 0.75rem",borderBottom:"1px solid rgba(255, 255, 255, 0.03)",color:"#cbd5e1",whiteSpace:"nowrap"},J={backgroundColor:"transparent"},K={backgroundColor:"rgba(255, 255, 255, 0.01)"},V={flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--muted)",fontSize:"0.8rem",textAlign:"center"},X={flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"1rem"},Z={width:"24px",height:"24px",border:"3px solid rgba(109, 40, 217, 0.15)",borderTop:"3px solid var(--primary)",borderRadius:"50%",animation:"spin 1s linear infinite"},ee={width:"12px",height:"12px",border:"2px solid rgba(255, 255, 255, 0.1)",borderTop:"2px solid var(--muted)",borderRadius:"50%",animation:"spin 1s linear infinite"},et={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.7)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:999},es={width:"480px",backgroundColor:"#0d131f",borderRadius:"12px",border:"1px solid var(--border-focus)",padding:"1.5rem",boxShadow:"0 4px 24px rgba(0, 0, 0, 0.5)"},er={display:"flex",flexDirection:"column",gap:"0.35rem",marginBottom:"1rem"},ea={fontSize:"0.75rem",fontWeight:600,color:"var(--muted)"},en={padding:"0.5rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"#070a12",color:"#fff",outline:"none",fontSize:"0.8rem"},el={padding:"0.5rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"#070a12",color:"#fff",outline:"none",fontSize:"0.8rem"},eo={padding:"0.5rem",borderRadius:"6px",fontSize:"0.75rem",marginBottom:"1rem"},ei={display:"flex",justifyContent:"space-between",marginTop:"1.5rem"},ed={padding:"0.4rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--muted)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},ec={padding:"0.4rem 0.75rem",borderRadius:"6px",border:"none",backgroundColor:"transparent",color:"var(--muted)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},eu={padding:"0.4rem 0.75rem",borderRadius:"6px",border:"none",backgroundColor:"var(--primary)",color:"#fff",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"};if("u">typeof document){let e=document.createElement("style");e.innerHTML=`
2
+ @keyframes spin {
3
+ 0% { transform: rotate(0deg); }
4
+ 100% { transform: rotate(360deg); }
5
+ }
6
+ `,document.head.appendChild(e)}e.s(["default",0,function({workspaceRoot:e}){let[ep,em]=(0,s.useState)({global:[],workspace:[]}),[eh,eg]=(0,s.useState)(null),[ex,ef]=(0,s.useState)(!0),[ey,eb]=(0,s.useState)([]),[ej,ev]=(0,s.useState)(null),[e_,ew]=(0,s.useState)({}),[ek,eS]=(0,s.useState)(!1),[eC,eN]=(0,s.useState)("SELECT * FROM sqlite_master;"),[eW,eR]=(0,s.useState)(!1),[eE,eT]=(0,s.useState)(null),[eP,eL]=(0,s.useState)(null),[eI,eO]=(0,s.useState)(!1),[eD,eq]=(0,s.useState)(!1),[eA,ez]=(0,s.useState)({id:"",name:"",type:"sqlite",filepath:"./dev.db",host:"localhost",port:5432,database:"postgres",username:"postgres",password:"",ssl:!1,readOnly:!0}),[eB,eF]=(0,s.useState)(!1),[eM,eH]=(0,s.useState)(null),eG=async()=>{try{let t=await fetch(`/api/sql/connections?root=${encodeURIComponent(e)}`);if(t.ok){let e=await t.json();e.success&&(em({global:e.global||[],workspace:e.workspace||[]}),eg(e.activeId),ef(e.isActiveGlobal))}}catch(e){console.error("Failed to load connection profiles:",e)}},e$=async()=>{if(!eh)return void eb([]);eS(!0);try{let t=await fetch(`/api/sql/schema?action=list_tables&root=${encodeURIComponent(e)}`);if(t.ok){let e=await t.json();e.success?(eb(e.tables||[]),eT(null)):eT(e.error||"Failed to load database schema.")}else{let e=await t.json();eT(e.error||"Failed to load database schema.")}}catch(e){console.error("Failed to load schema:",e)}finally{eS(!1)}},eY=async t=>{if(e_[t])return void ev(ej===t?null:t);try{let s=await fetch(`/api/sql/schema?action=describe_table&table=${encodeURIComponent(t)}&root=${encodeURIComponent(e)}`);if(s.ok){let e=await s.json();e.success&&(ew(s=>({...s,[t]:e.columns})),ev(t))}}catch(e){console.error(`Failed to load columns for table ${t}:`,e)}};(0,s.useEffect)(()=>{eG()},[e]),(0,s.useEffect)(()=>{e$(),eL(null),ev(null),ew({});let e=ex?ep.global.find(e=>e.id===eh):ep.workspace.find(e=>e.id===eh);e&&("sqlite"===e.type?eN("SELECT name, type FROM sqlite_master WHERE type='table';"):"mssql"===e.type?eN("SELECT * FROM sys.tables;"):eN("SELECT * FROM information_schema.tables LIMIT 10;"))},[eh,ex,ep.global.length,ep.workspace.length]);let eU=async(t,s)=>{try{(await fetch("/api/sql/connections",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"set_active",profileId:t,isGlobal:s,root:e})})).ok&&(eg(t),ef(s))}catch(e){console.error("Failed to set active profile:",e)}},eQ=async()=>{eH(null);try{let t=await fetch("/api/sql/connections",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"test",profile:eA,root:e})}),s=await t.json();s.success?eH({success:!0,message:"Connection test successful!"}):eH({success:!1,message:s.error||"Connection test failed."})}catch(e){eH({success:!1,message:e.message||"Failed to make test query."})}},eJ=async t=>{if(t.preventDefault(),!eA.name||!eA.type)return;eF(!0);let s=eA.id||`profile_${Math.random().toString(36).substring(7)}`,r={...eA,id:s,name:eA.name,type:eA.type};try{(await fetch("/api/sql/connections",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"save",profile:r,isGlobal:eD,root:e})})).ok&&(await eG(),eO(!1),eh||eU(s,eD))}catch(e){console.error("Failed to save profile:",e)}finally{eF(!1)}},eK=async(t,s)=>{if(confirm("Are you sure you want to delete this connection profile?"))try{(await fetch("/api/sql/connections",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",profileId:t,isGlobal:s,root:e})})).ok&&(await eG(),eh===t&&eg(null))}catch(e){console.error("Failed to delete connection profile:",e)}},eV=async()=>{if(eC.trim()&&eh){eR(!0),eT(null),eL(null);try{let t=await fetch("/api/sql/query",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sql:eC.trim(),root:e})}),s=await t.json();t.ok&&s.success?(eL({rows:s.rows||[],fields:s.fields||[],durationMs:s.durationMs||0,affectedRows:s.affectedRows}),(eC.toLowerCase().includes("create table")||eC.toLowerCase().includes("drop table")||eC.toLowerCase().includes("alter table"))&&e$()):eT(s.error||"Failed to execute query.")}catch(e){eT(e.message||"An unexpected error occurred during execution.")}finally{eR(!1)}}},eX=ex?ep.global.find(e=>e.id===eh):ep.workspace.find(e=>e.id===eh);return(0,t.jsxs)("div",{style:a,children:[(0,t.jsxs)("div",{style:n,children:[(0,t.jsxs)("div",{style:l,children:[(0,t.jsxs)("div",{style:o,children:[(0,t.jsx)("span",{style:i,children:"Connections"}),(0,t.jsx)("button",{style:d,onClick:()=>{eH(null),ez({id:"",name:"",type:"sqlite",filepath:"./dev.db",host:"localhost",port:5432,database:"postgres",username:"postgres",password:"",ssl:!1,readOnly:!0}),eq(!1),eO(!0)},title:"Add Database Connection Profile",children:"➕ Add"})]}),(0,t.jsxs)("div",{style:c,children:[0===ep.global.length&&0===ep.workspace.length&&(0,t.jsx)("div",{style:b,children:"No connections configured. Add one to start."}),ep.workspace.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:u,children:"WORKSPACE CONNECTIONS"}),ep.workspace.map(e=>(0,t.jsxs)("div",{style:{...p,...eh===e.id&&!ex?m:{}},onClick:()=>eU(e.id,!1),children:[(0,t.jsxs)("div",{style:h,children:[(0,t.jsxs)("span",{style:g,children:["📁 ",e.name]}),(0,t.jsx)("span",{style:x,children:e.type})]}),(0,t.jsx)("button",{style:f,onClick:t=>{t.stopPropagation(),eK(e.id,!1)},children:"✖"})]},e.id))]}),ep.global.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:u,children:"GLOBAL CONNECTIONS"}),ep.global.map(e=>(0,t.jsxs)("div",{style:{...p,...eh===e.id&&ex?m:{}},onClick:()=>eU(e.id,!0),children:[(0,t.jsxs)("div",{style:h,children:[(0,t.jsxs)("span",{style:g,children:["🌐 ",e.name]}),(0,t.jsx)("span",{style:x,children:e.type})]}),(0,t.jsx)("button",{style:f,onClick:t=>{t.stopPropagation(),eK(e.id,!0)},children:"✖"})]},e.id))]})]})]}),(0,t.jsxs)("div",{style:{...l,flex:1,borderTop:"1px solid var(--border)"},children:[(0,t.jsxs)("div",{style:o,children:[(0,t.jsx)("span",{style:i,children:"Schema Tables"}),ek&&(0,t.jsx)("span",{style:ee})]}),(0,t.jsxs)("div",{style:y,children:[!eh&&(0,t.jsx)("div",{style:b,children:"Select an active connection to view tables."}),eh&&0===ey.length&&!ek&&(0,t.jsx)("div",{style:b,children:"No tables found in database schema."}),ey.map(e=>(0,t.jsxs)("div",{style:j,children:[(0,t.jsxs)("div",{style:v,onClick:()=>eY(e.name),children:[(0,t.jsx)("span",{style:_,children:"view"===e.type?"👁️":"📊"}),(0,t.jsx)("span",{style:w,children:e.name}),(0,t.jsx)("span",{style:k,children:ej===e.name?"▼":"▶"})]}),ej===e.name&&e_[e.name]&&(0,t.jsx)("div",{style:S,children:e_[e.name].map(e=>(0,t.jsxs)("div",{style:C,children:[(0,t.jsx)("span",{style:N,children:e.isPrimaryKey?"🔑":e.isForeignKey?"🔗":"▫"}),(0,t.jsx)("span",{style:W,title:e.type,children:e.name}),(0,t.jsx)("span",{style:R,children:e.type.toLowerCase().substring(0,12)})]},e.name))})]},e.name))]})]})]}),(0,t.jsxs)("div",{style:E,children:[(0,t.jsxs)("div",{style:T,children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,t.jsx)("span",{style:P,children:"Active Connection:"}),eX?(0,t.jsxs)("span",{style:L,children:[ex?"🌐":"📁"," ",eX.name," (",eX.type,")",eX.readOnly&&(0,t.jsx)("span",{style:I,children:"Read-Only"})]}):(0,t.jsx)("span",{style:{...L,color:"var(--danger)"},children:"No Connection Selected"})]}),(0,t.jsx)("button",{style:{...O,opacity:!eh||eW?.6:1,cursor:!eh||eW?"not-allowed":"pointer"},onClick:eV,disabled:!eh||eW,children:eW?"⌛ Running...":"⚡ Execute Query (F5)"})]}),(0,t.jsx)("div",{style:D,children:(0,t.jsx)("textarea",{style:q,value:eC,onChange:e=>eN(e.target.value),placeholder:"Write your SQL query script here...",onKeyDown:e=>{("F5"===e.key||e.ctrlKey&&"Enter"===e.key)&&(e.preventDefault(),eV())}})}),(0,t.jsxs)("div",{style:A,children:[eE&&(0,t.jsxs)("div",{style:z,children:[(0,t.jsx)("h4",{style:{margin:"0 0 0.5rem 0",color:"var(--danger)"},children:"⚠️ Execution Error"}),(0,t.jsx)("pre",{style:B,children:eE}),eE.includes("not installed")&&(0,t.jsxs)("div",{style:F,children:[(0,t.jsx)("p",{style:{margin:"0 0 0.5rem 0"},children:"To resolve this, run this installer command in your workspace terminal:"}),(0,t.jsx)("code",{style:M,children:eX?.type==="sqlite"?"npm install better-sqlite3":eX?.type==="postgres"?"npm install pg":eX?.type==="mysql"?"npm install mysql2":"npm install mssql"})]})]}),eP&&(0,t.jsxs)("div",{style:H,children:[(0,t.jsxs)("div",{style:G,children:[(0,t.jsxs)("span",{children:["Query completed."," ",void 0!==eP.affectedRows?`Affected rows: ${eP.affectedRows}`:`Returned ${eP.rows.length} rows`]}),(0,t.jsxs)("span",{children:["Duration: ",eP.durationMs,"ms"]})]}),eP.rows.length>0?(0,t.jsx)("div",{style:$,children:(0,t.jsxs)("table",{style:Y,children:[(0,t.jsx)("thead",{children:(0,t.jsx)("tr",{children:eP.fields.map(e=>(0,t.jsx)("th",{style:U,children:e},e))})}),(0,t.jsx)("tbody",{children:eP.rows.map((e,s)=>(0,t.jsx)("tr",{style:s%2==0?J:K,children:eP.fields.map(s=>(0,t.jsx)("td",{style:Q,children:null===e[s]?"NULL":"object"==typeof e[s]?JSON.stringify(e[s]):String(e[s])},s))},s))})]})}):void 0===eP.affectedRows&&(0,t.jsx)("div",{style:V,children:"Query executed successfully, but returned 0 results."})]}),!eE&&!eP&&!eW&&(0,t.jsx)("div",{style:V,children:"Write a query script and click Execute to view table records."}),eW&&(0,t.jsxs)("div",{style:X,children:[(0,t.jsx)("span",{style:Z}),(0,t.jsx)("span",{style:{color:"var(--muted)"},children:"Running database statement..."})]})]})]}),eI&&"u">typeof document&&(0,r.createPortal)((0,t.jsx)("div",{style:et,children:(0,t.jsxs)("div",{style:es,children:[(0,t.jsxs)("h3",{style:{margin:"0 0 1rem 0",display:"flex",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:"🔌 Add Database Profile"}),(0,t.jsx)("span",{style:{cursor:"pointer"},onClick:()=>eO(!1),children:"✖"})]}),(0,t.jsxs)("form",{onSubmit:eJ,children:[(0,t.jsxs)("div",{style:er,children:[(0,t.jsx)("label",{style:ea,children:"Profile Name"}),(0,t.jsx)("input",{style:en,type:"text",required:!0,value:eA.name,onChange:e=>ez(t=>({...t,name:e.target.value})),placeholder:"e.g. Local Postgres, Dev SQLite"})]}),(0,t.jsxs)("div",{style:er,children:[(0,t.jsx)("label",{style:ea,children:"Scope Level"}),(0,t.jsxs)("div",{style:{display:"flex",gap:"1rem"},children:[(0,t.jsxs)("label",{style:{cursor:"pointer",display:"flex",alignItems:"center",gap:"0.25rem"},children:[(0,t.jsx)("input",{type:"radio",checked:!eD,onChange:()=>eq(!1)}),"Workspace Local"]}),(0,t.jsxs)("label",{style:{cursor:"pointer",display:"flex",alignItems:"center",gap:"0.25rem"},children:[(0,t.jsx)("input",{type:"radio",checked:eD,onChange:()=>eq(!0)}),"Global User Profile"]})]})]}),(0,t.jsxs)("div",{style:er,children:[(0,t.jsx)("label",{style:ea,children:"Database Type"}),(0,t.jsxs)("select",{style:el,value:eA.type,onChange:e=>{let t=e.target.value,s=5432;"mysql"===t&&(s=3306),"mssql"===t&&(s=1433),ez(e=>({...e,type:t,filepath:"sqlite"===t?"./dev.db":void 0,port:"sqlite"!==t?s:void 0,database:"sqlite"===t?void 0:"mssql"===t?"master":"postgres"===t?"postgres":"",username:"sqlite"===t?void 0:"mssql"===t?"sa":"postgres"===t?"postgres":"root"}))},children:[(0,t.jsx)("option",{value:"sqlite",children:"SQLite (Local File)"}),(0,t.jsx)("option",{value:"postgres",children:"PostgreSQL"}),(0,t.jsx)("option",{value:"mysql",children:"MySQL"}),(0,t.jsx)("option",{value:"mssql",children:"Microsoft SQL Server"})]})]}),"sqlite"===eA.type?(0,t.jsxs)("div",{style:er,children:[(0,t.jsx)("label",{style:ea,children:"Database File Path"}),(0,t.jsx)("input",{style:en,type:"text",required:!0,value:eA.filepath||"",onChange:e=>ez(t=>({...t,filepath:e.target.value})),placeholder:"Relative (e.g. ./data/dev.db) or Absolute path"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{display:"flex",gap:"1rem"},children:[(0,t.jsxs)("div",{style:{...er,flex:3},children:[(0,t.jsx)("label",{style:ea,children:"Host IP Address"}),(0,t.jsx)("input",{style:en,type:"text",required:!0,value:eA.host||"",onChange:e=>ez(t=>({...t,host:e.target.value})),placeholder:"localhost or IP"})]}),(0,t.jsxs)("div",{style:{...er,flex:1},children:[(0,t.jsx)("label",{style:ea,children:"Port"}),(0,t.jsx)("input",{style:en,type:"number",required:!0,value:eA.port||0,onChange:e=>ez(t=>({...t,port:parseInt(e.target.value)}))})]})]}),(0,t.jsxs)("div",{style:er,children:[(0,t.jsx)("label",{style:ea,children:"Database Name"}),(0,t.jsx)("input",{style:en,type:"text",required:!0,value:eA.database||"",onChange:e=>ez(t=>({...t,database:e.target.value}))})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:"1rem"},children:[(0,t.jsxs)("div",{style:{...er,flex:1},children:[(0,t.jsx)("label",{style:ea,children:"Username"}),(0,t.jsx)("input",{style:en,type:"text",required:!0,value:eA.username||"",onChange:e=>ez(t=>({...t,username:e.target.value}))})]}),(0,t.jsxs)("div",{style:{...er,flex:1},children:[(0,t.jsx)("label",{style:ea,children:"Password"}),(0,t.jsx)("input",{style:en,type:"password",value:eA.password||"",onChange:e=>ez(t=>({...t,password:e.target.value}))})]})]}),("postgres"===eA.type||"mssql"===eA.type)&&(0,t.jsx)("div",{style:er,children:(0,t.jsxs)("label",{style:{cursor:"pointer",display:"flex",alignItems:"center",gap:"0.25rem"},children:[(0,t.jsx)("input",{type:"checkbox",checked:!!eA.ssl,onChange:e=>ez(t=>({...t,ssl:e.target.checked}))}),"Require SSL Secure Connection"]})})]}),(0,t.jsx)("div",{style:er,children:(0,t.jsxs)("label",{style:{cursor:"pointer",display:"flex",alignItems:"center",gap:"0.25rem"},children:[(0,t.jsx)("input",{type:"checkbox",checked:!!eA.readOnly,onChange:e=>ez(t=>({...t,readOnly:e.target.checked}))}),"Enforce Read-Only Connection (Disable mutations)"]})}),eM&&(0,t.jsx)("div",{style:{...eo,backgroundColor:eM.success?"rgba(16, 185, 129, 0.12)":"rgba(239, 68, 68, 0.12)",border:eM.success?"1px solid var(--success)":"1px solid var(--danger)",color:eM.success?"var(--success)":"var(--danger)"},children:eM.message}),(0,t.jsxs)("div",{style:ei,children:[(0,t.jsx)("button",{type:"button",style:ed,onClick:eQ,children:"🔍 Test Connection"}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,t.jsx)("button",{type:"button",style:ec,onClick:()=>eO(!1),children:"Cancel"}),(0,t.jsx)("button",{type:"submit",style:eu,disabled:eB,children:eB?"Saving...":"Save Profile"})]})]})]})]})}),document.body)]})}])},67585,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"BailoutToCSR",{enumerable:!0,get:function(){return a}});let r=e.r(32061);function a({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new r.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},9885,(e,t,s)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"encodeURIPath",{enumerable:!0,get:function(){return r}})},52157,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"PreloadChunks",{enumerable:!0,get:function(){return i}});let r=e.r(43476),a=e.r(74080),n=e.r(63599),l=e.r(9885),o=e.r(43369);function i({moduleIds:e}){if("u">typeof window)return null;let t=n.workAsyncStorage.getStore();if(void 0===t)return null;let s=[];if(t.reactLoadableManifest&&e){let r=t.reactLoadableManifest;for(let t of e){if(!r[t])continue;let e=r[t].files;s.push(...e)}}if(0===s.length)return null;let d=(0,o.getAssetTokenQuery)();return(0,r.jsx)(r.Fragment,{children:s.map(e=>{let s=`${t.assetPrefix}/_next/${(0,l.encodeURIPath)(e)}${d}`;return e.endsWith(".css")?(0,r.jsx)("link",{precedence:"dynamic",href:s,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,a.preload)(s,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return d}});let r=e.r(43476),a=e.r(71645),n=e.r(67585),l=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 t={...i,...e},s=(0,a.lazy)(()=>t.loader().then(o)),d=t.loading;function c(e){let o=d?(0,r.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,i=!t.ssr||!!t.loading,c=i?a.Suspense:a.Fragment,u=t.ssr?(0,r.jsxs)(r.Fragment,{children:["u"<typeof window?(0,r.jsx)(l.PreloadChunks,{moduleIds:t.modules}):null,(0,r.jsx)(s,{...e})]}):(0,r.jsx)(n.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(s,{...e})});return(0,r.jsx)(c,{...i?{fallback:o}:{},children:u})}return c.displayName="LoadableComponent",c}},70703,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return a}});let r=e.r(55682)._(e.r(69093));function a(e,t){let s={};"function"==typeof e&&(s.loader=e);let a={...s,...t};return(0,r.default)({...a,modules:a.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),t.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",agentStateBadge:"page-module___8aEwW__agentStateBadge",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","pulse-attention":"page-module___8aEwW__pulse-attention","pulse-thinking":"page-module___8aEwW__pulse-thinking",pulseDot:"page-module___8aEwW__pulseDot",quickLaunchBtn:"page-module___8aEwW__quickLaunchBtn",sectionTitle:"page-module___8aEwW__sectionTitle",sidePanel:"page-module___8aEwW__sidePanel","state-complete":"page-module___8aEwW__state-complete","state-idle":"page-module___8aEwW__state-idle","state-needs-input":"page-module___8aEwW__state-needs-input","state-thinking":"page-module___8aEwW__state-thinking",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 t=e.i(43476),s=e.i(71645),r=e.i(70703),a=e.i(20897),n=e.i(66381);let l=(0,r.default)(()=>e.A(33779),{loadableGenerated:{modules:[37314]},ssr:!1,loading:()=>(0,t.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,t.jsx)("span",{children:"Initializing terminal emulator..."})})}),o=(0,r.default)(()=>e.A(39429),{loadableGenerated:{modules:[1985]},ssr:!1,loading:()=>(0,t.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,t.jsx)("span",{style:{color:"var(--muted)"},children:"Initializing prompt editor..."})})}),i=(0,r.default)(()=>e.A(56915),{loadableGenerated:{modules:[99026]},ssr:!1}),d=(0,r.default)(()=>e.A(78716),{loadableGenerated:{modules:[9949]},ssr:!1}),c=(0,r.default)(()=>e.A(33789),{loadableGenerated:{modules:[20032]},ssr:!1}),u=(0,r.default)(()=>e.A(78003),{loadableGenerated:{modules:[97722]},ssr:!1});e.s(["default",0,function(){let[e,r]=(0,s.useState)([]),[p,m]=(0,s.useState)(null),[h,g]=(0,s.useState)(!1),[x,f]=(0,s.useState)(!1),[y,b]=(0,s.useState)(!1),[j,v]=(0,s.useState)(!1),[_,w]=(0,s.useState)(!1),[k,S]=(0,s.useState)(!1),[C,N]=(0,s.useState)(""),[W,R]=(0,s.useState)(3001),[E,T]=(0,s.useState)("0.2.19"),[P,L]=(0,s.useState)(null),I=e.filter(e=>"workspace-terminal"!==e.id),O=e.find(e=>e.id===p),D=I.some(e=>("claude-docker"===e.type||"aider-docker"===e.type)&&"running"===e.status),q=I.some(e=>"claude-ssh"===e.type&&"running"===e.status),A=async()=>{try{let e=await fetch("/api/sessions"),t=await e.json();t.sessions&&r(t.sessions),t.wsPort&&R(t.wsPort),t.originalCwd&&N(t.originalCwd),t.version&&T(t.version)}catch(e){console.error("Failed to fetch sessions:",e)}},z=async()=>{try{let e=await fetch("/api/recents");if(e.ok){let t=await e.json();t.success&&t.recents&&t.recents.lastSession&&L(t.recents.lastSession)}}catch(e){console.error("Failed to fetch recents:",e)}};(0,s.useEffect)(()=>{(async()=>{await A(),await z()})(),"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js").then(e=>console.log("Service Worker registered:",e.scope)).catch(e=>console.error("Service Worker registration failed:",e));let e=setInterval(A,4e3);return()=>clearInterval(e)},[]);let B=async(e,t,s,r)=>{g(!0);try{let a=t;a||("claude"===e?a="Claude Local":"claude-docker"===e?a="Claude Docker":"claude-ssh"===e?a="Claude SSH":"aider"===e?a="Aider Local":"aider-docker"===e?a="Aider Docker":"mock"===e&&(a="Mock Session"));let n={type:e,name:a,workspaceRoot:s,scopedDirs:r};if(("aider"===e||"aider-docker"===e)&&!s)try{let e=await fetch("/api/context/aider");if(e.ok){let t=await e.json();t.success&&t.config&&(n.workspaceRoot=t.config.workspaceRoot,n.scopedDirs=t.config.scopedDirs)}}catch(e){console.error("Failed to load aider configuration before launch:",e)}let l=await fetch("/api/sessions/launch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)}),o=await l.json();o.success&&(await A(),m(o.session.id),L({type:e,name:a,workspaceRoot:s,scopedDirs:r}))}catch(e){console.error("Failed to launch session:",e)}finally{g(!1)}},F=async(e,t=!1)=>{try{let s=await fetch("/api/sessions/stop",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,delete:t})});(await s.json()).success&&(t&&p===e&&m(null),await A())}catch(e){console.error("Failed to stop session:",e)}};return(0,t.jsxs)("div",{className:`${a.default.container} ${O?a.default.containerActive:""}`,children:[(0,t.jsxs)("header",{className:a.default.header,children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1.5rem"},children:[(0,t.jsx)("img",{src:"/logo.png",alt:"NeuralLoom Logo",style:{width:"160px",height:"160px",borderRadius:"16px",objectFit:"contain"}}),(0,t.jsxs)("div",{className:a.default.logoArea,children:[(0,t.jsx)("h1",{className:a.default.title,style:{margin:0,lineHeight:1.1},children:"NeuralLoom"}),(0,t.jsx)("span",{className:a.default.subtitle,children:"Unified AI Orchestrator & Context Bridge"})]})]}),(0,t.jsxs)("div",{className:a.default.statusIndicator,children:[(0,t.jsx)("span",{className:a.default.pulseDot}),(0,t.jsx)("span",{children:"Orchestrator Online"})]})]}),O?(0,t.jsx)("div",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column"},children:(0,t.jsx)(u,{sessionId:O.id,workspaceRoot:O.workspaceRoot||"",scopedDirs:O.scopedDirs||[],onClose:()=>m(null),sessions:e,onSwitchSession:e=>m(e),onRefreshSessions:A,wsPort:W})}):(0,t.jsxs)("div",{className:a.default.dashboardGrid,children:[(0,t.jsxs)("main",{className:a.default.mainPanel,children:[(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:a.default.sectionTitle,children:"Active AI Agents"}),0===I.length?(0,t.jsxs)("div",{className:"card",style:{padding:"3rem 1.5rem",textAlign:"center"},children:[(0,t.jsx)("p",{style:{color:"var(--muted)",marginBottom:"1.5rem"},children:"No active agent sessions in this workspace. Launch a Claude or Aider agent session to begin."}),(0,t.jsxs)("div",{style:{display:"flex",gap:"1rem",justifyContent:"center",flexWrap:"wrap"},children:[P&&(0,t.jsx)("button",{className:a.default.quickLaunchBtn,onClick:()=>{B(P.type,P.name,P.workspaceRoot,P.scopedDirs)},disabled:h,style:{background:"linear-gradient(135deg, hsl(38, 92%, 50%) 0%, hsl(0, 84%, 60%) 100%)",border:"none",maxWidth:"200px"},title:`Re-launch: ${P.name||P.type}`,children:"⚡ Re-launch Last Session"}),(0,t.jsx)("button",{className:a.default.quickLaunchBtn,onClick:()=>{S(!1),w(!0)},disabled:h,style:{background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",border:"none",maxWidth:"200px"},children:"Launch Claude PTY"}),(0,t.jsx)("button",{className:a.default.quickLaunchBtn,onClick:()=>{v(!1),b(!0)},disabled:h,style:{background:"linear-gradient(135deg, hsl(210, 80%, 45%) 0%, hsl(262, 80%, 55%) 100%)",border:"none",maxWidth:"200px"},children:"Launch Aider PTY"})]}),(0,t.jsxs)("div",{style:{marginTop:"1.5rem",fontSize:"0.75rem",color:"var(--muted)"},children:["Want to verify layout features first?"," ",(0,t.jsx)("span",{onClick:()=>B("mock"),style:{color:"var(--primary)",cursor:"pointer",textDecoration:"underline"},children:"Start simulated sandbox session"})]})]}):(0,t.jsx)("div",{className:a.default.agentGrid,children:I.map(e=>(0,t.jsxs)("div",{className:`${a.default.agentCard} card ${p===e.id?a.default.activeBorder:""}`,children:[(0,t.jsxs)("div",{className:a.default.agentHeader,children:[(0,t.jsx)("span",{className:a.default.agentName,children:e.name}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.35rem",alignItems:"center"},children:["running"===e.status&&e.agentState&&(0,t.jsxs)("span",{className:`${a.default.agentStateBadge} ${a.default["state-"+e.agentState]}`,children:["thinking"===e.agentState&&"💭 thinking","needs-input"===e.agentState&&"⚠️ needs input","complete"===e.agentState&&"✅ complete","idle"===e.agentState&&"💤 idle"]}),(0,t.jsx)("span",{className:`${a.default.agentBadge} ${"stopped"===e.status?a.default.stoppedBadge:""}`,children:e.status})]})]}),(0,t.jsxs)("div",{className:a.default.cardBody,children:[(0,t.jsxs)("p",{style:{fontSize:"0.825rem",color:"var(--muted)"},children:["ID: ",(0,t.jsx)("code",{style:{fontSize:"0.75rem"},children:e.id.substring(0,8)}),(0,t.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,t.jsx)("br",{}),"Logs: ",e.logsCount," captured lines"]}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem",marginTop:"1rem"},children:["running"===e.status?(0,t.jsx)("button",{onClick:()=>F(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,t.jsx)("button",{onClick:()=>F(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,t.jsx)("button",{onClick:()=>m(e.id),style:{flex:2,padding:"0.4rem 0.6rem",borderRadius:"6px",border:"none",backgroundColor:p===e.id?"var(--border-focus)":"var(--primary)",fontSize:"0.75rem",fontWeight:600,color:"#fff"},children:p===e.id?"Connected":"Open Session"})]})]})]},e.id))})]}),p&&"workspace-terminal"!==p&&(0,t.jsxs)("section",{className:"card",style:{display:"flex",flexDirection:"column",border:"1px solid var(--border-focus)"},children:[(0,t.jsxs)("div",{className:a.default.agentHeader,style:{justifyContent:"space-between",background:"rgba(109, 40, 217, 0.08)"},children:[(0,t.jsxs)("span",{style:{fontWeight:600,display:"flex",alignItems:"center",gap:"0.5rem"},children:["🖥️ Console Bridge — ",e.find(e=>e.id===p)?.name]}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[e.find(e=>e.id===p)?.status==="stopped"&&(0,t.jsx)("button",{onClick:async()=>{try{let e=await fetch("/api/sessions/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:p})});if(e.ok)await A();else{let t=await e.json();alert(t.error||"Failed to restart session.")}}catch(e){console.error("Failed to restart session:",e),alert("Network error: failed to restart session.")}},style:{padding:"0.2rem 0.5rem",borderRadius:"4px",border:"1px solid #eab308",backgroundColor:"rgba(234, 179, 8, 0.15)",color:"#eab308",fontSize:"0.7rem",fontWeight:600,cursor:"pointer",boxShadow:"0 0 8px rgba(234, 179, 8, 0.2)"},title:"Restart the stopped session process runner",children:"⚡ Restart Session"}),(0,t.jsx)("button",{onClick:()=>m(null),style:{border:"none",background:"none",color:"var(--muted)",cursor:"pointer",fontSize:"0.75rem"},children:"Close Panel ✖"})]})]}),(0,t.jsx)(l,{sessionId:p,wsPort:W})]}),(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:a.default.sectionTitle,children:"Workspace Shell Terminal"}),(0,t.jsxs)("div",{className:"card",style:{display:"flex",flexDirection:"column",border:"1px solid var(--border)",padding:0},children:[(0,t.jsxs)("div",{className:a.default.agentHeader,style:{justifyContent:"space-between",background:"rgba(255, 255, 255, 0.02)"},children:[(0,t.jsxs)("span",{style:{fontWeight:600,display:"flex",alignItems:"center",gap:"0.5rem",fontSize:"0.85rem"},children:["💻 Local Workspace Shell (CWD: ",C||"root",")"]}),(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)"},children:"Pre-configured environment"})]}),(0,t.jsx)(l,{sessionId:"workspace-terminal",height:"300px",wsPort:W})]})]}),(0,t.jsxs)("section",{style:{marginTop:"2rem"},children:[(0,t.jsx)("h2",{className:a.default.sectionTitle,children:"Shared Context Hub & Slash Commands"}),(0,t.jsxs)("div",{className:a.default.contextList,children:[(0,t.jsxs)("div",{className:`${a.default.contextItem} card`,children:[(0,t.jsxs)("div",{className:a.default.contextMeta,children:[(0,t.jsx)("span",{className:a.default.contextTitle,children:"Staged Context & System Rules (/ccc)"}),(0,t.jsx)("span",{className:a.default.contextDetails,children:"Compiles AGENTS.md guidelines and project files folder hierarchy map."})]}),(0,t.jsx)("button",{onClick:async()=>{p&&await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:p,command:"/ccc"})})},disabled:!p,style:{padding:"0.4rem 0.8rem",borderRadius:"6px",border:"1px solid var(--primary)",backgroundColor:"transparent",color:"var(--primary)",fontSize:"0.75rem",fontWeight:600,opacity:p?1:.5,cursor:p?"pointer":"not-allowed"},children:"🚀 Mount Context (/ccc)"})]}),(0,t.jsxs)("div",{className:`${a.default.contextItem} card`,children:[(0,t.jsxs)("div",{className:a.default.contextMeta,children:[(0,t.jsx)("span",{className:a.default.contextTitle,children:"Staged Developer Prompt (/ccp)"}),(0,t.jsx)("span",{className:a.default.contextDetails,children:"Executes instructions written in .ai/neural-loom/cprompt.md."})]}),(0,t.jsx)("button",{onClick:async()=>{p&&await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:p,command:"/ccp"})})},disabled:!p,style:{padding:"0.4rem 0.8rem",borderRadius:"6px",border:"1px solid var(--success)",backgroundColor:"transparent",color:"var(--success)",fontSize:"0.75rem",fontWeight:600,opacity:p?1:.5,cursor:p?"pointer":"not-allowed"},children:"⚡ Trigger Prompt (/ccp)"})]})]}),(0,t.jsx)(o,{})]}),(0,t.jsxs)("section",{style:{marginTop:"2rem"},children:[(0,t.jsx)("h2",{className:a.default.sectionTitle,children:"Built-in Database Explorer & SQL Client"}),(0,t.jsx)("div",{className:"card",style:{padding:0,overflow:"hidden",height:"480px",border:"1px solid var(--border)"},children:(0,t.jsx)(n.default,{workspaceRoot:C||""})})]})]}),(0,t.jsxs)("aside",{className:a.default.sidePanel,children:[(0,t.jsxs)("section",{children:[(0,t.jsx)("h2",{className:a.default.sectionTitle,children:"Execution Environments"}),(0,t.jsxs)("div",{className:a.default.envGrid,children:[(0,t.jsxs)("div",{className:a.default.envRow,children:[(0,t.jsx)("span",{className:a.default.envName,children:"💻 Local host OS"}),(0,t.jsx)("span",{className:a.default.envStatus,style:{color:"var(--success)"},children:"Active"})]}),(0,t.jsxs)("div",{className:a.default.envRow,style:{opacity:D?1:.6},children:[(0,t.jsx)("span",{className:a.default.envName,children:"🐳 Docker Sandbox"}),(0,t.jsx)("span",{className:a.default.envStatus,style:{color:D?"var(--success)":"var(--muted)"},children:D?"Active":"Not Mounted"})]}),(0,t.jsxs)("div",{className:a.default.envRow,style:{opacity:q?1:.6},children:[(0,t.jsx)("span",{className:a.default.envName,children:"🌐 Remote VM (SSH)"}),(0,t.jsx)("span",{className:a.default.envStatus,style:{color:q?"var(--success)":"var(--muted)"},children:q?"Active":"Disconnected"})]})]})]}),(0,t.jsxs)("section",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:[(0,t.jsxs)("button",{className:a.default.quickLaunchBtn,onClick:()=>{S(!1),w(!0)},disabled:h,style:{background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",border:"none"},children:[(0,t.jsx)("span",{children:"🤖"}),(0,t.jsx)("span",{children:"Launch Claude PTY"})]}),(0,t.jsxs)("button",{className:a.default.quickLaunchBtn,onClick:()=>{S(!0),w(!0)},disabled:h,style:{background:"linear-gradient(135deg, hsl(170, 72%, 40%) 0%, hsl(195, 100%, 40%) 100%)",border:"none"},children:[(0,t.jsx)("span",{children:"🐳"}),(0,t.jsx)("span",{children:"Launch Docker PTY"})]}),(0,t.jsxs)("button",{className:a.default.quickLaunchBtn,onClick:()=>f(!0),disabled:h,style:{background:"linear-gradient(135deg, hsl(38, 92%, 50%) 0%, hsl(0, 84%, 60%) 100%)",border:"none"},children:[(0,t.jsx)("span",{children:"🌐"}),(0,t.jsx)("span",{children:"Launch SSH PTY"})]}),(0,t.jsxs)("button",{className:a.default.quickLaunchBtn,onClick:()=>{v(!1),b(!0)},disabled:h,style:{background:"linear-gradient(135deg, hsl(210, 80%, 45%) 0%, hsl(262, 80%, 55%) 100%)",border:"none"},children:[(0,t.jsx)("span",{children:"🐍"}),(0,t.jsx)("span",{children:"Launch Aider PTY"})]}),(0,t.jsxs)("button",{className:a.default.quickLaunchBtn,onClick:()=>{v(!0),b(!0)},disabled:h,style:{background:"linear-gradient(135deg, hsl(195, 100%, 40%) 0%, hsl(262, 80%, 55%) 100%)",border:"none"},children:[(0,t.jsx)("span",{children:"🐳"}),(0,t.jsx)("span",{children:"Launch Aider Docker"})]})]}),(0,t.jsxs)("section",{className:"card",style:{padding:"1.5rem",display:"flex",flexDirection:"column",gap:"0.75rem"},children:[(0,t.jsx)("h3",{style:{fontSize:"1rem",fontWeight:700},children:"Quick Actions"}),(0,t.jsxs)("ul",{style:{listStyle:"none",fontSize:"0.875rem",display:"flex",flexDirection:"column",gap:"0.5rem",color:"var(--muted)"},children:[(0,t.jsxs)("li",{style:{display:"flex",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:"Configure global API Keys"}),(0,t.jsx)("span",{style:{color:"var(--primary)",cursor:"pointer"},children:"→"})]}),(0,t.jsxs)("li",{style:{display:"flex",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:"Edit rules templates"}),(0,t.jsx)("span",{style:{color:"var(--primary)",cursor:"pointer"},children:"→"})]}),(0,t.jsxs)("li",{style:{display:"flex",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:"Inspect process locks"}),(0,t.jsx)("span",{style:{color:"var(--primary)",cursor:"pointer"},children:"→"})]})]}),(0,t.jsxs)("div",{style:{marginTop:"1.2rem",textAlign:"center",fontSize:"0.72rem",color:"var(--muted)"},children:["Need to troubleshoot?"," ",(0,t.jsx)("span",{onClick:()=>B("mock"),style:{color:"var(--primary)",cursor:"pointer",textDecoration:"underline"},children:"Launch simulated playground sandbox"})]})]})]})]}),(0,t.jsxs)("footer",{className:a.default.footer,children:[(0,t.jsxs)("span",{children:["NeuralLoom v",E," — Experimental AI Orchestrator Bridge"]}),(0,t.jsxs)("span",{children:["Directory: ",C||"Loading..."]})]}),x&&(0,t.jsx)(i,{onClose:()=>f(!1),onConfirmLaunch:()=>{f(!1),B("claude-ssh")}}),y&&(0,t.jsx)(d,{onClose:()=>b(!1),isDocker:j,onConfirmLaunch:()=>{b(!1),B(j?"aider-docker":"aider")}}),_&&(0,t.jsx)(c,{onClose:()=>w(!1),isDocker:k,onConfirmLaunch:(e,t,s)=>{w(!1),B(k?"claude-docker":"claude",e,t,s)}})]})}])},33779,e=>{e.v(t=>Promise.all(["static/chunks/03g6xpslyid3~.js","static/chunks/0-vb7c~yrtpon.js","static/chunks/0ga14ztvrhau2.css"].map(t=>e.l(t))).then(()=>t(37314)))},39429,e=>{e.v(t=>Promise.all(["static/chunks/16w4~t4h7gk13.js"].map(t=>e.l(t))).then(()=>t(1985)))},56915,e=>{e.v(t=>Promise.all(["static/chunks/0lnobx4eh3~-_.js"].map(t=>e.l(t))).then(()=>t(99026)))},78716,e=>{e.v(t=>Promise.all(["static/chunks/0k2co3uj4w81_.js"].map(t=>e.l(t))).then(()=>t(9949)))},33789,e=>{e.v(t=>Promise.all(["static/chunks/076_b43_kienv.js"].map(t=>e.l(t))).then(()=>t(20032)))},78003,e=>{e.v(t=>Promise.all(["static/chunks/0eidfx-s54367.js","static/chunks/0-vb7c~yrtpon.js","static/chunks/0ki2coq0yvb09.js","static/chunks/0ga14ztvrhau2.css"].map(t=>e.l(t))).then(()=>t(97722)))}]);
@@ -1 +1 @@
1
- .page-module___8aEwW__container{flex-direction:column;gap:2rem;max-width:1400px;min-height:100vh;margin:0 auto;padding:2rem;display:flex}.page-module___8aEwW__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding-bottom:1.5rem;display:flex}.page-module___8aEwW__logoArea{flex-direction:column;gap:.25rem;display:flex}.page-module___8aEwW__title{letter-spacing:-.05em;background:linear-gradient(135deg, hsl(var(--primary-hsl)) 0%, hsl(var(--accent-hsl)) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:2.25rem;font-weight:800}.page-module___8aEwW__subtitle{color:var(--muted);font-size:.875rem}.page-module___8aEwW__statusIndicator{background-color:var(--card);border:1px solid var(--border);border-radius:9999px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;display:flex}.page-module___8aEwW__pulseDot{background-color:var(--success);width:8px;height:8px;box-shadow:0 0 10px var(--success);border-radius:50%;animation:2s infinite page-module___8aEwW__pulse}.page-module___8aEwW__dashboardGrid{grid-template-columns:2fr 1fr;gap:2rem;display:grid}@media (max-width:1024px){.page-module___8aEwW__dashboardGrid{grid-template-columns:1fr}}.page-module___8aEwW__mainPanel{flex-direction:column;gap:2rem;min-width:0;display:flex}.page-module___8aEwW__sidePanel{flex-direction:column;gap:2rem;display:flex}.page-module___8aEwW__sectionTitle{color:var(--foreground);margin-bottom:1rem;font-size:1.25rem;font-weight:700}.page-module___8aEwW__cardBody{flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.page-module___8aEwW__agentGrid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;display:grid}.page-module___8aEwW__agentCard{background-color:var(--card);border:1px solid var(--border);border-radius:12px;overflow:hidden}.page-module___8aEwW__agentHeader{background-color:hsla(var(--border-hsl), .3);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.page-module___8aEwW__agentName{font-size:1rem;font-weight:600}.page-module___8aEwW__agentBadge{background-color:hsla(var(--primary-hsl), .15);color:var(--primary);border-radius:4px;padding:.25rem .5rem;font-size:.75rem;font-weight:500}.page-module___8aEwW__envGrid{grid-template-columns:1fr;gap:1rem;display:grid}.page-module___8aEwW__envRow{background-color:var(--card);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.page-module___8aEwW__envName{font-size:.875rem;font-weight:500}.page-module___8aEwW__envStatus{color:var(--muted);font-size:.75rem}.page-module___8aEwW__quickLaunchBtn{background-color:var(--primary);color:#fff;border:none;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:1rem;font-size:1rem;font-weight:600;display:flex}.page-module___8aEwW__quickLaunchBtn:hover{background-color:var(--primary-hover);transform:translateY(-1px)}.page-module___8aEwW__contextList{flex-direction:column;gap:.75rem;display:flex}.page-module___8aEwW__contextItem{background-color:var(--card);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.page-module___8aEwW__contextMeta{flex-direction:column;gap:.25rem;display:flex}.page-module___8aEwW__contextTitle{font-size:.875rem;font-weight:600}.page-module___8aEwW__contextDetails{color:var(--muted);font-size:.75rem}.page-module___8aEwW__footer{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;margin-top:auto;padding-top:1.5rem;font-size:.75rem;display:flex}@keyframes page-module___8aEwW__pulse{0%{transform:scale(.95);box-shadow:0 0 #22c55eb3}70%{transform:scale(1);box-shadow:0 0 0 6px #22c55e00}to{transform:scale(.95);box-shadow:0 0 #22c55e00}}.page-module___8aEwW__activeBorder{box-shadow:0 0 12px hsla(var(--primary-hsl), .2);border-color:var(--border-focus)!important}.page-module___8aEwW__stoppedBadge{background-color:hsla(var(--danger-hsl), .15)!important;color:var(--danger)!important}.page-module___8aEwW__terminalContainer{border-bottom:1px solid var(--border);font-family:var(--font-mono);color:#c9d1d9;background-color:#05070a;flex-direction:column;gap:.35rem;height:380px;padding:1.5rem;font-size:.825rem;line-height:1.5;display:flex;overflow-y:auto}.page-module___8aEwW__terminalLine{white-space:pre-wrap;word-break:break-all}.page-module___8aEwW__terminalInputArea{background-color:#0b0f17;border-bottom-right-radius:12px;border-bottom-left-radius:12px;align-items:center;gap:.75rem;padding:1rem 1.5rem;display:flex}.page-module___8aEwW__terminalInput{color:var(--foreground);font-family:var(--font-mono);background:0 0;border:none;outline:none;flex:1;font-size:.825rem}.page-module___8aEwW__terminalSendBtn{background-color:var(--primary);color:#fff;border:none;border-radius:6px;padding:.4rem 1rem;font-size:.75rem;font-weight:600;transition:all .2s}.page-module___8aEwW__terminalSendBtn:hover:not(:disabled){background-color:var(--primary-hover);transform:translateY(-1px)}.page-module___8aEwW__terminalSendBtn:disabled{opacity:.5;cursor:not-allowed}.page-module___8aEwW__ansiMagenta{color:#ff79c6}.page-module___8aEwW__ansiCyan{color:#8be9fd}.page-module___8aEwW__ansiGreen{color:#50fa7b}.page-module___8aEwW__ansiRed{color:#f55}.page-module___8aEwW__ansiYellow{color:#f1fa8c}.page-module___8aEwW__containerActive{gap:1rem;width:100%;max-width:none;height:100vh;min-height:100vh;max-height:100vh;padding:1rem 1.5rem;overflow:hidden}
1
+ .page-module___8aEwW__container{flex-direction:column;gap:2rem;max-width:1400px;min-height:100vh;margin:0 auto;padding:2rem;display:flex}.page-module___8aEwW__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding-bottom:1.5rem;display:flex}.page-module___8aEwW__logoArea{flex-direction:column;gap:.25rem;display:flex}.page-module___8aEwW__title{letter-spacing:-.05em;background:linear-gradient(135deg, hsl(var(--primary-hsl)) 0%, hsl(var(--accent-hsl)) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:2.25rem;font-weight:800}.page-module___8aEwW__subtitle{color:var(--muted);font-size:.875rem}.page-module___8aEwW__statusIndicator{background-color:var(--card);border:1px solid var(--border);border-radius:9999px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;display:flex}.page-module___8aEwW__pulseDot{background-color:var(--success);width:8px;height:8px;box-shadow:0 0 10px var(--success);border-radius:50%;animation:2s infinite page-module___8aEwW__pulse}.page-module___8aEwW__dashboardGrid{grid-template-columns:2fr 1fr;gap:2rem;display:grid}@media (max-width:1024px){.page-module___8aEwW__dashboardGrid{grid-template-columns:1fr}}.page-module___8aEwW__mainPanel{flex-direction:column;gap:2rem;min-width:0;display:flex}.page-module___8aEwW__sidePanel{flex-direction:column;gap:2rem;display:flex}.page-module___8aEwW__sectionTitle{color:var(--foreground);margin-bottom:1rem;font-size:1.25rem;font-weight:700}.page-module___8aEwW__cardBody{flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.page-module___8aEwW__agentGrid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;display:grid}.page-module___8aEwW__agentCard{background-color:var(--card);border:1px solid var(--border);border-radius:12px;overflow:hidden}.page-module___8aEwW__agentHeader{background-color:hsla(var(--border-hsl), .3);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.page-module___8aEwW__agentName{font-size:1rem;font-weight:600}.page-module___8aEwW__agentBadge{background-color:hsla(var(--primary-hsl), .15);color:var(--primary);border-radius:4px;padding:.25rem .5rem;font-size:.75rem;font-weight:500}.page-module___8aEwW__envGrid{grid-template-columns:1fr;gap:1rem;display:grid}.page-module___8aEwW__envRow{background-color:var(--card);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.page-module___8aEwW__envName{font-size:.875rem;font-weight:500}.page-module___8aEwW__envStatus{color:var(--muted);font-size:.75rem}.page-module___8aEwW__quickLaunchBtn{background-color:var(--primary);color:#fff;border:none;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:1rem;font-size:1rem;font-weight:600;display:flex}.page-module___8aEwW__quickLaunchBtn:hover{background-color:var(--primary-hover);transform:translateY(-1px)}.page-module___8aEwW__contextList{flex-direction:column;gap:.75rem;display:flex}.page-module___8aEwW__contextItem{background-color:var(--card);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.page-module___8aEwW__contextMeta{flex-direction:column;gap:.25rem;display:flex}.page-module___8aEwW__contextTitle{font-size:.875rem;font-weight:600}.page-module___8aEwW__contextDetails{color:var(--muted);font-size:.75rem}.page-module___8aEwW__footer{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;margin-top:auto;padding-top:1.5rem;font-size:.75rem;display:flex}@keyframes page-module___8aEwW__pulse{0%{transform:scale(.95);box-shadow:0 0 #22c55eb3}70%{transform:scale(1);box-shadow:0 0 0 6px #22c55e00}to{transform:scale(.95);box-shadow:0 0 #22c55e00}}.page-module___8aEwW__activeBorder{box-shadow:0 0 12px hsla(var(--primary-hsl), .2);border-color:var(--border-focus)!important}.page-module___8aEwW__stoppedBadge{background-color:hsla(var(--danger-hsl), .15)!important;color:var(--danger)!important}.page-module___8aEwW__terminalContainer{border-bottom:1px solid var(--border);font-family:var(--font-mono);color:#c9d1d9;background-color:#05070a;flex-direction:column;gap:.35rem;height:380px;padding:1.5rem;font-size:.825rem;line-height:1.5;display:flex;overflow-y:auto}.page-module___8aEwW__terminalLine{white-space:pre-wrap;word-break:break-all}.page-module___8aEwW__terminalInputArea{background-color:#0b0f17;border-bottom-right-radius:12px;border-bottom-left-radius:12px;align-items:center;gap:.75rem;padding:1rem 1.5rem;display:flex}.page-module___8aEwW__terminalInput{color:var(--foreground);font-family:var(--font-mono);background:0 0;border:none;outline:none;flex:1;font-size:.825rem}.page-module___8aEwW__terminalSendBtn{background-color:var(--primary);color:#fff;border:none;border-radius:6px;padding:.4rem 1rem;font-size:.75rem;font-weight:600;transition:all .2s}.page-module___8aEwW__terminalSendBtn:hover:not(:disabled){background-color:var(--primary-hover);transform:translateY(-1px)}.page-module___8aEwW__terminalSendBtn:disabled{opacity:.5;cursor:not-allowed}.page-module___8aEwW__ansiMagenta{color:#ff79c6}.page-module___8aEwW__ansiCyan{color:#8be9fd}.page-module___8aEwW__ansiGreen{color:#50fa7b}.page-module___8aEwW__ansiRed{color:#f55}.page-module___8aEwW__ansiYellow{color:#f1fa8c}.page-module___8aEwW__containerActive{gap:1rem;width:100%;max-width:none;height:100vh;min-height:100vh;max-height:100vh;padding:1rem 1.5rem;overflow:hidden}.page-module___8aEwW__agentStateBadge{text-transform:uppercase;letter-spacing:.05em;border-radius:4px;align-items:center;gap:.25rem;margin-right:.25rem;padding:.15rem .4rem;font-size:.65rem;font-weight:600;display:inline-flex}.page-module___8aEwW__state-thinking{color:#c084fc;background-color:#a855f726;border:1px solid #a855f74d;animation:2s ease-in-out infinite page-module___8aEwW__pulse-thinking;box-shadow:0 0 8px #a855f733}.page-module___8aEwW__state-needs-input{color:#fbbf24;background-color:#f59e0b26;border:1px solid #f59e0b4d;animation:1.5s ease-in-out infinite page-module___8aEwW__pulse-attention;box-shadow:0 0 8px #f59e0b33}.page-module___8aEwW__state-complete{color:#34d399;background-color:#10b98126;border:1px solid #10b9814d}.page-module___8aEwW__state-idle{color:var(--muted);background-color:#ffffff0d;border:1px solid #ffffff1a}@keyframes page-module___8aEwW__pulse-thinking{0%{box-shadow:0 0 #a855f766}70%{box-shadow:0 0 0 5px #a855f700}to{box-shadow:0 0 #a855f700}}@keyframes page-module___8aEwW__pulse-attention{0%{box-shadow:0 0 #f59e0b66}70%{box-shadow:0 0 0 5px #f59e0b00}to{box-shadow:0 0 #f59e0b00}}
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/0fpki3y6aj230.js","static/chunks/140ovxvjat1ch.js","static/chunks/07lhk_q6pmm3r.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),v=Symbol("turbopack exports"),U=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=j(),u=Object.assign(s,{[v]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[k]:e=>e(t)};return e.then(e=>{r[v]=e,C(t)},e=>{r[U]=e,C(t)}),r}}return{[v]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[U])throw e[U];return e[v]}),{promise:i,resolve:l}=j(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?i:r()},function(e){e?l(u[U]=e):i(u[v]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],i=o.map(e=>!!$.has(e)||_.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(i.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let q=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(q.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(q.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(N(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/0ljspdd3cv1ft.js","static/chunks/140ovxvjat1ch.js","static/chunks/07lhk_q6pmm3r.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,l=((o=l||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let i=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,l,s;null!=t?l=(o=p(this.c,t)).exports:(o=this.m,l=this.e);let u=(r=o,n=l,(s=i.get(r))||(i.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),v=Symbol("turbopack exports"),U=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=j(),u=Object.assign(s,{[v]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[k]:e=>e(t)};return e.then(e=>{r[v]=e,C(t)},e=>{r[U]=e,C(t)}),r}}return{[v]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[U])throw e[U];return e[v]}),{promise:l,resolve:i}=j(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?l:r()},function(e){e?i(u[U]=e):l(u[v]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],l=o.map(e=>!!$.has(e)||_.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),i))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(l.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),i=x.get(o);if(void 0===i){let e=x.set.bind(x,o,A);i=o.then(e).catch(e=>{let o;switch(t){case l.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case l.Parent:o=`from module ${r}`;break;case l.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let i=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw i.name="ChunkLoadError",i}),x.set(o,i)}return i}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(l.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,l){let i="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return i?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,l?{...l,type:void 0}:void 0)};let q=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(l.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(l.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,l.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),l=o.exports;I[e]=o;let i=new s(o,l);try{n(i,o,l)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let l=e[o];for(let l=r;l<o;l++){let r=e[l],o=t.get(r);if(o){n=o;break}}let i=n??l,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(i===l&&Object.defineProperty(l,"name",{value:"module evaluation"}),s=!0),t.set(r,i))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(l.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,l.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===l.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(q.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(q.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(N(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
package/.next/trace CHANGED
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":273,"timestamp":112585260315,"id":4,"parentId":1,"tags":{},"startTime":1781591968053,"traceId":"209ed7e29f9837b4"},{"name":"load-custom-routes","duration":343,"timestamp":112585260705,"id":5,"parentId":1,"tags":{},"startTime":1781591968054,"traceId":"209ed7e29f9837b4"},{"name":"create-dist-dir","duration":3336,"timestamp":112585261079,"id":6,"parentId":1,"tags":{},"startTime":1781591968054,"traceId":"209ed7e29f9837b4"},{"name":"clean","duration":554,"timestamp":112585265322,"id":7,"parentId":1,"tags":{},"startTime":1781591968058,"traceId":"209ed7e29f9837b4"},{"name":"discover-routes","duration":6741,"timestamp":112585288333,"id":8,"parentId":1,"tags":{},"startTime":1781591968081,"traceId":"209ed7e29f9837b4"},{"name":"create-root-mapping","duration":63,"timestamp":112585295146,"id":9,"parentId":1,"tags":{},"startTime":1781591968088,"traceId":"209ed7e29f9837b4"},{"name":"generate-route-types","duration":16168,"timestamp":112585296746,"id":10,"parentId":1,"tags":{},"startTime":1781591968090,"traceId":"209ed7e29f9837b4"},{"name":"public-dir-conflict-check","duration":101,"timestamp":112585313058,"id":11,"parentId":1,"tags":{},"startTime":1781591968106,"traceId":"209ed7e29f9837b4"},{"name":"generate-routes-manifest","duration":2695,"timestamp":112585313266,"id":12,"parentId":1,"tags":{},"startTime":1781591968106,"traceId":"209ed7e29f9837b4"},{"name":"run-turbopack","duration":2567749,"timestamp":112585322736,"id":14,"parentId":1,"tags":{},"startTime":1781591968116,"traceId":"209ed7e29f9837b4"},{"name":"turbopack-build-events","duration":68,"timestamp":112585617033,"id":15,"parentId":1,"tags":{},"startTime":1781591968410,"traceId":"209ed7e29f9837b4"},{"name":"run-typescript","duration":4018427,"timestamp":112587898930,"id":16,"parentId":1,"tags":{},"startTime":1781591970692,"traceId":"209ed7e29f9837b4"},{"name":"generate-required-server-files","duration":1418,"timestamp":112591918290,"id":18,"parentId":1,"tags":{},"startTime":1781591974711,"traceId":"209ed7e29f9837b4"},{"name":"check-static-error-page","duration":7806,"timestamp":112592065346,"id":20,"parentId":19,"tags":{},"startTime":1781591974858,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":565532,"timestamp":112592077927,"id":44,"parentId":22,"tags":{},"startTime":1781591974871,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":575373,"timestamp":112592068199,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781591974861,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":685264,"timestamp":112592078269,"id":48,"parentId":26,"tags":{},"startTime":1781591974871,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":694401,"timestamp":112592069196,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781591974862,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":691818,"timestamp":112592078408,"id":49,"parentId":27,"tags":{},"startTime":1781591974871,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":700888,"timestamp":112592069391,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781591974862,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":701694,"timestamp":112592078000,"id":45,"parentId":23,"tags":{},"startTime":1781591974871,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":711205,"timestamp":112592068543,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781591974862,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":705374,"timestamp":112592078048,"id":46,"parentId":24,"tags":{},"startTime":1781591974871,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":714689,"timestamp":112592068791,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781591974862,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":705049,"timestamp":112592078543,"id":51,"parentId":29,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":713763,"timestamp":112592069852,"id":29,"parentId":19,"tags":{"page":"/api/recents"},"startTime":1781591974863,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":709878,"timestamp":112592077633,"id":43,"parentId":21,"tags":{},"startTime":1781591974871,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":720746,"timestamp":112592066818,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781591974860,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":706556,"timestamp":112592082090,"id":64,"parentId":42,"tags":{},"startTime":1781591974875,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":715843,"timestamp":112592072846,"id":42,"parentId":19,"tags":{"page":"/"},"startTime":1781591974866,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":710695,"timestamp":112592078488,"id":50,"parentId":28,"tags":{},"startTime":1781591974871,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":719620,"timestamp":112592069605,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781591974863,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":711905,"timestamp":112592078221,"id":47,"parentId":25,"tags":{},"startTime":1781591974871,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":721152,"timestamp":112592069002,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781591974862,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":711543,"timestamp":112592078724,"id":53,"parentId":31,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":719950,"timestamp":112592070337,"id":31,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781591974863,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":716814,"timestamp":112592078828,"id":56,"parentId":34,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":724734,"timestamp":112592070951,"id":34,"parentId":19,"tags":{"page":"/api/sessions/scope"},"startTime":1781591974864,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":723805,"timestamp":112592079065,"id":60,"parentId":38,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":730762,"timestamp":112592072150,"id":38,"parentId":19,"tags":{"page":"/api/sql/connections"},"startTime":1781591974865,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":725201,"timestamp":112592078659,"id":52,"parentId":30,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":733816,"timestamp":112592070080,"id":30,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781591974863,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":725303,"timestamp":112592079112,"id":61,"parentId":39,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":732121,"timestamp":112592072332,"id":39,"parentId":19,"tags":{"page":"/api/sql/mcp"},"startTime":1781591974865,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":727848,"timestamp":112592078792,"id":55,"parentId":33,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":735912,"timestamp":112592070754,"id":33,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781591974864,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":727575,"timestamp":112592079146,"id":62,"parentId":40,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":734232,"timestamp":112592072503,"id":40,"parentId":19,"tags":{"page":"/api/sql/query"},"startTime":1781591974865,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":729090,"timestamp":112592079185,"id":63,"parentId":41,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":735622,"timestamp":112592072679,"id":41,"parentId":19,"tags":{"page":"/api/sql/schema"},"startTime":1781591974866,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":733543,"timestamp":112592078989,"id":58,"parentId":36,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":740870,"timestamp":112592071700,"id":36,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781591974865,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":733705,"timestamp":112592078923,"id":57,"parentId":35,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":741393,"timestamp":112592071246,"id":35,"parentId":19,"tags":{"page":"/api/sessions/start"},"startTime":1781591974864,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":734450,"timestamp":112592078761,"id":54,"parentId":32,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":742690,"timestamp":112592070547,"id":32,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781591974864,"traceId":"209ed7e29f9837b4"},{"name":"is-page-static","duration":735362,"timestamp":112592079026,"id":59,"parentId":37,"tags":{},"startTime":1781591974872,"traceId":"209ed7e29f9837b4"},{"name":"check-page","duration":742466,"timestamp":112592071944,"id":37,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781591974865,"traceId":"209ed7e29f9837b4"},{"name":"static-check","duration":749521,"timestamp":112592064912,"id":19,"parentId":1,"tags":{},"startTime":1781591974858,"traceId":"209ed7e29f9837b4"},{"name":"write-routes-manifest","duration":732,"timestamp":112592815360,"id":66,"parentId":1,"tags":{},"startTime":1781591975608,"traceId":"209ed7e29f9837b4"},{"name":"load-dotenv","duration":31,"timestamp":112592831610,"id":69,"parentId":68,"tags":{},"startTime":1781591975625,"traceId":"209ed7e29f9837b4"},{"name":"run-export-path-map","duration":480,"timestamp":112592836055,"id":70,"parentId":68,"tags":{},"startTime":1781591975629,"traceId":"209ed7e29f9837b4"},{"name":"next-export","duration":635128,"timestamp":112592830652,"id":68,"parentId":1,"tags":{},"startTime":1781591975624,"traceId":"209ed7e29f9837b4"},{"name":"move-exported-app-not-found-","duration":2042,"timestamp":112593467269,"id":71,"parentId":67,"tags":{},"startTime":1781591976260,"traceId":"209ed7e29f9837b4"},{"name":"move-exported-app-global-error-","duration":1521,"timestamp":112593469402,"id":72,"parentId":67,"tags":{},"startTime":1781591976262,"traceId":"209ed7e29f9837b4"},{"name":"static-generation","duration":653586,"timestamp":112592820263,"id":67,"parentId":1,"tags":{},"startTime":1781591975613,"traceId":"209ed7e29f9837b4"},{"name":"write-routes-manifest","duration":828,"timestamp":112593473946,"id":73,"parentId":1,"tags":{},"startTime":1781591976267,"traceId":"209ed7e29f9837b4"},{"name":"print-tree-view","duration":4386,"timestamp":112593490640,"id":74,"parentId":1,"tags":{},"startTime":1781591976284,"traceId":"209ed7e29f9837b4"},{"name":"write-route-bundle-stats","duration":12420,"timestamp":112593495059,"id":75,"parentId":1,"tags":{},"startTime":1781591976288,"traceId":"209ed7e29f9837b4"},{"name":"telemetry-flush","duration":169452,"timestamp":112593507518,"id":76,"parentId":1,"tags":{},"startTime":1781591976301,"traceId":"209ed7e29f9837b4"},{"name":"next-build","duration":8469061,"timestamp":112585207934,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781591968001,"traceId":"209ed7e29f9837b4"}]
1
+ [{"name":"generate-buildid","duration":192,"timestamp":24008749850,"id":4,"parentId":1,"tags":{},"startTime":1781854197946,"traceId":"3c5176a6d4453bb8"},{"name":"load-custom-routes","duration":332,"timestamp":24008750142,"id":5,"parentId":1,"tags":{},"startTime":1781854197946,"traceId":"3c5176a6d4453bb8"},{"name":"create-dist-dir","duration":508,"timestamp":24008750502,"id":6,"parentId":1,"tags":{},"startTime":1781854197947,"traceId":"3c5176a6d4453bb8"},{"name":"clean","duration":564,"timestamp":24008751936,"id":7,"parentId":1,"tags":{},"startTime":1781854197948,"traceId":"3c5176a6d4453bb8"},{"name":"discover-routes","duration":5662,"timestamp":24008774392,"id":8,"parentId":1,"tags":{},"startTime":1781854197971,"traceId":"3c5176a6d4453bb8"},{"name":"create-root-mapping","duration":51,"timestamp":24008780093,"id":9,"parentId":1,"tags":{},"startTime":1781854197976,"traceId":"3c5176a6d4453bb8"},{"name":"generate-route-types","duration":15685,"timestamp":24008781352,"id":10,"parentId":1,"tags":{},"startTime":1781854197978,"traceId":"3c5176a6d4453bb8"},{"name":"public-dir-conflict-check","duration":84,"timestamp":24008797165,"id":11,"parentId":1,"tags":{},"startTime":1781854197993,"traceId":"3c5176a6d4453bb8"},{"name":"generate-routes-manifest","duration":2264,"timestamp":24008797345,"id":12,"parentId":1,"tags":{},"startTime":1781854197994,"traceId":"3c5176a6d4453bb8"},{"name":"run-turbopack","duration":2654130,"timestamp":24008806087,"id":14,"parentId":1,"tags":{},"startTime":1781854198002,"traceId":"3c5176a6d4453bb8"},{"name":"turbopack-build-events","duration":65,"timestamp":24009151786,"id":15,"parentId":1,"tags":{},"startTime":1781854198348,"traceId":"3c5176a6d4453bb8"},{"name":"run-typescript","duration":3830927,"timestamp":24011469039,"id":16,"parentId":1,"tags":{},"startTime":1781854200665,"traceId":"3c5176a6d4453bb8"},{"name":"generate-required-server-files","duration":1330,"timestamp":24015300834,"id":18,"parentId":1,"tags":{},"startTime":1781854204497,"traceId":"3c5176a6d4453bb8"},{"name":"check-static-error-page","duration":9312,"timestamp":24015438386,"id":20,"parentId":19,"tags":{},"startTime":1781854204635,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":532388,"timestamp":24015453853,"id":44,"parentId":22,"tags":{},"startTime":1781854204650,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":544687,"timestamp":24015441673,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781854204638,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":665290,"timestamp":24015454361,"id":49,"parentId":27,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":676544,"timestamp":24015443174,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781854204639,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":666668,"timestamp":24015453952,"id":45,"parentId":23,"tags":{},"startTime":1781854204650,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":678585,"timestamp":24015442082,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781854204638,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":670493,"timestamp":24015454145,"id":48,"parentId":26,"tags":{},"startTime":1781854204650,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":681776,"timestamp":24015442914,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781854204639,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":683037,"timestamp":24015455290,"id":60,"parentId":38,"tags":{},"startTime":1781854204652,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":691874,"timestamp":24015446508,"id":38,"parentId":19,"tags":{"page":"/api/sql/connections"},"startTime":1781854204643,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":686533,"timestamp":24015454601,"id":51,"parentId":29,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":697425,"timestamp":24015443761,"id":29,"parentId":19,"tags":{"page":"/api/recents"},"startTime":1781854204640,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":691223,"timestamp":24015453470,"id":43,"parentId":21,"tags":{},"startTime":1781854204650,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":704791,"timestamp":24015439957,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781854204636,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":692872,"timestamp":24015454018,"id":46,"parentId":24,"tags":{},"startTime":1781854204650,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":704579,"timestamp":24015442355,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781854204639,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":693092,"timestamp":24015454756,"id":52,"parentId":30,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":703835,"timestamp":24015444061,"id":30,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781854204640,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":693606,"timestamp":24015454496,"id":50,"parentId":28,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":704678,"timestamp":24015443452,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781854204640,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":697180,"timestamp":24015454070,"id":47,"parentId":25,"tags":{},"startTime":1781854204650,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":708669,"timestamp":24015442628,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781854204639,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":696216,"timestamp":24015455181,"id":58,"parentId":36,"tags":{},"startTime":1781854204652,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":705396,"timestamp":24015446021,"id":36,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781854204642,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":698718,"timestamp":24015458938,"id":64,"parentId":42,"tags":{},"startTime":1781854204655,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":710371,"timestamp":24015447319,"id":42,"parentId":19,"tags":{"page":"/"},"startTime":1781854204644,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":703505,"timestamp":24015455334,"id":61,"parentId":39,"tags":{},"startTime":1781854204652,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":712194,"timestamp":24015446690,"id":39,"parentId":19,"tags":{"page":"/api/sql/mcp"},"startTime":1781854204643,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":704788,"timestamp":24015455408,"id":63,"parentId":41,"tags":{},"startTime":1781854204652,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":713119,"timestamp":24015447113,"id":41,"parentId":19,"tags":{"page":"/api/sql/schema"},"startTime":1781854204643,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":706937,"timestamp":24015454867,"id":54,"parentId":32,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":717241,"timestamp":24015444595,"id":32,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781854204641,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":709161,"timestamp":24015454908,"id":55,"parentId":33,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":719255,"timestamp":24015444847,"id":33,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781854204641,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":709305,"timestamp":24015455375,"id":62,"parentId":40,"tags":{},"startTime":1781854204652,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":717809,"timestamp":24015446897,"id":40,"parentId":19,"tags":{"page":"/api/sql/query"},"startTime":1781854204643,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":710428,"timestamp":24015454958,"id":56,"parentId":34,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":720308,"timestamp":24015445105,"id":34,"parentId":19,"tags":{"page":"/api/sessions/scope"},"startTime":1781854204641,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":711338,"timestamp":24015455241,"id":59,"parentId":37,"tags":{},"startTime":1781854204652,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":720292,"timestamp":24015446308,"id":37,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781854204643,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":713275,"timestamp":24015454828,"id":53,"parentId":31,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":723776,"timestamp":24015444349,"id":31,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781854204641,"traceId":"3c5176a6d4453bb8"},{"name":"is-page-static","duration":713073,"timestamp":24015455103,"id":57,"parentId":35,"tags":{},"startTime":1781854204651,"traceId":"3c5176a6d4453bb8"},{"name":"check-page","duration":722722,"timestamp":24015445465,"id":35,"parentId":19,"tags":{"page":"/api/sessions/start"},"startTime":1781854204642,"traceId":"3c5176a6d4453bb8"},{"name":"static-check","duration":730246,"timestamp":24015437963,"id":19,"parentId":1,"tags":{},"startTime":1781854204634,"traceId":"3c5176a6d4453bb8"},{"name":"write-routes-manifest","duration":787,"timestamp":24016169141,"id":66,"parentId":1,"tags":{},"startTime":1781854205365,"traceId":"3c5176a6d4453bb8"},{"name":"load-dotenv","duration":26,"timestamp":24016184138,"id":69,"parentId":68,"tags":{},"startTime":1781854205380,"traceId":"3c5176a6d4453bb8"},{"name":"run-export-path-map","duration":372,"timestamp":24016188334,"id":70,"parentId":68,"tags":{},"startTime":1781854205385,"traceId":"3c5176a6d4453bb8"},{"name":"next-export","duration":597869,"timestamp":24016183329,"id":68,"parentId":1,"tags":{},"startTime":1781854205380,"traceId":"3c5176a6d4453bb8"},{"name":"move-exported-app-not-found-","duration":2135,"timestamp":24016782972,"id":71,"parentId":67,"tags":{},"startTime":1781854205979,"traceId":"3c5176a6d4453bb8"},{"name":"move-exported-app-global-error-","duration":1549,"timestamp":24016785228,"id":72,"parentId":67,"tags":{},"startTime":1781854205982,"traceId":"3c5176a6d4453bb8"},{"name":"static-generation","duration":616835,"timestamp":24016173682,"id":67,"parentId":1,"tags":{},"startTime":1781854205370,"traceId":"3c5176a6d4453bb8"},{"name":"write-routes-manifest","duration":952,"timestamp":24016790646,"id":73,"parentId":1,"tags":{},"startTime":1781854205987,"traceId":"3c5176a6d4453bb8"},{"name":"print-tree-view","duration":2481,"timestamp":24016818064,"id":74,"parentId":1,"tags":{},"startTime":1781854206014,"traceId":"3c5176a6d4453bb8"},{"name":"write-route-bundle-stats","duration":5750,"timestamp":24016820571,"id":75,"parentId":1,"tags":{},"startTime":1781854206017,"traceId":"3c5176a6d4453bb8"},{"name":"telemetry-flush","duration":402739,"timestamp":24016826351,"id":76,"parentId":1,"tags":{},"startTime":1781854206023,"traceId":"3c5176a6d4453bb8"},{"name":"next-build","duration":8524552,"timestamp":24008704566,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781854197901,"traceId":"3c5176a6d4453bb8"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":2567749,"timestamp":112585322736,"id":14,"parentId":1,"tags":{},"startTime":1781591968116,"traceId":"209ed7e29f9837b4"},{"name":"turbopack-build-events","duration":68,"timestamp":112585617033,"id":15,"parentId":1,"tags":{},"startTime":1781591968410,"traceId":"209ed7e29f9837b4"},{"name":"run-typescript","duration":4018427,"timestamp":112587898930,"id":16,"parentId":1,"tags":{},"startTime":1781591970692,"traceId":"209ed7e29f9837b4"},{"name":"static-check","duration":749521,"timestamp":112592064912,"id":19,"parentId":1,"tags":{},"startTime":1781591974858,"traceId":"209ed7e29f9837b4"},{"name":"static-generation","duration":653586,"timestamp":112592820263,"id":67,"parentId":1,"tags":{},"startTime":1781591975613,"traceId":"209ed7e29f9837b4"},{"name":"telemetry-flush","duration":169452,"timestamp":112593507518,"id":76,"parentId":1,"tags":{},"startTime":1781591976301,"traceId":"209ed7e29f9837b4"},{"name":"next-build","duration":8469061,"timestamp":112585207934,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781591968001,"traceId":"209ed7e29f9837b4"}]
1
+ [{"name":"run-turbopack","duration":2654130,"timestamp":24008806087,"id":14,"parentId":1,"tags":{},"startTime":1781854198002,"traceId":"3c5176a6d4453bb8"},{"name":"turbopack-build-events","duration":65,"timestamp":24009151786,"id":15,"parentId":1,"tags":{},"startTime":1781854198348,"traceId":"3c5176a6d4453bb8"},{"name":"run-typescript","duration":3830927,"timestamp":24011469039,"id":16,"parentId":1,"tags":{},"startTime":1781854200665,"traceId":"3c5176a6d4453bb8"},{"name":"static-check","duration":730246,"timestamp":24015437963,"id":19,"parentId":1,"tags":{},"startTime":1781854204634,"traceId":"3c5176a6d4453bb8"},{"name":"static-generation","duration":616835,"timestamp":24016173682,"id":67,"parentId":1,"tags":{},"startTime":1781854205370,"traceId":"3c5176a6d4453bb8"},{"name":"telemetry-flush","duration":402739,"timestamp":24016826351,"id":76,"parentId":1,"tags":{},"startTime":1781854206023,"traceId":"3c5176a6d4453bb8"},{"name":"next-build","duration":8524552,"timestamp":24008704566,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781854197901,"traceId":"3c5176a6d4453bb8"}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neural-loom",
3
- "version": "0.2.52",
3
+ "version": "0.2.54",
4
4
  "bin": {
5
5
  "neural-loom": "./bin/cli.js"
6
6
  },
@@ -2,6 +2,7 @@
2
2
  /* eslint-disable react-hooks/set-state-in-effect, react-hooks/exhaustive-deps, @typescript-eslint/no-explicit-any */
3
3
 
4
4
  import React, { useEffect, useState } from "react";
5
+ import { createPortal } from "react-dom";
5
6
 
6
7
  interface DbConnectionProfile {
7
8
  id: string;
@@ -617,7 +618,7 @@ export default function DbExplorer({ workspaceRoot }: DbExplorerProps) {
617
618
  </div>
618
619
 
619
620
  {/* Add Connection Profile Modal */}
620
- {showAddModal && (
621
+ {showAddModal && typeof document !== "undefined" && createPortal(
621
622
  <div style={styles.modalOverlay}>
622
623
  <div style={styles.modalContent}>
623
624
  <h3 style={{ margin: "0 0 1rem 0", display: "flex", justifyContent: "space-between" }}>
@@ -814,7 +815,8 @@ export default function DbExplorer({ workspaceRoot }: DbExplorerProps) {
814
815
  </div>
815
816
  </form>
816
817
  </div>
817
- </div>
818
+ </div>,
819
+ document.body
818
820
  )}
819
821
  </div>
820
822
  );
@@ -67,6 +67,7 @@ interface RunnerStatus {
67
67
  logsCount: number;
68
68
  workspaceRoot?: string;
69
69
  scopedDirs?: string[];
70
+ agentState?: 'idle' | 'thinking' | 'complete' | 'needs-input';
70
71
  }
71
72
 
72
73
  interface IdeLayoutProps {
@@ -1680,6 +1681,34 @@ export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClos
1680
1681
  <span style={{ fontSize: "0.6rem", color: "var(--muted)", backgroundColor: "rgba(255,255,255,0.05)", padding: "1px 4px", borderRadius: "3px" }}>
1681
1682
  {s.type.replace("claude-", "").replace("aider-", "")}
1682
1683
  </span>
1684
+ {s.status === 'running' && s.agentState && (
1685
+ <span
1686
+ style={{
1687
+ fontSize: "0.6rem",
1688
+ padding: "1px 4px",
1689
+ borderRadius: "3px",
1690
+ fontWeight: 600,
1691
+ backgroundColor:
1692
+ s.agentState === 'thinking' ? 'rgba(168, 85, 247, 0.2)' :
1693
+ s.agentState === 'needs-input' ? 'rgba(245, 158, 11, 0.2)' :
1694
+ s.agentState === 'complete' ? 'rgba(16, 185, 129, 0.2)' : 'rgba(255,255,255,0.05)',
1695
+ color:
1696
+ s.agentState === 'thinking' ? '#c084fc' :
1697
+ s.agentState === 'needs-input' ? '#fbbf24' :
1698
+ s.agentState === 'complete' ? '#34d399' : 'var(--muted)',
1699
+ border:
1700
+ s.agentState === 'thinking' ? '1px solid rgba(168, 85, 247, 0.3)' :
1701
+ s.agentState === 'needs-input' ? '1px solid rgba(245, 158, 11, 0.3)' :
1702
+ s.agentState === 'complete' ? '1px solid rgba(16, 185, 129, 0.3)' : '1px solid rgba(255,255,255,0.1)',
1703
+ }}
1704
+ title={`Agent state: ${s.agentState}`}
1705
+ >
1706
+ {s.agentState === 'thinking' && '💭 thinking'}
1707
+ {s.agentState === 'needs-input' && '⚠️ needs input'}
1708
+ {s.agentState === 'complete' && '✅ complete'}
1709
+ {s.agentState === 'idle' && '💤 idle'}
1710
+ </span>
1711
+ )}
1683
1712
  </div>
1684
1713
  );
1685
1714
  })}
@@ -1921,7 +1950,7 @@ export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClos
1921
1950
  {sessions
1922
1951
  .filter(s => s.id !== sessionId && s.status === 'running')
1923
1952
  .map(s => (
1924
- <option key={s.id} value={s.id}>🖥️|🖥️ Split: {s.name}</option>
1953
+ <option key={s.id} value={s.id}>🖥️|🖥️ Split: {s.name} ({s.agentState || 'idle'})</option>
1925
1954
  ))
1926
1955
  }
1927
1956
  </select>
@@ -48,6 +48,7 @@ export default function TerminalConsole({ sessionId, height = "400px", wsPort =
48
48
  term.loadAddon(fitAddon);
49
49
 
50
50
  term.open(terminalRef.current);
51
+ term.focus();
51
52
 
52
53
  // Monkeypatch to prevent crash during unmount / disposal
53
54
  try {
@@ -144,6 +145,7 @@ export default function TerminalConsole({ sessionId, height = "400px", wsPort =
144
145
  ws.send(JSON.stringify({ type: "handshake", sessionId }));
145
146
  // Send initial dimensions
146
147
  ws.send(JSON.stringify({ type: "resize", cols: term.cols, rows: term.rows }));
148
+ term.focus();
147
149
  };
148
150
 
149
151
  ws.onmessage = (event) => {
@@ -155,6 +157,7 @@ export default function TerminalConsole({ sessionId, height = "400px", wsPort =
155
157
  if (msg.history) {
156
158
  term.write(msg.history);
157
159
  }
160
+ term.focus();
158
161
  } else if (msg.type === "output") {
159
162
  term.write(msg.data);
160
163
  } else if (msg.type === "error") {
@@ -339,3 +339,57 @@
339
339
  width: 100%;
340
340
  }
341
341
 
342
+ .agentStateBadge {
343
+ font-size: 0.65rem;
344
+ padding: 0.15rem 0.4rem;
345
+ border-radius: 4px;
346
+ font-weight: 600;
347
+ text-transform: uppercase;
348
+ letter-spacing: 0.05em;
349
+ display: inline-flex;
350
+ align-items: center;
351
+ gap: 0.25rem;
352
+ margin-right: 0.25rem;
353
+ }
354
+
355
+ .state-thinking {
356
+ background-color: rgba(168, 85, 247, 0.15);
357
+ color: #c084fc;
358
+ border: 1px solid rgba(168, 85, 247, 0.3);
359
+ box-shadow: 0 0 8px rgba(168, 85, 247, 0.2);
360
+ animation: pulse-thinking 2s infinite ease-in-out;
361
+ }
362
+
363
+ .state-needs-input {
364
+ background-color: rgba(245, 158, 11, 0.15);
365
+ color: #fbbf24;
366
+ border: 1px solid rgba(245, 158, 11, 0.3);
367
+ box-shadow: 0 0 8px rgba(245, 158, 11, 0.2);
368
+ animation: pulse-attention 1.5s infinite ease-in-out;
369
+ }
370
+
371
+ .state-complete {
372
+ background-color: rgba(16, 185, 129, 0.15);
373
+ color: #34d399;
374
+ border: 1px solid rgba(16, 185, 129, 0.3);
375
+ }
376
+
377
+ .state-idle {
378
+ background-color: rgba(255, 255, 255, 0.05);
379
+ color: var(--muted);
380
+ border: 1px solid rgba(255, 255, 255, 0.1);
381
+ }
382
+
383
+ @keyframes pulse-thinking {
384
+ 0% { box-shadow: 0 0 0 0 rgba(168, 85, 247, 0.4); }
385
+ 70% { box-shadow: 0 0 0 5px rgba(168, 85, 247, 0); }
386
+ 100% { box-shadow: 0 0 0 0 rgba(168, 85, 247, 0); }
387
+ }
388
+
389
+ @keyframes pulse-attention {
390
+ 0% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.4); }
391
+ 70% { box-shadow: 0 0 0 5px rgba(245, 158, 11, 0); }
392
+ 100% { box-shadow: 0 0 0 0 rgba(245, 158, 11, 0); }
393
+ }
394
+
395
+
package/src/app/page.tsx CHANGED
@@ -14,6 +14,7 @@ interface RunnerStatus {
14
14
  logsCount: number;
15
15
  workspaceRoot?: string;
16
16
  scopedDirs?: string[];
17
+ agentState?: 'idle' | 'thinking' | 'complete' | 'needs-input';
17
18
  }
18
19
 
19
20
  // Dynamically import TerminalConsole to bypass SSR errors
@@ -355,9 +356,19 @@ export default function Home() {
355
356
  <div key={session.id} className={`${styles.agentCard} card ${activeSessionId === session.id ? styles.activeBorder : ""}`}>
356
357
  <div className={styles.agentHeader}>
357
358
  <span className={styles.agentName}>{session.name}</span>
358
- <span className={`${styles.agentBadge} ${session.status === 'stopped' ? styles.stoppedBadge : ""}`}>
359
- {session.status}
360
- </span>
359
+ <div style={{ display: "flex", gap: "0.35rem", alignItems: "center" }}>
360
+ {session.status === 'running' && session.agentState && (
361
+ <span className={`${styles.agentStateBadge} ${styles['state-' + session.agentState]}`}>
362
+ {session.agentState === 'thinking' && '💭 thinking'}
363
+ {session.agentState === 'needs-input' && '⚠️ needs input'}
364
+ {session.agentState === 'complete' && '✅ complete'}
365
+ {session.agentState === 'idle' && '💤 idle'}
366
+ </span>
367
+ )}
368
+ <span className={`${styles.agentBadge} ${session.status === 'stopped' ? styles.stoppedBadge : ""}`}>
369
+ {session.status}
370
+ </span>
371
+ </div>
361
372
  </div>
362
373
  <div className={styles.cardBody}>
363
374
  <p style={{ fontSize: "0.825rem", color: "var(--muted)" }}>