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.
Files changed (58) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  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 +2 -2
  7. package/.next/fallback-build-manifest.json +3 -3
  8. package/.next/prerender-manifest.json +3 -3
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found.html +1 -1
  17. package/.next/server/app/_not-found.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  24. package/.next/server/app/index.html +1 -1
  25. package/.next/server/app/index.rsc +2 -2
  26. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  27. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  28. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  29. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  30. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  31. package/.next/server/app/page/react-loadable-manifest.json +1 -1
  32. package/.next/server/app/page_client-reference-manifest.js +1 -1
  33. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +5 -5
  34. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
  35. package/.next/server/chunks/[root-of-the-server]__0e5cwnx._.js +1 -1
  36. package/.next/server/chunks/[root-of-the-server]__0e5cwnx._.js.map +1 -1
  37. package/.next/server/chunks/ssr/_0t7oqy6._.js +1 -1
  38. package/.next/server/chunks/ssr/_0t7oqy6._.js.map +1 -1
  39. package/.next/server/middleware-build-manifest.js +3 -3
  40. package/.next/server/pages/404.html +1 -1
  41. package/.next/server/pages/500.html +1 -1
  42. package/.next/server/server-reference-manifest.js +1 -1
  43. package/.next/server/server-reference-manifest.json +1 -1
  44. package/.next/static/chunks/{0.fe1iw3rves5.js → 0r1._76-1rt.-.js} +1 -1
  45. package/.next/static/chunks/178yphwi3n~oc.js +1 -0
  46. package/.next/trace +1 -1
  47. package/.next/trace-build +1 -1
  48. package/package.json +1 -1
  49. package/src/app/api/context/claude/route.ts +4 -1
  50. package/src/app/components/ClaudeWizard.tsx +17 -0
  51. package/src/app/page.tsx +1 -1
  52. package/src/lib/agents/ClaudeRunner.ts +19 -3
  53. package/src/lib/agents/DockerRunner.ts +15 -1
  54. package/src/lib/agents/SSHRunner.ts +15 -1
  55. package/.next/static/chunks/03wk6d_hkj.x2.js +0 -1
  56. /package/.next/static/{Zdg5QHFrz2LSBAcINdqar → IUac8eI99EN-VEZyfxyCO}/_buildManifest.js +0 -0
  57. /package/.next/static/{Zdg5QHFrz2LSBAcINdqar → IUac8eI99EN-VEZyfxyCO}/_clientMiddlewareManifest.js +0 -0
  58. /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":234,"timestamp":109770124266,"id":4,"parentId":1,"tags":{},"startTime":1781330505895,"traceId":"318220d88ba8a9c9"},{"name":"load-custom-routes","duration":384,"timestamp":109770124624,"id":5,"parentId":1,"tags":{},"startTime":1781330505896,"traceId":"318220d88ba8a9c9"},{"name":"create-dist-dir","duration":599,"timestamp":109770125042,"id":6,"parentId":1,"tags":{},"startTime":1781330505896,"traceId":"318220d88ba8a9c9"},{"name":"clean","duration":584,"timestamp":109770126557,"id":7,"parentId":1,"tags":{},"startTime":1781330505898,"traceId":"318220d88ba8a9c9"},{"name":"discover-routes","duration":7892,"timestamp":109770149388,"id":8,"parentId":1,"tags":{},"startTime":1781330505920,"traceId":"318220d88ba8a9c9"},{"name":"create-root-mapping","duration":68,"timestamp":109770157333,"id":9,"parentId":1,"tags":{},"startTime":1781330505928,"traceId":"318220d88ba8a9c9"},{"name":"generate-route-types","duration":18890,"timestamp":109770158796,"id":10,"parentId":1,"tags":{},"startTime":1781330505930,"traceId":"318220d88ba8a9c9"},{"name":"public-dir-conflict-check","duration":105,"timestamp":109770177857,"id":11,"parentId":1,"tags":{},"startTime":1781330505949,"traceId":"318220d88ba8a9c9"},{"name":"generate-routes-manifest","duration":2506,"timestamp":109770178072,"id":12,"parentId":1,"tags":{},"startTime":1781330505949,"traceId":"318220d88ba8a9c9"},{"name":"run-turbopack","duration":2349741,"timestamp":109770187670,"id":14,"parentId":1,"tags":{},"startTime":1781330505959,"traceId":"318220d88ba8a9c9"},{"name":"turbopack-build-events","duration":61,"timestamp":109770478803,"id":15,"parentId":1,"tags":{},"startTime":1781330506250,"traceId":"318220d88ba8a9c9"},{"name":"run-typescript","duration":3412340,"timestamp":109772547016,"id":16,"parentId":1,"tags":{},"startTime":1781330508318,"traceId":"318220d88ba8a9c9"},{"name":"generate-required-server-files","duration":1669,"timestamp":109775960242,"id":18,"parentId":1,"tags":{},"startTime":1781330511731,"traceId":"318220d88ba8a9c9"},{"name":"check-static-error-page","duration":6180,"timestamp":109776065568,"id":20,"parentId":19,"tags":{},"startTime":1781330511837,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":498235,"timestamp":109776076302,"id":38,"parentId":22,"tags":{},"startTime":1781330511847,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":506520,"timestamp":109776068147,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781330511839,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":622517,"timestamp":109776076070,"id":37,"parentId":21,"tags":{},"startTime":1781330511847,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":631499,"timestamp":109776067147,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781330511838,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":624331,"timestamp":109776076443,"id":40,"parentId":24,"tags":{},"startTime":1781330511847,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":632175,"timestamp":109776068646,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781330511840,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":629164,"timestamp":109776076967,"id":44,"parentId":28,"tags":{},"startTime":1781330511848,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":636763,"timestamp":109776069423,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781330511840,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":629706,"timestamp":109776076603,"id":42,"parentId":26,"tags":{},"startTime":1781330511848,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":637304,"timestamp":109776069030,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781330511840,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":630897,"timestamp":109776076526,"id":41,"parentId":25,"tags":{},"startTime":1781330511847,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":638632,"timestamp":109776068835,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781330511840,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":632294,"timestamp":109776076370,"id":39,"parentId":23,"tags":{},"startTime":1781330511847,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":640276,"timestamp":109776068425,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781330511839,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":635161,"timestamp":109776077089,"id":45,"parentId":29,"tags":{},"startTime":1781330511848,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":642698,"timestamp":109776069609,"id":29,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781330511841,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":635632,"timestamp":109776076826,"id":43,"parentId":27,"tags":{},"startTime":1781330511848,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":643273,"timestamp":109776069214,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781330511840,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":638423,"timestamp":109776077691,"id":51,"parentId":35,"tags":{},"startTime":1781330511849,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":645366,"timestamp":109776070798,"id":35,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1781330511842,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":639216,"timestamp":109776077588,"id":49,"parentId":33,"tags":{},"startTime":1781330511849,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":646463,"timestamp":109776070372,"id":33,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781330511841,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":639416,"timestamp":109776081121,"id":52,"parentId":36,"tags":{},"startTime":1781330511852,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":649158,"timestamp":109776071412,"id":36,"parentId":19,"tags":{"page":"/"},"startTime":1781330511842,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":643722,"timestamp":109776077648,"id":50,"parentId":34,"tags":{},"startTime":1781330511849,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":650860,"timestamp":109776070540,"id":34,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781330511841,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":644831,"timestamp":109776077302,"id":46,"parentId":30,"tags":{},"startTime":1781330511848,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":652316,"timestamp":109776069841,"id":30,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781330511841,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":647462,"timestamp":109776077439,"id":47,"parentId":31,"tags":{},"startTime":1781330511848,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":654910,"timestamp":109776070024,"id":31,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781330511841,"traceId":"318220d88ba8a9c9"},{"name":"is-page-static","duration":650874,"timestamp":109776077514,"id":48,"parentId":32,"tags":{},"startTime":1781330511848,"traceId":"318220d88ba8a9c9"},{"name":"check-page","duration":658223,"timestamp":109776070201,"id":32,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781330511841,"traceId":"318220d88ba8a9c9"},{"name":"static-check","duration":663346,"timestamp":109776065101,"id":19,"parentId":1,"tags":{},"startTime":1781330511836,"traceId":"318220d88ba8a9c9"},{"name":"write-routes-manifest","duration":931,"timestamp":109776729531,"id":54,"parentId":1,"tags":{},"startTime":1781330512500,"traceId":"318220d88ba8a9c9"},{"name":"load-dotenv","duration":31,"timestamp":109776746224,"id":57,"parentId":56,"tags":{},"startTime":1781330512517,"traceId":"318220d88ba8a9c9"},{"name":"run-export-path-map","duration":368,"timestamp":109776751254,"id":58,"parentId":56,"tags":{},"startTime":1781330512522,"traceId":"318220d88ba8a9c9"},{"name":"next-export","duration":642152,"timestamp":109776745298,"id":56,"parentId":1,"tags":{},"startTime":1781330512516,"traceId":"318220d88ba8a9c9"},{"name":"move-exported-app-not-found-","duration":2643,"timestamp":109777390296,"id":59,"parentId":55,"tags":{},"startTime":1781330513161,"traceId":"318220d88ba8a9c9"},{"name":"move-exported-app-global-error-","duration":2473,"timestamp":109777393092,"id":60,"parentId":55,"tags":{},"startTime":1781330513164,"traceId":"318220d88ba8a9c9"},{"name":"static-generation","duration":665040,"timestamp":109776734898,"id":55,"parentId":1,"tags":{},"startTime":1781330512506,"traceId":"318220d88ba8a9c9"},{"name":"write-routes-manifest","duration":975,"timestamp":109777400109,"id":61,"parentId":1,"tags":{},"startTime":1781330513171,"traceId":"318220d88ba8a9c9"},{"name":"print-tree-view","duration":3152,"timestamp":109777412297,"id":62,"parentId":1,"tags":{},"startTime":1781330513183,"traceId":"318220d88ba8a9c9"},{"name":"write-route-bundle-stats","duration":10086,"timestamp":109777415489,"id":63,"parentId":1,"tags":{},"startTime":1781330513186,"traceId":"318220d88ba8a9c9"},{"name":"telemetry-flush","duration":231205,"timestamp":109777425610,"id":64,"parentId":1,"tags":{},"startTime":1781330513197,"traceId":"318220d88ba8a9c9"},{"name":"next-build","duration":7584270,"timestamp":109770072571,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781330505844,"traceId":"318220d88ba8a9c9"}]
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":2349741,"timestamp":109770187670,"id":14,"parentId":1,"tags":{},"startTime":1781330505959,"traceId":"318220d88ba8a9c9"},{"name":"turbopack-build-events","duration":61,"timestamp":109770478803,"id":15,"parentId":1,"tags":{},"startTime":1781330506250,"traceId":"318220d88ba8a9c9"},{"name":"run-typescript","duration":3412340,"timestamp":109772547016,"id":16,"parentId":1,"tags":{},"startTime":1781330508318,"traceId":"318220d88ba8a9c9"},{"name":"static-check","duration":663346,"timestamp":109776065101,"id":19,"parentId":1,"tags":{},"startTime":1781330511836,"traceId":"318220d88ba8a9c9"},{"name":"static-generation","duration":665040,"timestamp":109776734898,"id":55,"parentId":1,"tags":{},"startTime":1781330512506,"traceId":"318220d88ba8a9c9"},{"name":"telemetry-flush","duration":231205,"timestamp":109777425610,"id":64,"parentId":1,"tags":{},"startTime":1781330513197,"traceId":"318220d88ba8a9c9"},{"name":"next-build","duration":7584270,"timestamp":109770072571,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781330505844,"traceId":"318220d88ba8a9c9"}]
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neural-loom",
3
- "version": "0.2.9",
3
+ "version": "0.2.10",
4
4
  "bin": {
5
5
  "neural-loom": "./bin/cli.js"
6
6
  },
@@ -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 &lt;session-id&gt;</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.9 — Experimental AI Orchestrator Bridge</span>
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
- this.appendLog(`[System] Spawning Claude Code CLI process using Git Bash...\r\n`);
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", "claude"], {
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
- const dockerCmd = `docker run -it --name neural-loom-session-${this.id} --rm ${mountsStr} -w /workspace node:20-alpine npx -y @anthropic-ai/claude-code`;
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
- const sshCmd = `ssh -t ${keyOpt} ${portOpt} ${config.username}@${config.host} "claude"`;
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))}]);