neural-loom 0.2.9 → 0.2.10
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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/diagnostics/route-bundle-stats.json +2 -2
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +5 -5
- package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0e5cwnx._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0e5cwnx._.js.map +1 -1
- package/.next/server/chunks/ssr/_0t7oqy6._.js +1 -1
- package/.next/server/chunks/ssr/_0t7oqy6._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{0.fe1iw3rves5.js → 0r1._76-1rt.-.js} +1 -1
- package/.next/static/chunks/178yphwi3n~oc.js +1 -0
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/package.json +1 -1
- package/src/app/api/context/claude/route.ts +4 -1
- package/src/app/components/ClaudeWizard.tsx +17 -0
- package/src/app/page.tsx +1 -1
- package/src/lib/agents/ClaudeRunner.ts +19 -3
- package/src/lib/agents/DockerRunner.ts +15 -1
- package/src/lib/agents/SSHRunner.ts +15 -1
- package/.next/static/chunks/03wk6d_hkj.x2.js +0 -1
- /package/.next/static/{Zdg5QHFrz2LSBAcINdqar → IUac8eI99EN-VEZyfxyCO}/_buildManifest.js +0 -0
- /package/.next/static/{Zdg5QHFrz2LSBAcINdqar → IUac8eI99EN-VEZyfxyCO}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{Zdg5QHFrz2LSBAcINdqar → IUac8eI99EN-VEZyfxyCO}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54370,e=>{"use strict";var r=e.i(43476),o=e.i(71645);let t={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.85)",backdropFilter:"blur(12px)",zIndex:1100,display:"flex",alignItems:"center",justifyContent:"center"},n={width:"90%",maxWidth:"550px",height:"480px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 20px 25px -5px rgba(0,0,0,0.7), 0 10px 10px -5px rgba(0,0,0,0.7)",display:"flex",flexDirection:"column",overflow:"hidden"},l={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},a={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},i={display:"flex",padding:"0.75rem 1.25rem",gap:"0.5rem",backgroundColor:"rgba(10, 15, 25, 0.5)",borderBottom:"1px solid var(--border)"},s={flex:1,padding:"0.45rem 0.75rem",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.8rem",outline:"none"},d={padding:"0.45rem 0.85rem",backgroundColor:"var(--border)",border:"1px solid var(--border-focus)",borderRadius:"6px",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},c={padding:"0.15rem 0.45rem",backgroundColor:"rgba(255, 255, 255, 0.15)",border:"none",borderRadius:"4px",color:"var(--foreground)",fontSize:"0.7rem",cursor:"pointer",fontWeight:600},p={flex:1,padding:"0.5rem 1.25rem",overflowY:"auto",backgroundColor:"#070a0f"},u={display:"flex",flexDirection:"column",gap:"0.25rem"},m={display:"flex",alignItems:"center",gap:"0.6rem",padding:"0.45rem 0.65rem",borderRadius:"6px",cursor:"pointer",fontSize:"0.825rem",border:"1px solid transparent",userSelect:"none",transition:"all 0.15s ease"},x={textAlign:"center",padding:"2rem",fontSize:"0.85rem",color:"var(--muted)"},g={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},b={fontSize:"0.75rem",color:"var(--muted)",maxWidth:"240px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},f={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",color:"#fff",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},h={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"};e.s(["default",0,function({title:e,initialPath:y,onClose:v,onSelect:j}){let[C,k]=(0,o.useState)(y||""),[S,w]=(0,o.useState)(null),[D,z]=(0,o.useState)([]),[R,W]=(0,o.useState)(null),[F,I]=(0,o.useState)(""),[T,P]=(0,o.useState)(!1),[B,L]=(0,o.useState)(""),A=async e=>{P(!0),L("");try{let r=`/api/files?action=browse_dirs&path=${encodeURIComponent(e)}`,o=await fetch(r),t=await o.json();o.ok&&t.success?(k(t.currentPath),I(t.currentPath),w(t.parentPath),z(t.directories),W(null)):L(t.error||"Failed to load directory content.")}catch(e){console.error("Error browsing directories:",e),L("Failed to fetch directory contents.")}finally{P(!1)}};(0,o.useEffect)(()=>{A(y)},[y]);let O=e=>{A(e)},E=()=>{F.trim()&&A(F.trim())};return(0,r.jsx)("div",{style:t,children:(0,r.jsxs)("div",{style:n,children:[(0,r.jsxs)("div",{style:l,children:[(0,r.jsxs)("h3",{style:{fontSize:"1rem",fontWeight:700,margin:0,color:"var(--foreground)"},children:["📁 ",e]}),(0,r.jsx)("button",{onClick:v,style:a,"aria-label":"Close browser",children:"✖"})]}),(0,r.jsxs)("div",{style:i,children:[(0,r.jsx)("input",{type:"text",value:F,onChange:e=>I(e.target.value),onKeyDown:e=>{"Enter"===e.key&&E()},style:s,placeholder:"Absolute folder path..."}),(0,r.jsx)("button",{onClick:E,style:d,disabled:T,children:"Go"})]}),(0,r.jsx)("div",{style:p,children:T?(0,r.jsx)("div",{style:x,children:"Loading directories..."}):B?(0,r.jsxs)("div",{style:{...x,color:"var(--danger)"},children:[B,(0,r.jsx)("button",{onClick:()=>A(C||"."),style:{...d,display:"block",margin:"0.75rem auto 0"},children:"Retry"})]}):(0,r.jsxs)("div",{style:u,children:[S&&(0,r.jsxs)("div",{onClick:()=>O(S),onDoubleClick:()=>O(S),style:m,title:"Go up to parent directory",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"⬆️"}),(0,r.jsx)("span",{style:{fontWeight:600},children:".. (Up)"})]}),0===D.length?(0,r.jsx)("div",{style:{...x,color:"var(--muted)"},children:"No subdirectories found"}):D.map(e=>{let o=R===e.path;return(0,r.jsxs)("div",{onClick:()=>W(e.path),onDoubleClick:()=>O(e.path),style:{...m,backgroundColor:o?"rgba(109, 40, 217, 0.25)":"transparent",borderColor:o?"var(--border-focus)":"transparent"},title:"Single click to highlight, double click to enter",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"📁"}),(0,r.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),o&&(0,r.jsx)("button",{type:"button",onClick:r=>{r.stopPropagation(),O(e.path)},style:c,children:"Enter ➜"})]},e.path)})]})}),(0,r.jsxs)("div",{style:g,children:[(0,r.jsxs)("span",{style:b,children:["Selection: ",(0,r.jsx)("span",{style:{color:"var(--foreground)",fontFamily:"var(--font-mono), monospace"},children:R||C||"(None)"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("button",{onClick:v,style:h,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{j(R||C),v()},style:f,disabled:T,children:"Select Folder"})]})]})]})})}])},44837,e=>{"use strict";var r=e.i(43476),o=e.i(71645),t=e.i(54370);let n={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.8)",backdropFilter:"blur(8px)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center",animation:"fadeIn 0.2s ease-out"},l={width:"90%",maxWidth:"500px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.5)",overflow:"hidden",display:"flex",flexDirection:"column"},a={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"1rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},i={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},s={padding:"1.25rem",display:"flex",flexDirection:"column"},d={display:"flex",flexDirection:"column",marginBottom:"1rem"},c={fontSize:"0.75rem",fontWeight:600,color:"var(--foreground)",marginBottom:"0.375rem",textTransform:"uppercase",letterSpacing:"0.05em"},p={width:"100%",padding:"0.5rem 0.75rem",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.825rem",outline:"none",transition:"border-color 0.15s ease"},u={marginTop:"0.75rem",padding:"0.75rem",borderRadius:"6px",border:"1px solid var(--danger)",backgroundColor:"rgba(239, 68, 68, 0.05)",color:"var(--danger)",fontSize:"0.8rem",lineHeight:1.4},m={display:"flex",justifyContent:"flex-end",gap:"0.75rem",padding:"1rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},x={padding:"0.5rem 1rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",color:"#fff",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},g={padding:"0.5rem 1rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},b={padding:"0.35rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"rgba(255, 255, 255, 0.05)",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer",transition:"all 0.15s ease"};e.s(["default",0,function({onClose:e,onConfirmLaunch:f,isDocker:h}){let[y,v]=(0,o.useState)({name:h?"Claude Docker":"Claude Local",workspaceRoot:"",scopedDirs:[],extraFlags:""}),[j,C]=(0,o.useState)(""),[k,S]=(0,o.useState)(!0),[w,D]=(0,o.useState)(!1),[z,R]=(0,o.useState)(""),[W,F]=(0,o.useState)(!1),[I,T]=(0,o.useState)(!1);(0,o.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/context/claude");if(e.ok){let r=await e.json();r.success&&r.config&&v({name:r.config.name||(h?"Claude Docker":"Claude Local"),workspaceRoot:r.config.workspaceRoot||"",scopedDirs:r.config.scopedDirs||[],extraFlags:r.config.extraFlags||""})}}catch(e){console.error("Failed to load Claude configuration:",e)}finally{S(!1)}})()},[h]);let P=async()=>{D(!0),R("");try{let e=await fetch("/api/context/claude",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});if(e.ok)D(!1),f(y.name,y.workspaceRoot,y.scopedDirs);else{let r=await e.json();R(r.error||"Failed to save settings."),D(!1)}}catch(e){console.error(e),R("Network error: failed to connect to NeuralLoom dashboard API."),D(!1)}};return k?(0,r.jsx)("div",{style:n,children:(0,r.jsx)("div",{style:l,children:(0,r.jsx)("div",{style:{textAlign:"center",padding:"2rem"},children:(0,r.jsx)("span",{style:{color:"var(--muted)"},children:"Loading Claude Configuration..."})})})}):(0,r.jsx)("div",{style:n,children:(0,r.jsxs)("div",{style:l,children:[(0,r.jsxs)("div",{style:a,children:[(0,r.jsxs)("h3",{style:{fontSize:"1.1rem",fontWeight:700,margin:0,display:"flex",alignItems:"center",gap:"0.5rem"},children:[h?"🐳":"🤖"," Claude PTY Launch Wizard ",h?"(Docker)":"(Local)"]}),(0,r.jsx)("button",{onClick:e,style:i,"aria-label":"Close wizard",children:"✖"})]}),(0,r.jsxs)("div",{style:s,children:[(0,r.jsx)("p",{style:{fontSize:"0.825rem",color:"var(--muted)",marginBottom:"1.25rem",lineHeight:1.4},children:"Configure the local workspace path and access parameters for the Claude Code session. Settings are saved in `.ai/neural-loom/claude.json`."}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Session Display Name"}),(0,r.jsx)("input",{type:"text",value:y.name,onChange:e=>v({...y,name:e.target.value}),placeholder:h?"Claude Docker":"Claude Local",style:p})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Workspace Directory (Root)"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:y.workspaceRoot,onChange:e=>v({...y,workspaceRoot:e.target.value}),placeholder:"e.g. C:\\Users\\Dave\\OneDrive\\Projects\\JS\\wingman",style:{...p,flex:1}}),(0,r.jsx)("button",{type:"button",onClick:()=>F(!0),style:b,children:"Browse..."})]}),(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginTop:"0.25rem"},children:"The active folder Claude Code will run in. Leave blank to run in the current orchestrator directory."})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Extra Command Flags"}),(0,r.jsx)("input",{type:"text",value:y.extraFlags||"",onChange:e=>v({...y,extraFlags:e.target.value}),placeholder:"e.g. --resume ace806f9-cb5f-4a19-b0e9-d4331b7863a7",style:p}),(0,r.jsxs)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginTop:"0.25rem"},children:["Custom parameters passed to the Claude CLI (e.g. ",(0,r.jsx)("code",{children:"--resume <session-id>"}),")."]})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("label",{style:c,children:"Scoped Directories (Additional Access)"}),y.scopedDirs.length>0&&(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem",marginBottom:"0.5rem"},children:y.scopedDirs.map((e,o)=>(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:"#080c14",padding:"0.35rem 0.5rem",borderRadius:"4px",border:"1px solid var(--border)"},children:[(0,r.jsx)("span",{style:{fontSize:"0.8rem",fontFamily:"var(--font-mono), monospace",wordBreak:"break-all"},children:e}),(0,r.jsx)("button",{type:"button",onClick:()=>{let e=y.scopedDirs.filter((e,r)=>r!==o);v({...y,scopedDirs:e})},style:{background:"none",border:"none",color:"var(--danger)",cursor:"pointer",fontSize:"0.8rem",padding:"0 0.25rem"},children:"Remove"})]},o))}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:j,onChange:e=>C(e.target.value),placeholder:"e.g. C:\\Users\\Dave\\OneDrive\\Projects\\JS\\other-repo",style:{...p,flex:1}}),(0,r.jsx)("button",{type:"button",onClick:()=>T(!0),style:b,children:"Browse..."}),(0,r.jsx)("button",{type:"button",onClick:()=>{j.trim()&&!y.scopedDirs.includes(j.trim())&&(v({...y,scopedDirs:[...y.scopedDirs,j.trim()]}),C(""))},style:{padding:"0.35rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border-focus)",backgroundColor:"rgba(109, 40, 217, 0.1)",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},children:"Add"})]})]}),z&&(0,r.jsxs)("div",{style:u,children:["✗ ",z]})]}),(0,r.jsxs)("div",{style:m,children:[(0,r.jsx)("button",{onClick:e,style:g,disabled:w,children:"Cancel"}),(0,r.jsx)("button",{onClick:P,style:x,disabled:w,children:w?"Saving...":"Launch Session"})]}),W&&(0,r.jsx)(t.default,{title:"Select Workspace Root",initialPath:y.workspaceRoot,onClose:()=>F(!1),onSelect:e=>v({...y,workspaceRoot:e})}),I&&(0,r.jsx)(t.default,{title:"Add Scoped Directory",initialPath:j,onClose:()=>T(!1),onSelect:e=>C(e)})]})})}])},20032,e=>{e.n(e.i(44837))}]);
|
package/.next/trace
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":297,"timestamp":110387089964,"id":4,"parentId":1,"tags":{},"startTime":1781331122861,"traceId":"de433e974b61d723"},{"name":"load-custom-routes","duration":388,"timestamp":110387090395,"id":5,"parentId":1,"tags":{},"startTime":1781331122862,"traceId":"de433e974b61d723"},{"name":"create-dist-dir","duration":2496,"timestamp":110387090816,"id":6,"parentId":1,"tags":{},"startTime":1781331122862,"traceId":"de433e974b61d723"},{"name":"clean","duration":762,"timestamp":110387114695,"id":7,"parentId":1,"tags":{},"startTime":1781331122886,"traceId":"de433e974b61d723"},{"name":"discover-routes","duration":7403,"timestamp":110387138801,"id":8,"parentId":1,"tags":{},"startTime":1781331122910,"traceId":"de433e974b61d723"},{"name":"create-root-mapping","duration":64,"timestamp":110387146257,"id":9,"parentId":1,"tags":{},"startTime":1781331122918,"traceId":"de433e974b61d723"},{"name":"generate-route-types","duration":21844,"timestamp":110387147685,"id":10,"parentId":1,"tags":{},"startTime":1781331122919,"traceId":"de433e974b61d723"},{"name":"public-dir-conflict-check","duration":125,"timestamp":110387169703,"id":11,"parentId":1,"tags":{},"startTime":1781331122941,"traceId":"de433e974b61d723"},{"name":"generate-routes-manifest","duration":2804,"timestamp":110387169986,"id":12,"parentId":1,"tags":{},"startTime":1781331122941,"traceId":"de433e974b61d723"},{"name":"run-turbopack","duration":2350981,"timestamp":110387180774,"id":14,"parentId":1,"tags":{},"startTime":1781331122952,"traceId":"de433e974b61d723"},{"name":"turbopack-build-events","duration":72,"timestamp":110387489173,"id":15,"parentId":1,"tags":{},"startTime":1781331123261,"traceId":"de433e974b61d723"},{"name":"run-typescript","duration":3640543,"timestamp":110389542508,"id":16,"parentId":1,"tags":{},"startTime":1781331125314,"traceId":"de433e974b61d723"},{"name":"generate-required-server-files","duration":1477,"timestamp":110393183970,"id":18,"parentId":1,"tags":{},"startTime":1781331128955,"traceId":"de433e974b61d723"},{"name":"check-static-error-page","duration":6582,"timestamp":110393293330,"id":20,"parentId":19,"tags":{},"startTime":1781331129065,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":511682,"timestamp":110393303891,"id":38,"parentId":22,"tags":{},"startTime":1781331129075,"traceId":"de433e974b61d723"},{"name":"check-page","duration":519508,"timestamp":110393296175,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781331129068,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":656181,"timestamp":110393304001,"id":40,"parentId":24,"tags":{},"startTime":1781331129075,"traceId":"de433e974b61d723"},{"name":"check-page","duration":663555,"timestamp":110393296702,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781331129068,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":665160,"timestamp":110393304508,"id":44,"parentId":28,"tags":{},"startTime":1781331129076,"traceId":"de433e974b61d723"},{"name":"check-page","duration":672102,"timestamp":110393297613,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781331129069,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":666158,"timestamp":110393303674,"id":37,"parentId":21,"tags":{},"startTime":1781331129075,"traceId":"de433e974b61d723"},{"name":"check-page","duration":674961,"timestamp":110393294896,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781331129066,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":670577,"timestamp":110393303951,"id":39,"parentId":23,"tags":{},"startTime":1781331129075,"traceId":"de433e974b61d723"},{"name":"check-page","duration":678102,"timestamp":110393296478,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781331129068,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":671088,"timestamp":110393304155,"id":42,"parentId":26,"tags":{},"startTime":1781331129076,"traceId":"de433e974b61d723"},{"name":"check-page","duration":678219,"timestamp":110393297076,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781331129069,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":671669,"timestamp":110393304077,"id":41,"parentId":25,"tags":{},"startTime":1781331129076,"traceId":"de433e974b61d723"},{"name":"check-page","duration":678873,"timestamp":110393296901,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781331129068,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":673082,"timestamp":110393304366,"id":43,"parentId":27,"tags":{},"startTime":1781331129076,"traceId":"de433e974b61d723"},{"name":"check-page","duration":680225,"timestamp":110393297265,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781331129069,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":672463,"timestamp":110393305185,"id":51,"parentId":35,"tags":{},"startTime":1781331129077,"traceId":"de433e974b61d723"},{"name":"check-page","duration":678694,"timestamp":110393298986,"id":35,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1781331129070,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":678051,"timestamp":110393304624,"id":45,"parentId":29,"tags":{},"startTime":1781331129076,"traceId":"de433e974b61d723"},{"name":"check-page","duration":684908,"timestamp":110393297813,"id":29,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781331129069,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":677934,"timestamp":110393305083,"id":49,"parentId":33,"tags":{},"startTime":1781331129077,"traceId":"de433e974b61d723"},{"name":"check-page","duration":684507,"timestamp":110393298551,"id":33,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781331129070,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":681082,"timestamp":110393305141,"id":50,"parentId":34,"tags":{},"startTime":1781331129077,"traceId":"de433e974b61d723"},{"name":"check-page","duration":687539,"timestamp":110393298722,"id":34,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781331129070,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":681449,"timestamp":110393305026,"id":48,"parentId":32,"tags":{},"startTime":1781331129077,"traceId":"de433e974b61d723"},{"name":"check-page","duration":688115,"timestamp":110393298382,"id":32,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781331129070,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":682935,"timestamp":110393308479,"id":52,"parentId":36,"tags":{},"startTime":1781331129080,"traceId":"de433e974b61d723"},{"name":"check-page","duration":691861,"timestamp":110393299587,"id":36,"parentId":19,"tags":{"page":"/"},"startTime":1781331129071,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":687145,"timestamp":110393304820,"id":46,"parentId":30,"tags":{},"startTime":1781331129076,"traceId":"de433e974b61d723"},{"name":"check-page","duration":693968,"timestamp":110393298028,"id":30,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781331129070,"traceId":"de433e974b61d723"},{"name":"is-page-static","duration":690288,"timestamp":110393304952,"id":47,"parentId":31,"tags":{},"startTime":1781331129076,"traceId":"de433e974b61d723"},{"name":"check-page","duration":697073,"timestamp":110393298209,"id":31,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781331129070,"traceId":"de433e974b61d723"},{"name":"static-check","duration":702503,"timestamp":110393292814,"id":19,"parentId":1,"tags":{},"startTime":1781331129064,"traceId":"de433e974b61d723"},{"name":"write-routes-manifest","duration":1022,"timestamp":110393996501,"id":54,"parentId":1,"tags":{},"startTime":1781331129768,"traceId":"de433e974b61d723"},{"name":"load-dotenv","duration":37,"timestamp":110394013773,"id":57,"parentId":56,"tags":{},"startTime":1781331129785,"traceId":"de433e974b61d723"},{"name":"run-export-path-map","duration":379,"timestamp":110394018503,"id":58,"parentId":56,"tags":{},"startTime":1781331129790,"traceId":"de433e974b61d723"},{"name":"next-export","duration":661836,"timestamp":110394012655,"id":56,"parentId":1,"tags":{},"startTime":1781331129784,"traceId":"de433e974b61d723"},{"name":"move-exported-app-not-found-","duration":2342,"timestamp":110394676317,"id":59,"parentId":55,"tags":{},"startTime":1781331130448,"traceId":"de433e974b61d723"},{"name":"move-exported-app-global-error-","duration":2102,"timestamp":110394678826,"id":60,"parentId":55,"tags":{},"startTime":1781331130450,"traceId":"de433e974b61d723"},{"name":"static-generation","duration":684148,"timestamp":110394002275,"id":55,"parentId":1,"tags":{},"startTime":1781331129774,"traceId":"de433e974b61d723"},{"name":"write-routes-manifest","duration":979,"timestamp":110394686583,"id":61,"parentId":1,"tags":{},"startTime":1781331130458,"traceId":"de433e974b61d723"},{"name":"print-tree-view","duration":2682,"timestamp":110394698495,"id":62,"parentId":1,"tags":{},"startTime":1781331130470,"traceId":"de433e974b61d723"},{"name":"write-route-bundle-stats","duration":13959,"timestamp":110394701216,"id":63,"parentId":1,"tags":{},"startTime":1781331130473,"traceId":"de433e974b61d723"},{"name":"telemetry-flush","duration":177965,"timestamp":110394715214,"id":64,"parentId":1,"tags":{},"startTime":1781331130487,"traceId":"de433e974b61d723"},{"name":"next-build","duration":7852673,"timestamp":110387040534,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781331122812,"traceId":"de433e974b61d723"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":2350981,"timestamp":110387180774,"id":14,"parentId":1,"tags":{},"startTime":1781331122952,"traceId":"de433e974b61d723"},{"name":"turbopack-build-events","duration":72,"timestamp":110387489173,"id":15,"parentId":1,"tags":{},"startTime":1781331123261,"traceId":"de433e974b61d723"},{"name":"run-typescript","duration":3640543,"timestamp":110389542508,"id":16,"parentId":1,"tags":{},"startTime":1781331125314,"traceId":"de433e974b61d723"},{"name":"static-check","duration":702503,"timestamp":110393292814,"id":19,"parentId":1,"tags":{},"startTime":1781331129064,"traceId":"de433e974b61d723"},{"name":"static-generation","duration":684148,"timestamp":110394002275,"id":55,"parentId":1,"tags":{},"startTime":1781331129774,"traceId":"de433e974b61d723"},{"name":"telemetry-flush","duration":177965,"timestamp":110394715214,"id":64,"parentId":1,"tags":{},"startTime":1781331130487,"traceId":"de433e974b61d723"},{"name":"next-build","duration":7852673,"timestamp":110387040534,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781331122812,"traceId":"de433e974b61d723"}]
|
package/package.json
CHANGED
|
@@ -23,6 +23,7 @@ export async function GET() {
|
|
|
23
23
|
name: config.name || "Claude Local",
|
|
24
24
|
workspaceRoot: config.workspaceRoot || "",
|
|
25
25
|
scopedDirs: config.scopedDirs || [],
|
|
26
|
+
extraFlags: config.extraFlags || "",
|
|
26
27
|
},
|
|
27
28
|
});
|
|
28
29
|
}
|
|
@@ -33,6 +34,7 @@ export async function GET() {
|
|
|
33
34
|
name: "Claude Local",
|
|
34
35
|
workspaceRoot: "",
|
|
35
36
|
scopedDirs: [],
|
|
37
|
+
extraFlags: "",
|
|
36
38
|
},
|
|
37
39
|
});
|
|
38
40
|
} catch (error) {
|
|
@@ -44,7 +46,7 @@ export async function GET() {
|
|
|
44
46
|
export async function POST(request: Request) {
|
|
45
47
|
try {
|
|
46
48
|
const body = await request.json();
|
|
47
|
-
const { name, workspaceRoot, scopedDirs } = body;
|
|
49
|
+
const { name, workspaceRoot, scopedDirs, extraFlags } = body;
|
|
48
50
|
|
|
49
51
|
ensureDir();
|
|
50
52
|
|
|
@@ -52,6 +54,7 @@ export async function POST(request: Request) {
|
|
|
52
54
|
name: name || "Claude Local",
|
|
53
55
|
workspaceRoot: workspaceRoot || "",
|
|
54
56
|
scopedDirs: scopedDirs || [],
|
|
57
|
+
extraFlags: extraFlags || "",
|
|
55
58
|
};
|
|
56
59
|
|
|
57
60
|
fs.writeFileSync(configPath, JSON.stringify(newConfig, null, 2), "utf8");
|
|
@@ -7,6 +7,7 @@ interface ClaudeConfig {
|
|
|
7
7
|
name: string;
|
|
8
8
|
workspaceRoot: string;
|
|
9
9
|
scopedDirs: string[];
|
|
10
|
+
extraFlags?: string;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
interface ClaudeWizardProps {
|
|
@@ -20,6 +21,7 @@ export default function ClaudeWizard({ onClose, onConfirmLaunch, isDocker }: Cla
|
|
|
20
21
|
name: isDocker ? "Claude Docker" : "Claude Local",
|
|
21
22
|
workspaceRoot: "",
|
|
22
23
|
scopedDirs: [],
|
|
24
|
+
extraFlags: "",
|
|
23
25
|
});
|
|
24
26
|
|
|
25
27
|
const [newScopePath, setNewScopePath] = useState("");
|
|
@@ -41,6 +43,7 @@ export default function ClaudeWizard({ onClose, onConfirmLaunch, isDocker }: Cla
|
|
|
41
43
|
name: data.config.name || (isDocker ? "Claude Docker" : "Claude Local"),
|
|
42
44
|
workspaceRoot: data.config.workspaceRoot || "",
|
|
43
45
|
scopedDirs: data.config.scopedDirs || [],
|
|
46
|
+
extraFlags: data.config.extraFlags || "",
|
|
44
47
|
});
|
|
45
48
|
}
|
|
46
49
|
}
|
|
@@ -143,6 +146,20 @@ export default function ClaudeWizard({ onClose, onConfirmLaunch, isDocker }: Cla
|
|
|
143
146
|
</span>
|
|
144
147
|
</div>
|
|
145
148
|
|
|
149
|
+
<div style={formGroupStyle}>
|
|
150
|
+
<label style={labelStyle}>Extra Command Flags</label>
|
|
151
|
+
<input
|
|
152
|
+
type="text"
|
|
153
|
+
value={config.extraFlags || ""}
|
|
154
|
+
onChange={(e) => setConfig({ ...config, extraFlags: e.target.value })}
|
|
155
|
+
placeholder="e.g. --resume ace806f9-cb5f-4a19-b0e9-d4331b7863a7"
|
|
156
|
+
style={inputStyle}
|
|
157
|
+
/>
|
|
158
|
+
<span style={{ fontSize: "0.7rem", color: "var(--muted)", marginTop: "0.25rem" }}>
|
|
159
|
+
Custom parameters passed to the Claude CLI (e.g. <code>--resume <session-id></code>).
|
|
160
|
+
</span>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
146
163
|
<div style={formGroupStyle}>
|
|
147
164
|
<label style={labelStyle}>Scoped Directories (Additional Access)</label>
|
|
148
165
|
{config.scopedDirs.length > 0 && (
|
package/src/app/page.tsx
CHANGED
|
@@ -541,7 +541,7 @@ export default function Home() {
|
|
|
541
541
|
|
|
542
542
|
{/* Footer */}
|
|
543
543
|
<footer className={styles.footer}>
|
|
544
|
-
<span>NeuralLoom v0.2.
|
|
544
|
+
<span>NeuralLoom v0.2.10 — Experimental AI Orchestrator Bridge</span>
|
|
545
545
|
<span>Directory: C:\Users\Dave\OneDrive\Projects\JS\neural-loom</span>
|
|
546
546
|
</footer>
|
|
547
547
|
|
|
@@ -77,14 +77,30 @@ export class ClaudeRunner extends AgentRunner {
|
|
|
77
77
|
this.appendLog("\x1b[1;35m==================================================\x1b[0m\r\n");
|
|
78
78
|
this.appendLog("\x1b[1;36m NEURALLOOM ACTIVE CLAUDE TERMINAL ROUTE \x1b[0m\r\n");
|
|
79
79
|
this.appendLog("\x1b[1;35m==================================================\x1b[0m\r\n");
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
|
|
82
81
|
const targetCwd = (this.workspaceRoot && fs.existsSync(this.workspaceRoot))
|
|
83
82
|
? this.workspaceRoot
|
|
84
83
|
: process.env.ORIGINAL_CWD || process.cwd();
|
|
85
84
|
|
|
85
|
+
// Load Claude configuration to check for extraFlags (like --resume)
|
|
86
|
+
let extraFlags = "";
|
|
87
|
+
const claudeConfigPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "claude.json");
|
|
88
|
+
if (fs.existsSync(claudeConfigPath)) {
|
|
89
|
+
try {
|
|
90
|
+
const config = JSON.parse(fs.readFileSync(claudeConfigPath, "utf8"));
|
|
91
|
+
if (config.extraFlags) {
|
|
92
|
+
extraFlags = config.extraFlags;
|
|
93
|
+
}
|
|
94
|
+
} catch (err) {
|
|
95
|
+
console.error("Failed to parse Claude configuration:", err);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const claudeCmd = `claude ${extraFlags}`.trim();
|
|
100
|
+
this.appendLog(`[System] Spawning command: ${claudeCmd}\r\n`);
|
|
101
|
+
|
|
86
102
|
// Spawn bash and run 'claude' command
|
|
87
|
-
this.ptyProcess = this.ptyModule!.spawn(bashPath, ["-c",
|
|
103
|
+
this.ptyProcess = this.ptyModule!.spawn(bashPath, ["-c", claudeCmd], {
|
|
88
104
|
name: "xterm-256color",
|
|
89
105
|
cols: 120,
|
|
90
106
|
rows: 30,
|
|
@@ -122,7 +122,21 @@ export class DockerRunner extends AgentRunner {
|
|
|
122
122
|
}
|
|
123
123
|
const mountsStr = mounts.join(" ");
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
// Load Claude configuration to check for extraFlags (like --resume)
|
|
126
|
+
let extraFlags = "";
|
|
127
|
+
const claudeConfigPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "claude.json");
|
|
128
|
+
if (fs.existsSync(claudeConfigPath)) {
|
|
129
|
+
try {
|
|
130
|
+
const config = JSON.parse(fs.readFileSync(claudeConfigPath, "utf8"));
|
|
131
|
+
if (config.extraFlags) {
|
|
132
|
+
extraFlags = config.extraFlags;
|
|
133
|
+
}
|
|
134
|
+
} catch (err) {
|
|
135
|
+
console.error("Failed to parse Claude configuration:", err);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const dockerCmd = `docker run -it --name neural-loom-session-${this.id} --rm ${mountsStr} -w /workspace node:20-alpine npx -y @anthropic-ai/claude-code ${extraFlags}`.trim();
|
|
126
140
|
|
|
127
141
|
this.ptyProcess = this.ptyModule!.spawn(bashPath, ["-c", dockerCmd], {
|
|
128
142
|
name: "xterm-256color",
|
|
@@ -120,7 +120,21 @@ export class SSHRunner extends AgentRunner {
|
|
|
120
120
|
const portOpt = config.port ? `-p ${config.port}` : "";
|
|
121
121
|
const keyOpt = config.privateKeyPath ? `-i "${config.privateKeyPath}"` : "";
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
// Load Claude configuration to check for extraFlags (like --resume)
|
|
124
|
+
let extraFlags = "";
|
|
125
|
+
const claudeConfigPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "claude.json");
|
|
126
|
+
if (fs.existsSync(claudeConfigPath)) {
|
|
127
|
+
try {
|
|
128
|
+
const config = JSON.parse(fs.readFileSync(claudeConfigPath, "utf8"));
|
|
129
|
+
if (config.extraFlags) {
|
|
130
|
+
extraFlags = config.extraFlags;
|
|
131
|
+
}
|
|
132
|
+
} catch (err) {
|
|
133
|
+
console.error("Failed to parse Claude configuration:", err);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const sshCmd = `ssh -t ${keyOpt} ${portOpt} ${config.username}@${config.host} "claude ${extraFlags}"`;
|
|
124
138
|
|
|
125
139
|
this.ptyProcess = this.ptyModule!.spawn(bashPath, ["-c", sshCmd], {
|
|
126
140
|
name: "xterm-256color",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54370,e=>{"use strict";var r=e.i(43476),o=e.i(71645);let t={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.85)",backdropFilter:"blur(12px)",zIndex:1100,display:"flex",alignItems:"center",justifyContent:"center"},n={width:"90%",maxWidth:"550px",height:"480px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 20px 25px -5px rgba(0,0,0,0.7), 0 10px 10px -5px rgba(0,0,0,0.7)",display:"flex",flexDirection:"column",overflow:"hidden"},i={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},l={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},a={display:"flex",padding:"0.75rem 1.25rem",gap:"0.5rem",backgroundColor:"rgba(10, 15, 25, 0.5)",borderBottom:"1px solid var(--border)"},d={flex:1,padding:"0.45rem 0.75rem",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.8rem",outline:"none"},s={padding:"0.45rem 0.85rem",backgroundColor:"var(--border)",border:"1px solid var(--border-focus)",borderRadius:"6px",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},c={padding:"0.15rem 0.45rem",backgroundColor:"rgba(255, 255, 255, 0.15)",border:"none",borderRadius:"4px",color:"var(--foreground)",fontSize:"0.7rem",cursor:"pointer",fontWeight:600},p={flex:1,padding:"0.5rem 1.25rem",overflowY:"auto",backgroundColor:"#070a0f"},u={display:"flex",flexDirection:"column",gap:"0.25rem"},m={display:"flex",alignItems:"center",gap:"0.6rem",padding:"0.45rem 0.65rem",borderRadius:"6px",cursor:"pointer",fontSize:"0.825rem",border:"1px solid transparent",userSelect:"none",transition:"all 0.15s ease"},x={textAlign:"center",padding:"2rem",fontSize:"0.85rem",color:"var(--muted)"},g={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.85rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},b={fontSize:"0.75rem",color:"var(--muted)",maxWidth:"240px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},f={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",color:"#fff",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},h={padding:"0.45rem 0.9rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"};e.s(["default",0,function({title:e,initialPath:y,onClose:v,onSelect:j}){let[C,k]=(0,o.useState)(y||""),[S,w]=(0,o.useState)(null),[D,R]=(0,o.useState)([]),[z,W]=(0,o.useState)(null),[I,P]=(0,o.useState)(""),[T,B]=(0,o.useState)(!1),[F,A]=(0,o.useState)(""),L=async e=>{B(!0),A("");try{let r=`/api/files?action=browse_dirs&path=${encodeURIComponent(e)}`,o=await fetch(r),t=await o.json();o.ok&&t.success?(k(t.currentPath),P(t.currentPath),w(t.parentPath),R(t.directories),W(null)):A(t.error||"Failed to load directory content.")}catch(e){console.error("Error browsing directories:",e),A("Failed to fetch directory contents.")}finally{B(!1)}};(0,o.useEffect)(()=>{L(y)},[y]);let O=e=>{L(e)},N=()=>{I.trim()&&L(I.trim())};return(0,r.jsx)("div",{style:t,children:(0,r.jsxs)("div",{style:n,children:[(0,r.jsxs)("div",{style:i,children:[(0,r.jsxs)("h3",{style:{fontSize:"1rem",fontWeight:700,margin:0,color:"var(--foreground)"},children:["📁 ",e]}),(0,r.jsx)("button",{onClick:v,style:l,"aria-label":"Close browser",children:"✖"})]}),(0,r.jsxs)("div",{style:a,children:[(0,r.jsx)("input",{type:"text",value:I,onChange:e=>P(e.target.value),onKeyDown:e=>{"Enter"===e.key&&N()},style:d,placeholder:"Absolute folder path..."}),(0,r.jsx)("button",{onClick:N,style:s,disabled:T,children:"Go"})]}),(0,r.jsx)("div",{style:p,children:T?(0,r.jsx)("div",{style:x,children:"Loading directories..."}):F?(0,r.jsxs)("div",{style:{...x,color:"var(--danger)"},children:[F,(0,r.jsx)("button",{onClick:()=>L(C||"."),style:{...s,display:"block",margin:"0.75rem auto 0"},children:"Retry"})]}):(0,r.jsxs)("div",{style:u,children:[S&&(0,r.jsxs)("div",{onClick:()=>O(S),onDoubleClick:()=>O(S),style:m,title:"Go up to parent directory",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"⬆️"}),(0,r.jsx)("span",{style:{fontWeight:600},children:".. (Up)"})]}),0===D.length?(0,r.jsx)("div",{style:{...x,color:"var(--muted)"},children:"No subdirectories found"}):D.map(e=>{let o=z===e.path;return(0,r.jsxs)("div",{onClick:()=>W(e.path),onDoubleClick:()=>O(e.path),style:{...m,backgroundColor:o?"rgba(109, 40, 217, 0.25)":"transparent",borderColor:o?"var(--border-focus)":"transparent"},title:"Single click to highlight, double click to enter",children:[(0,r.jsx)("span",{style:{fontSize:"1.1rem"},children:"📁"}),(0,r.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),o&&(0,r.jsx)("button",{type:"button",onClick:r=>{r.stopPropagation(),O(e.path)},style:c,children:"Enter ➜"})]},e.path)})]})}),(0,r.jsxs)("div",{style:g,children:[(0,r.jsxs)("span",{style:b,children:["Selection: ",(0,r.jsx)("span",{style:{color:"var(--foreground)",fontFamily:"var(--font-mono), monospace"},children:z||C||"(None)"})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("button",{onClick:v,style:h,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{j(z||C),v()},style:f,disabled:T,children:"Select Folder"})]})]})]})})}])},44837,e=>{"use strict";var r=e.i(43476),o=e.i(71645),t=e.i(54370);let n={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(5, 7, 10, 0.8)",backdropFilter:"blur(8px)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center",animation:"fadeIn 0.2s ease-out"},i={width:"90%",maxWidth:"500px",backgroundColor:"var(--card)",border:"1px solid var(--border-focus)",borderRadius:"12px",boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.5)",overflow:"hidden",display:"flex",flexDirection:"column"},l={display:"flex",alignItems:"center",justifyContent:"space-between",padding:"1rem 1.25rem",borderBottom:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},a={background:"none",border:"none",color:"var(--muted)",fontSize:"0.9rem",cursor:"pointer",padding:"0.25rem"},d={padding:"1.25rem",display:"flex",flexDirection:"column"},s={display:"flex",flexDirection:"column",marginBottom:"1rem"},c={fontSize:"0.75rem",fontWeight:600,color:"var(--foreground)",marginBottom:"0.375rem",textTransform:"uppercase",letterSpacing:"0.05em"},p={width:"100%",padding:"0.5rem 0.75rem",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"6px",color:"var(--foreground)",fontFamily:"var(--font-mono), monospace",fontSize:"0.825rem",outline:"none",transition:"border-color 0.15s ease"},u={marginTop:"0.75rem",padding:"0.75rem",borderRadius:"6px",border:"1px solid var(--danger)",backgroundColor:"rgba(239, 68, 68, 0.05)",color:"var(--danger)",fontSize:"0.8rem",lineHeight:1.4},m={display:"flex",justifyContent:"flex-end",gap:"0.75rem",padding:"1rem 1.25rem",borderTop:"1px solid var(--border)",background:"hsla(var(--border-hsl), 0.2)"},x={padding:"0.5rem 1rem",borderRadius:"6px",border:"none",background:"linear-gradient(135deg, hsl(262, 83%, 60%) 0%, hsl(195, 100%, 45%) 100%)",color:"#fff",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},g={padding:"0.5rem 1rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"transparent",color:"var(--foreground)",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},b={padding:"0.35rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border)",backgroundColor:"rgba(255, 255, 255, 0.05)",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer",transition:"all 0.15s ease"};e.s(["default",0,function({onClose:e,onConfirmLaunch:f,isDocker:h}){let[y,v]=(0,o.useState)({name:h?"Claude Docker":"Claude Local",workspaceRoot:"",scopedDirs:[]}),[j,C]=(0,o.useState)(""),[k,S]=(0,o.useState)(!0),[w,D]=(0,o.useState)(!1),[R,z]=(0,o.useState)(""),[W,I]=(0,o.useState)(!1),[P,T]=(0,o.useState)(!1);(0,o.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/context/claude");if(e.ok){let r=await e.json();r.success&&r.config&&v({name:r.config.name||(h?"Claude Docker":"Claude Local"),workspaceRoot:r.config.workspaceRoot||"",scopedDirs:r.config.scopedDirs||[]})}}catch(e){console.error("Failed to load Claude configuration:",e)}finally{S(!1)}})()},[h]);let B=async()=>{D(!0),z("");try{let e=await fetch("/api/context/claude",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});if(e.ok)D(!1),f(y.name,y.workspaceRoot,y.scopedDirs);else{let r=await e.json();z(r.error||"Failed to save settings."),D(!1)}}catch(e){console.error(e),z("Network error: failed to connect to NeuralLoom dashboard API."),D(!1)}};return k?(0,r.jsx)("div",{style:n,children:(0,r.jsx)("div",{style:i,children:(0,r.jsx)("div",{style:{textAlign:"center",padding:"2rem"},children:(0,r.jsx)("span",{style:{color:"var(--muted)"},children:"Loading Claude Configuration..."})})})}):(0,r.jsx)("div",{style:n,children:(0,r.jsxs)("div",{style:i,children:[(0,r.jsxs)("div",{style:l,children:[(0,r.jsxs)("h3",{style:{fontSize:"1.1rem",fontWeight:700,margin:0,display:"flex",alignItems:"center",gap:"0.5rem"},children:[h?"🐳":"🤖"," Claude PTY Launch Wizard ",h?"(Docker)":"(Local)"]}),(0,r.jsx)("button",{onClick:e,style:a,"aria-label":"Close wizard",children:"✖"})]}),(0,r.jsxs)("div",{style:d,children:[(0,r.jsx)("p",{style:{fontSize:"0.825rem",color:"var(--muted)",marginBottom:"1.25rem",lineHeight:1.4},children:"Configure the local workspace path and access parameters for the Claude Code session. Settings are saved in `.ai/neural-loom/claude.json`."}),(0,r.jsxs)("div",{style:s,children:[(0,r.jsx)("label",{style:c,children:"Session Display Name"}),(0,r.jsx)("input",{type:"text",value:y.name,onChange:e=>v({...y,name:e.target.value}),placeholder:h?"Claude Docker":"Claude Local",style:p})]}),(0,r.jsxs)("div",{style:s,children:[(0,r.jsx)("label",{style:c,children:"Workspace Directory (Root)"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:y.workspaceRoot,onChange:e=>v({...y,workspaceRoot:e.target.value}),placeholder:"e.g. C:\\Users\\Dave\\OneDrive\\Projects\\JS\\wingman",style:{...p,flex:1}}),(0,r.jsx)("button",{type:"button",onClick:()=>I(!0),style:b,children:"Browse..."})]}),(0,r.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginTop:"0.25rem"},children:"The active folder Claude Code will run in. Leave blank to run in the current orchestrator directory."})]}),(0,r.jsxs)("div",{style:s,children:[(0,r.jsx)("label",{style:c,children:"Scoped Directories (Additional Access)"}),y.scopedDirs.length>0&&(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem",marginBottom:"0.5rem"},children:y.scopedDirs.map((e,o)=>(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:"#080c14",padding:"0.35rem 0.5rem",borderRadius:"4px",border:"1px solid var(--border)"},children:[(0,r.jsx)("span",{style:{fontSize:"0.8rem",fontFamily:"var(--font-mono), monospace",wordBreak:"break-all"},children:e}),(0,r.jsx)("button",{type:"button",onClick:()=>{let e=y.scopedDirs.filter((e,r)=>r!==o);v({...y,scopedDirs:e})},style:{background:"none",border:"none",color:"var(--danger)",cursor:"pointer",fontSize:"0.8rem",padding:"0 0.25rem"},children:"Remove"})]},o))}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:j,onChange:e=>C(e.target.value),placeholder:"e.g. C:\\Users\\Dave\\OneDrive\\Projects\\JS\\other-repo",style:{...p,flex:1}}),(0,r.jsx)("button",{type:"button",onClick:()=>T(!0),style:b,children:"Browse..."}),(0,r.jsx)("button",{type:"button",onClick:()=>{j.trim()&&!y.scopedDirs.includes(j.trim())&&(v({...y,scopedDirs:[...y.scopedDirs,j.trim()]}),C(""))},style:{padding:"0.35rem 0.75rem",borderRadius:"6px",border:"1px solid var(--border-focus)",backgroundColor:"rgba(109, 40, 217, 0.1)",color:"var(--foreground)",fontSize:"0.75rem",fontWeight:600,cursor:"pointer"},children:"Add"})]})]}),R&&(0,r.jsxs)("div",{style:u,children:["✗ ",R]})]}),(0,r.jsxs)("div",{style:m,children:[(0,r.jsx)("button",{onClick:e,style:g,disabled:w,children:"Cancel"}),(0,r.jsx)("button",{onClick:B,style:x,disabled:w,children:w?"Saving...":"Launch Session"})]}),W&&(0,r.jsx)(t.default,{title:"Select Workspace Root",initialPath:y.workspaceRoot,onClose:()=>I(!1),onSelect:e=>v({...y,workspaceRoot:e})}),P&&(0,r.jsx)(t.default,{title:"Add Scoped Directory",initialPath:j,onClose:()=>T(!1),onSelect:e=>C(e)})]})})}])},20032,e=>{e.n(e.i(44837))}]);
|
|
File without changes
|
/package/.next/static/{Zdg5QHFrz2LSBAcINdqar → IUac8eI99EN-VEZyfxyCO}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|