neural-loom 0.2.16 → 0.2.17

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 (59) 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 +3 -3
  32. package/.next/server/app/page_client-reference-manifest.js +1 -1
  33. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +1 -1
  34. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
  35. package/.next/server/chunks/[root-of-the-server]__0ty8hwz._.js +1 -1
  36. package/.next/server/chunks/[root-of-the-server]__0ty8hwz._.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/0bd3rlzi9lh-u.js +1 -0
  45. package/.next/static/chunks/0ek0280331wie.js +1 -0
  46. package/.next/static/chunks/{06z14vx5drwj0.js → 0x__nd4avi0fg.js} +2 -2
  47. package/.next/trace +1 -1
  48. package/.next/trace-build +1 -1
  49. package/package.json +1 -1
  50. package/src/app/api/sessions/route.ts +7 -1
  51. package/src/app/components/IdeLayout.tsx +4 -3
  52. package/src/app/components/TerminalConsole.tsx +5 -4
  53. package/src/app/page.tsx +6 -1
  54. package/src/lib/agents/WebSocketServer.ts +115 -90
  55. package/.next/static/chunks/0cv9~vnm0atn4.js +0 -1
  56. package/.next/static/chunks/0t~533m2dl-bb.js +0 -1
  57. /package/.next/static/{Sqg0WwYlho2e4abhJPPMw → 5kCkuutustVYfLkGO2JIi}/_buildManifest.js +0 -0
  58. /package/.next/static/{Sqg0WwYlho2e4abhJPPMw → 5kCkuutustVYfLkGO2JIi}/_clientMiddlewareManifest.js +0 -0
  59. /package/.next/static/{Sqg0WwYlho2e4abhJPPMw → 5kCkuutustVYfLkGO2JIi}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":282,"timestamp":118007911269,"id":4,"parentId":1,"tags":{},"startTime":1781338743682,"traceId":"9cb8826ecd92b75b"},{"name":"load-custom-routes","duration":343,"timestamp":118007911664,"id":5,"parentId":1,"tags":{},"startTime":1781338743682,"traceId":"9cb8826ecd92b75b"},{"name":"create-dist-dir","duration":1906,"timestamp":118007912037,"id":6,"parentId":1,"tags":{},"startTime":1781338743683,"traceId":"9cb8826ecd92b75b"},{"name":"clean","duration":508,"timestamp":118007914735,"id":7,"parentId":1,"tags":{},"startTime":1781338743685,"traceId":"9cb8826ecd92b75b"},{"name":"discover-routes","duration":7369,"timestamp":118007936353,"id":8,"parentId":1,"tags":{},"startTime":1781338743707,"traceId":"9cb8826ecd92b75b"},{"name":"create-root-mapping","duration":59,"timestamp":118007943770,"id":9,"parentId":1,"tags":{},"startTime":1781338743714,"traceId":"9cb8826ecd92b75b"},{"name":"generate-route-types","duration":17441,"timestamp":118007945233,"id":10,"parentId":1,"tags":{},"startTime":1781338743716,"traceId":"9cb8826ecd92b75b"},{"name":"public-dir-conflict-check","duration":84,"timestamp":118007962798,"id":11,"parentId":1,"tags":{},"startTime":1781338743733,"traceId":"9cb8826ecd92b75b"},{"name":"generate-routes-manifest","duration":2186,"timestamp":118007962977,"id":12,"parentId":1,"tags":{},"startTime":1781338743734,"traceId":"9cb8826ecd92b75b"},{"name":"run-turbopack","duration":2289163,"timestamp":118007971439,"id":14,"parentId":1,"tags":{},"startTime":1781338743742,"traceId":"9cb8826ecd92b75b"},{"name":"turbopack-build-events","duration":64,"timestamp":118008264417,"id":15,"parentId":1,"tags":{},"startTime":1781338744035,"traceId":"9cb8826ecd92b75b"},{"name":"run-typescript","duration":3434329,"timestamp":118010272734,"id":16,"parentId":1,"tags":{},"startTime":1781338746043,"traceId":"9cb8826ecd92b75b"},{"name":"generate-required-server-files","duration":1351,"timestamp":118013707902,"id":18,"parentId":1,"tags":{},"startTime":1781338749478,"traceId":"9cb8826ecd92b75b"},{"name":"check-static-error-page","duration":7348,"timestamp":118013829609,"id":20,"parentId":19,"tags":{},"startTime":1781338749600,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":515970,"timestamp":118013841895,"id":41,"parentId":22,"tags":{},"startTime":1781338749612,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":525707,"timestamp":118013832279,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781338749603,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":639263,"timestamp":118013842115,"id":43,"parentId":24,"tags":{},"startTime":1781338749613,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":648585,"timestamp":118013832862,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781338749603,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":648704,"timestamp":118013842021,"id":42,"parentId":23,"tags":{},"startTime":1781338749613,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":658186,"timestamp":118013832592,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781338749603,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":649657,"timestamp":118013842303,"id":45,"parentId":26,"tags":{},"startTime":1781338749613,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":658525,"timestamp":118013833481,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781338749604,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":654791,"timestamp":118013842209,"id":44,"parentId":25,"tags":{},"startTime":1781338749613,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":663932,"timestamp":118013833114,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781338749604,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":655914,"timestamp":118013842808,"id":47,"parentId":28,"tags":{},"startTime":1781338749613,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":664750,"timestamp":118013834019,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781338749605,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":658504,"timestamp":118013842927,"id":48,"parentId":29,"tags":{},"startTime":1781338749613,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":667255,"timestamp":118013834231,"id":29,"parentId":19,"tags":{"page":"/api/recents"},"startTime":1781338749605,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":662542,"timestamp":118013843513,"id":52,"parentId":33,"tags":{},"startTime":1781338749614,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":671071,"timestamp":118013835036,"id":33,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781338749606,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":663896,"timestamp":118013847267,"id":58,"parentId":39,"tags":{},"startTime":1781338749618,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":674545,"timestamp":118013836663,"id":39,"parentId":19,"tags":{"page":"/"},"startTime":1781338749607,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":671435,"timestamp":118013843760,"id":56,"parentId":37,"tags":{},"startTime":1781338749614,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":679130,"timestamp":118013836117,"id":37,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781338749607,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":674171,"timestamp":118013841449,"id":40,"parentId":21,"tags":{},"startTime":1781338749612,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":684474,"timestamp":118013831188,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781338749602,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":673413,"timestamp":118013844141,"id":57,"parentId":38,"tags":{},"startTime":1781338749615,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":681313,"timestamp":118013836300,"id":38,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1781338749607,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":678441,"timestamp":118013843713,"id":55,"parentId":36,"tags":{},"startTime":1781338749614,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":686315,"timestamp":118013835895,"id":36,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781338749606,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":679345,"timestamp":118013843148,"id":49,"parentId":30,"tags":{},"startTime":1781338749614,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":688097,"timestamp":118013834431,"id":30,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781338749605,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":680072,"timestamp":118013842550,"id":46,"parentId":27,"tags":{},"startTime":1781338749613,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":688908,"timestamp":118013833738,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781338749604,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":681725,"timestamp":118013843663,"id":54,"parentId":35,"tags":{},"startTime":1781338749614,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":689938,"timestamp":118013835495,"id":35,"parentId":19,"tags":{"page":"/api/sessions/start"},"startTime":1781338749606,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":685057,"timestamp":118013843601,"id":53,"parentId":34,"tags":{},"startTime":1781338749614,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":693485,"timestamp":118013835212,"id":34,"parentId":19,"tags":{"page":"/api/sessions/scope"},"startTime":1781338749606,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":685674,"timestamp":118013843363,"id":51,"parentId":32,"tags":{},"startTime":1781338749614,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":694198,"timestamp":118013834859,"id":32,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781338749605,"traceId":"9cb8826ecd92b75b"},{"name":"is-page-static","duration":687810,"timestamp":118013843286,"id":50,"parentId":31,"tags":{},"startTime":1781338749614,"traceId":"9cb8826ecd92b75b"},{"name":"check-page","duration":696471,"timestamp":118013834656,"id":31,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781338749605,"traceId":"9cb8826ecd92b75b"},{"name":"static-check","duration":702012,"timestamp":118013829142,"id":19,"parentId":1,"tags":{},"startTime":1781338749600,"traceId":"9cb8826ecd92b75b"},{"name":"write-routes-manifest","duration":825,"timestamp":118014532169,"id":60,"parentId":1,"tags":{},"startTime":1781338750303,"traceId":"9cb8826ecd92b75b"},{"name":"load-dotenv","duration":37,"timestamp":118014549398,"id":63,"parentId":62,"tags":{},"startTime":1781338750320,"traceId":"9cb8826ecd92b75b"},{"name":"run-export-path-map","duration":511,"timestamp":118014554631,"id":64,"parentId":62,"tags":{},"startTime":1781338750325,"traceId":"9cb8826ecd92b75b"},{"name":"next-export","duration":662660,"timestamp":118014548449,"id":62,"parentId":1,"tags":{},"startTime":1781338750319,"traceId":"9cb8826ecd92b75b"},{"name":"move-exported-app-not-found-","duration":2015,"timestamp":118015212509,"id":65,"parentId":61,"tags":{},"startTime":1781338750983,"traceId":"9cb8826ecd92b75b"},{"name":"move-exported-app-global-error-","duration":1369,"timestamp":118015214626,"id":66,"parentId":61,"tags":{},"startTime":1781338750985,"traceId":"9cb8826ecd92b75b"},{"name":"static-generation","duration":681180,"timestamp":118014537878,"id":61,"parentId":1,"tags":{},"startTime":1781338750308,"traceId":"9cb8826ecd92b75b"},{"name":"write-routes-manifest","duration":791,"timestamp":118015219174,"id":67,"parentId":1,"tags":{},"startTime":1781338750990,"traceId":"9cb8826ecd92b75b"},{"name":"print-tree-view","duration":2954,"timestamp":118015229447,"id":68,"parentId":1,"tags":{},"startTime":1781338751000,"traceId":"9cb8826ecd92b75b"},{"name":"write-route-bundle-stats","duration":16441,"timestamp":118015232437,"id":69,"parentId":1,"tags":{},"startTime":1781338751003,"traceId":"9cb8826ecd92b75b"},{"name":"telemetry-flush","duration":169841,"timestamp":118015248909,"id":70,"parentId":1,"tags":{},"startTime":1781338751019,"traceId":"9cb8826ecd92b75b"},{"name":"next-build","duration":7554364,"timestamp":118007864407,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781338743635,"traceId":"9cb8826ecd92b75b"}]
1
+ [{"name":"generate-buildid","duration":357,"timestamp":121258431658,"id":4,"parentId":1,"tags":{},"startTime":1781341994202,"traceId":"8688474b07a00073"},{"name":"load-custom-routes","duration":427,"timestamp":121258432151,"id":5,"parentId":1,"tags":{},"startTime":1781341994203,"traceId":"8688474b07a00073"},{"name":"create-dist-dir","duration":724,"timestamp":121258432616,"id":6,"parentId":1,"tags":{},"startTime":1781341994203,"traceId":"8688474b07a00073"},{"name":"clean","duration":614,"timestamp":121258436542,"id":7,"parentId":1,"tags":{},"startTime":1781341994207,"traceId":"8688474b07a00073"},{"name":"discover-routes","duration":9549,"timestamp":121258463121,"id":8,"parentId":1,"tags":{},"startTime":1781341994234,"traceId":"8688474b07a00073"},{"name":"create-root-mapping","duration":112,"timestamp":121258472741,"id":9,"parentId":1,"tags":{},"startTime":1781341994243,"traceId":"8688474b07a00073"},{"name":"generate-route-types","duration":18986,"timestamp":121258475084,"id":10,"parentId":1,"tags":{},"startTime":1781341994246,"traceId":"8688474b07a00073"},{"name":"public-dir-conflict-check","duration":106,"timestamp":121258494228,"id":11,"parentId":1,"tags":{},"startTime":1781341994265,"traceId":"8688474b07a00073"},{"name":"generate-routes-manifest","duration":2661,"timestamp":121258494452,"id":12,"parentId":1,"tags":{},"startTime":1781341994265,"traceId":"8688474b07a00073"},{"name":"run-turbopack","duration":2566029,"timestamp":121258505273,"id":14,"parentId":1,"tags":{},"startTime":1781341994276,"traceId":"8688474b07a00073"},{"name":"turbopack-build-events","duration":62,"timestamp":121258816573,"id":15,"parentId":1,"tags":{},"startTime":1781341994587,"traceId":"8688474b07a00073"},{"name":"run-typescript","duration":3916701,"timestamp":121261084165,"id":16,"parentId":1,"tags":{},"startTime":1781341996855,"traceId":"8688474b07a00073"},{"name":"generate-required-server-files","duration":1445,"timestamp":121265001724,"id":18,"parentId":1,"tags":{},"startTime":1781342000772,"traceId":"8688474b07a00073"},{"name":"check-static-error-page","duration":7320,"timestamp":121265134742,"id":20,"parentId":19,"tags":{},"startTime":1781342000905,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":599827,"timestamp":121265147251,"id":41,"parentId":22,"tags":{},"startTime":1781342000918,"traceId":"8688474b07a00073"},{"name":"check-page","duration":609618,"timestamp":121265137581,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781342000908,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":721689,"timestamp":121265147363,"id":42,"parentId":23,"tags":{},"startTime":1781342000918,"traceId":"8688474b07a00073"},{"name":"check-page","duration":731239,"timestamp":121265137901,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781342000908,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":722579,"timestamp":121265148140,"id":48,"parentId":29,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":731601,"timestamp":121265139185,"id":29,"parentId":19,"tags":{"page":"/api/recents"},"startTime":1781342000910,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":732541,"timestamp":121265147542,"id":44,"parentId":25,"tags":{},"startTime":1781342000918,"traceId":"8688474b07a00073"},{"name":"check-page","duration":741804,"timestamp":121265138333,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781342000909,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":735100,"timestamp":121265146927,"id":40,"parentId":21,"tags":{},"startTime":1781342000917,"traceId":"8688474b07a00073"},{"name":"check-page","duration":745605,"timestamp":121265136477,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781342000907,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":742480,"timestamp":121265147635,"id":45,"parentId":26,"tags":{},"startTime":1781342000918,"traceId":"8688474b07a00073"},{"name":"check-page","duration":751644,"timestamp":121265138528,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781342000909,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":746750,"timestamp":121265147451,"id":43,"parentId":24,"tags":{},"startTime":1781342000918,"traceId":"8688474b07a00073"},{"name":"check-page","duration":756138,"timestamp":121265138121,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781342000909,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":751038,"timestamp":121265147875,"id":46,"parentId":27,"tags":{},"startTime":1781342000918,"traceId":"8688474b07a00073"},{"name":"check-page","duration":760242,"timestamp":121265138721,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781342000909,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":754513,"timestamp":121265148731,"id":54,"parentId":35,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":762736,"timestamp":121265140568,"id":35,"parentId":19,"tags":{"page":"/api/sessions/start"},"startTime":1781342000911,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":755829,"timestamp":121265148349,"id":49,"parentId":30,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":764800,"timestamp":121265139427,"id":30,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781342000910,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":756959,"timestamp":121265148774,"id":55,"parentId":36,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":764801,"timestamp":121265140969,"id":36,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781342000912,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":757363,"timestamp":121265148686,"id":53,"parentId":34,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":765790,"timestamp":121265140286,"id":34,"parentId":19,"tags":{"page":"/api/sessions/scope"},"startTime":1781342000911,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":757209,"timestamp":121265152274,"id":58,"parentId":39,"tags":{},"startTime":1781342000923,"traceId":"8688474b07a00073"},{"name":"check-page","duration":767755,"timestamp":121265141769,"id":39,"parentId":19,"tags":{"page":"/"},"startTime":1781342000912,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":760672,"timestamp":121265148969,"id":57,"parentId":38,"tags":{},"startTime":1781342000920,"traceId":"8688474b07a00073"},{"name":"check-page","duration":768258,"timestamp":121265141400,"id":38,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1781342000912,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":762400,"timestamp":121265148557,"id":51,"parentId":32,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":771083,"timestamp":121265139908,"id":32,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781342000910,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":769142,"timestamp":121265148026,"id":47,"parentId":28,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":778260,"timestamp":121265138943,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781342000909,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":772960,"timestamp":121265148621,"id":52,"parentId":33,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":781528,"timestamp":121265140101,"id":33,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781342000911,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":773942,"timestamp":121265148487,"id":50,"parentId":31,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":782781,"timestamp":121265139686,"id":31,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781342000910,"traceId":"8688474b07a00073"},{"name":"is-page-static","duration":782103,"timestamp":121265148813,"id":56,"parentId":37,"tags":{},"startTime":1781342000919,"traceId":"8688474b07a00073"},{"name":"check-page","duration":789765,"timestamp":121265141194,"id":37,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781342000912,"traceId":"8688474b07a00073"},{"name":"static-check","duration":796716,"timestamp":121265134269,"id":19,"parentId":1,"tags":{},"startTime":1781342000905,"traceId":"8688474b07a00073"},{"name":"write-routes-manifest","duration":900,"timestamp":121265932156,"id":60,"parentId":1,"tags":{},"startTime":1781342001703,"traceId":"8688474b07a00073"},{"name":"load-dotenv","duration":41,"timestamp":121265953555,"id":63,"parentId":62,"tags":{},"startTime":1781342001724,"traceId":"8688474b07a00073"},{"name":"run-export-path-map","duration":498,"timestamp":121265958786,"id":64,"parentId":62,"tags":{},"startTime":1781342001729,"traceId":"8688474b07a00073"},{"name":"next-export","duration":691152,"timestamp":121265952393,"id":62,"parentId":1,"tags":{},"startTime":1781342001723,"traceId":"8688474b07a00073"},{"name":"move-exported-app-not-found-","duration":2309,"timestamp":121266645141,"id":65,"parentId":61,"tags":{},"startTime":1781342002416,"traceId":"8688474b07a00073"},{"name":"move-exported-app-global-error-","duration":1659,"timestamp":121266647573,"id":66,"parentId":61,"tags":{},"startTime":1781342002418,"traceId":"8688474b07a00073"},{"name":"static-generation","duration":715196,"timestamp":121265937993,"id":61,"parentId":1,"tags":{},"startTime":1781342001709,"traceId":"8688474b07a00073"},{"name":"write-routes-manifest","duration":804,"timestamp":121266653332,"id":67,"parentId":1,"tags":{},"startTime":1781342002424,"traceId":"8688474b07a00073"},{"name":"print-tree-view","duration":3790,"timestamp":121266670216,"id":68,"parentId":1,"tags":{},"startTime":1781342002441,"traceId":"8688474b07a00073"},{"name":"write-route-bundle-stats","duration":17557,"timestamp":121266674042,"id":69,"parentId":1,"tags":{},"startTime":1781342002445,"traceId":"8688474b07a00073"},{"name":"telemetry-flush","duration":163669,"timestamp":121266691641,"id":70,"parentId":1,"tags":{},"startTime":1781342002462,"traceId":"8688474b07a00073"},{"name":"next-build","duration":8479521,"timestamp":121258375813,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781341994146,"traceId":"8688474b07a00073"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":2289163,"timestamp":118007971439,"id":14,"parentId":1,"tags":{},"startTime":1781338743742,"traceId":"9cb8826ecd92b75b"},{"name":"turbopack-build-events","duration":64,"timestamp":118008264417,"id":15,"parentId":1,"tags":{},"startTime":1781338744035,"traceId":"9cb8826ecd92b75b"},{"name":"run-typescript","duration":3434329,"timestamp":118010272734,"id":16,"parentId":1,"tags":{},"startTime":1781338746043,"traceId":"9cb8826ecd92b75b"},{"name":"static-check","duration":702012,"timestamp":118013829142,"id":19,"parentId":1,"tags":{},"startTime":1781338749600,"traceId":"9cb8826ecd92b75b"},{"name":"static-generation","duration":681180,"timestamp":118014537878,"id":61,"parentId":1,"tags":{},"startTime":1781338750308,"traceId":"9cb8826ecd92b75b"},{"name":"telemetry-flush","duration":169841,"timestamp":118015248909,"id":70,"parentId":1,"tags":{},"startTime":1781338751019,"traceId":"9cb8826ecd92b75b"},{"name":"next-build","duration":7554364,"timestamp":118007864407,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781338743635,"traceId":"9cb8826ecd92b75b"}]
1
+ [{"name":"run-turbopack","duration":2566029,"timestamp":121258505273,"id":14,"parentId":1,"tags":{},"startTime":1781341994276,"traceId":"8688474b07a00073"},{"name":"turbopack-build-events","duration":62,"timestamp":121258816573,"id":15,"parentId":1,"tags":{},"startTime":1781341994587,"traceId":"8688474b07a00073"},{"name":"run-typescript","duration":3916701,"timestamp":121261084165,"id":16,"parentId":1,"tags":{},"startTime":1781341996855,"traceId":"8688474b07a00073"},{"name":"static-check","duration":796716,"timestamp":121265134269,"id":19,"parentId":1,"tags":{},"startTime":1781342000905,"traceId":"8688474b07a00073"},{"name":"static-generation","duration":715196,"timestamp":121265937993,"id":61,"parentId":1,"tags":{},"startTime":1781342001709,"traceId":"8688474b07a00073"},{"name":"telemetry-flush","duration":163669,"timestamp":121266691641,"id":70,"parentId":1,"tags":{},"startTime":1781342002462,"traceId":"8688474b07a00073"},{"name":"next-build","duration":8479521,"timestamp":121258375813,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781341994146,"traceId":"8688474b07a00073"}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neural-loom",
3
- "version": "0.2.16",
3
+ "version": "0.2.17",
4
4
  "bin": {
5
5
  "neural-loom": "./bin/cli.js"
6
6
  },
@@ -1,6 +1,10 @@
1
1
  import { NextResponse } from "next/server";
2
2
  import { SessionManager } from "@/lib/agents/SessionManager";
3
3
 
4
+ declare global {
5
+ var wsPort: number | undefined;
6
+ }
7
+
4
8
  export async function GET(request: Request) {
5
9
  try {
6
10
  const { searchParams } = new URL(request.url);
@@ -15,12 +19,14 @@ export async function GET(request: Request) {
15
19
  return NextResponse.json({
16
20
  ...session.getStatus(),
17
21
  logs: session.logs,
22
+ wsPort: global.wsPort || 3001,
18
23
  });
19
24
  }
20
25
 
21
26
  const sessions = manager.listSessions();
22
27
  const originalCwd = process.env.ORIGINAL_CWD || process.cwd();
23
- return NextResponse.json({ sessions, originalCwd });
28
+ const wsPort = global.wsPort || 3001;
29
+ return NextResponse.json({ sessions, originalCwd, wsPort });
24
30
  } catch (error) {
25
31
  const errorMessage = error instanceof Error ? error.message : "Unknown error";
26
32
  return NextResponse.json({ error: errorMessage }, { status: 500 });
@@ -73,6 +73,7 @@ interface IdeLayoutProps {
73
73
  sessions: RunnerStatus[];
74
74
  onSwitchSession: (id: string) => void;
75
75
  onRefreshSessions?: () => void;
76
+ wsPort?: number;
76
77
  }
77
78
 
78
79
  interface OpenFile {
@@ -82,7 +83,7 @@ interface OpenFile {
82
83
  isModified: boolean;
83
84
  }
84
85
 
85
- export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClose, sessions, onSwitchSession, onRefreshSessions }: IdeLayoutProps) {
86
+ export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClose, sessions, onSwitchSession, onRefreshSessions, wsPort = 3001 }: IdeLayoutProps) {
86
87
  const scopedDirsStr = JSON.stringify(scopedDirs);
87
88
  const activeSession = sessions.find(s => s.id === sessionId);
88
89
  const [workspace, setWorkspace] = useState<WorkspaceData | null>(null);
@@ -1411,7 +1412,7 @@ export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClos
1411
1412
 
1412
1413
  <div style={{ ...terminalConsoleWrapperStyle, display: "flex", width: "100%", height: "100%" }}>
1413
1414
  <div style={{ flex: 1, height: "100%", borderRight: splitSessionId ? "1px solid var(--border)" : "none", overflow: "hidden" }}>
1414
- <TerminalConsole sessionId={sessionId} height="100%" />
1415
+ <TerminalConsole sessionId={sessionId} height="100%" wsPort={wsPort} />
1415
1416
  </div>
1416
1417
  {splitSessionId && (
1417
1418
  <div style={{ flex: 1, height: "100%", overflow: "hidden", display: "flex", flexDirection: "column" }}>
@@ -1426,7 +1427,7 @@ export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClos
1426
1427
  </button>
1427
1428
  </div>
1428
1429
  <div style={{ flex: 1, overflow: "hidden" }}>
1429
- <TerminalConsole sessionId={splitSessionId} height="100%" />
1430
+ <TerminalConsole sessionId={splitSessionId} height="100%" wsPort={wsPort} />
1430
1431
  </div>
1431
1432
  </div>
1432
1433
  )}
@@ -9,9 +9,10 @@ import "xterm/css/xterm.css";
9
9
  interface TerminalConsoleProps {
10
10
  sessionId: string;
11
11
  height?: string | number;
12
+ wsPort?: number;
12
13
  }
13
14
 
14
- export default function TerminalConsole({ sessionId, height = "400px" }: TerminalConsoleProps) {
15
+ export default function TerminalConsole({ sessionId, height = "400px", wsPort = 3001 }: TerminalConsoleProps) {
15
16
  const terminalRef = useRef<HTMLDivElement>(null);
16
17
  const xtermRef = useRef<Terminal | null>(null);
17
18
  const wsRef = useRef<WebSocket | null>(null);
@@ -130,9 +131,9 @@ export default function TerminalConsole({ sessionId, height = "400px" }: Termina
130
131
 
131
132
  xtermRef.current = term;
132
133
 
133
- // Connect WebSocket client to gateway server on port 3001
134
+ // Connect WebSocket client to gateway server on dynamic port
134
135
  const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
135
- const wsUrl = `${protocol}//${window.location.hostname}:3001`;
136
+ const wsUrl = `${protocol}//${window.location.hostname}:${wsPort}`;
136
137
  const ws = new WebSocket(wsUrl);
137
138
  wsRef.current = ws;
138
139
 
@@ -216,7 +217,7 @@ export default function TerminalConsole({ sessionId, height = "400px" }: Termina
216
217
  console.warn("Error disposing terminal:", e);
217
218
  }
218
219
  };
219
- }, [sessionId]);
220
+ }, [sessionId, wsPort]);
220
221
 
221
222
  return (
222
223
  <div
package/src/app/page.tsx CHANGED
@@ -88,6 +88,7 @@ export default function Home() {
88
88
  const [isClaudeWizardOpen, setIsClaudeWizardOpen] = useState<boolean>(false);
89
89
  const [isClaudeDockerLaunch, setIsClaudeDockerLaunch] = useState<boolean>(false);
90
90
  const [serverCwd, setServerCwd] = useState<string>("");
91
+ const [wsPort, setWsPort] = useState<number>(3001);
91
92
 
92
93
  const activeSession = sessions.find(s => s.id === activeSessionId);
93
94
  const isDockerActive = sessions.some(s => (s.type === 'claude-docker' || s.type === 'aider-docker') && s.status === 'running');
@@ -101,6 +102,9 @@ export default function Home() {
101
102
  if (data.sessions) {
102
103
  setSessions(data.sessions);
103
104
  }
105
+ if (data.wsPort) {
106
+ setWsPort(data.wsPort);
107
+ }
104
108
  if (data.originalCwd) {
105
109
  setServerCwd(data.originalCwd);
106
110
  }
@@ -226,6 +230,7 @@ export default function Home() {
226
230
  sessions={sessions}
227
231
  onSwitchSession={(id) => setActiveSessionId(id)}
228
232
  onRefreshSessions={fetchSessions}
233
+ wsPort={wsPort}
229
234
  />
230
235
  </div>
231
236
  ) : (
@@ -383,7 +388,7 @@ export default function Home() {
383
388
  >Close Panel ✖</button>
384
389
  </div>
385
390
  </div>
386
- <TerminalConsole sessionId={activeSessionId} />
391
+ <TerminalConsole sessionId={activeSessionId} wsPort={wsPort} />
387
392
  </section>
388
393
  )}
389
394
 
@@ -3,6 +3,7 @@ import { AgentRunner } from "./AgentRunner";
3
3
 
4
4
  declare global {
5
5
  var wss: WebSocketServer | undefined;
6
+ var wsPort: number | undefined;
6
7
  }
7
8
 
8
9
  let getSessionCallback: ((id: string) => AgentRunner | undefined) | null = null;
@@ -13,120 +14,144 @@ export function initWebSocketServer(port = 3001, getSession?: (id: string) => Ag
13
14
  }
14
15
  // Prevent duplicate WebSocket servers during hot reloads in development
15
16
  if (global.wss) {
16
- console.log("[WebSocketServer] WebSocket Server already active on port 3001 (cached).");
17
+ console.log(`[WebSocketServer] WebSocket Server already active on port ${global.wsPort || 3001} (cached).`);
17
18
  return;
18
19
  }
19
20
 
20
- console.log(`[WebSocketServer] Launching NeuralLoom WebSocket Gateway on port ${port}...`);
21
+ let currentPort = port;
22
+ const maxPort = port + 10;
21
23
 
22
- try {
23
- const wss = new WebSocketServer({ port });
24
- wss.on("error", (err) => {
25
- console.error("[WebSocketServer] WebSocket server error:", err);
26
- });
27
- global.wss = wss;
24
+ function tryBind() {
25
+ console.log(`[WebSocketServer] Launching NeuralLoom WebSocket Gateway on port ${currentPort}...`);
28
26
 
29
- wss.on("connection", (ws: WebSocket & { sessionId?: string }) => {
30
- console.log("[WebSocketServer] New client connected via gateway.");
27
+ try {
28
+ const wss = new WebSocketServer({ port: currentPort });
31
29
 
32
- let activeSessionId: string | null = null;
33
- let outputListener: ((data: string) => void) | null = null;
34
- let mockBuffer = "";
30
+ wss.on("error", (err: unknown) => {
31
+ const socketErr = err as { code?: string };
32
+ if (socketErr.code === "EADDRINUSE" && currentPort < maxPort) {
33
+ console.warn(`[WebSocketServer] Port ${currentPort} in use, trying next port...`);
34
+ currentPort++;
35
+ tryBind();
36
+ } else {
37
+ console.error("[WebSocketServer] WebSocket server error:", err);
38
+ }
39
+ });
35
40
 
36
- ws.on("message", async (rawMsg) => {
37
- try {
38
- const msg = JSON.parse(rawMsg.toString());
41
+ wss.on("listening", () => {
42
+ global.wss = wss;
43
+ global.wsPort = currentPort;
44
+ console.log(`[WebSocketServer] WebSocket gateway successfully listening on port ${currentPort}.`);
45
+ });
39
46
 
40
- // Client handshake to establish connection to a specific session
41
- if (msg.type === "handshake") {
42
- const { sessionId } = msg;
43
- const session = getSessionCallback ? getSessionCallback(sessionId) : null;
47
+ wss.on("connection", (ws: WebSocket & { sessionId?: string }) => {
48
+ console.log("[WebSocketServer] New client connected via gateway.");
44
49
 
45
- if (session) {
46
- activeSessionId = sessionId;
47
- ws.sessionId = sessionId;
48
- console.log(`[WebSocketServer] Client connected to active session: ${sessionId}`);
49
-
50
- // Subscribe to runner output events
51
- outputListener = (data: string) => {
52
- if (ws.readyState === WebSocket.OPEN) {
53
- ws.send(JSON.stringify({ type: "output", data }));
54
- }
55
- };
56
- session.onOutput(outputListener);
57
-
58
- // Send handshake acknowledgment and full historical logs
59
- ws.send(
60
- JSON.stringify({
61
- type: "handshake-ack",
62
- sessionId,
63
- history: session.logs.join(""),
64
- })
65
- );
66
- } else {
67
- ws.send(JSON.stringify({ type: "error", message: "Requested session not found" }));
50
+ let activeSessionId: string | null = null;
51
+ let outputListener: ((data: string) => void) | null = null;
52
+ let mockBuffer = "";
53
+
54
+ ws.on("message", async (rawMsg) => {
55
+ try {
56
+ const msg = JSON.parse(rawMsg.toString());
57
+
58
+ // Client handshake to establish connection to a specific session
59
+ if (msg.type === "handshake") {
60
+ const { sessionId } = msg;
61
+ const session = getSessionCallback ? getSessionCallback(sessionId) : null;
62
+
63
+ if (session) {
64
+ activeSessionId = sessionId;
65
+ ws.sessionId = sessionId;
66
+ console.log(`[WebSocketServer] Client connected to active session: ${sessionId}`);
67
+
68
+ // Subscribe to runner output events
69
+ outputListener = (data: string) => {
70
+ if (ws.readyState === WebSocket.OPEN) {
71
+ ws.send(JSON.stringify({ type: "output", data }));
72
+ }
73
+ };
74
+ session.onOutput(outputListener);
75
+
76
+ // Send handshake acknowledgment and full historical logs
77
+ ws.send(
78
+ JSON.stringify({
79
+ type: "handshake-ack",
80
+ sessionId,
81
+ history: session.logs.join(""),
82
+ })
83
+ );
84
+ } else {
85
+ ws.send(JSON.stringify({ type: "error", message: "Requested session not found" }));
86
+ }
68
87
  }
69
- }
70
88
 
71
- // User terminal input routing
72
- if (msg.type === "input" && activeSessionId) {
73
- const session = getSessionCallback ? getSessionCallback(activeSessionId) : null;
74
- if (session && session.status === "running") {
75
- if (session.type === "mock") {
76
- // Buffer input for simulated command parsing in MockRunner
77
- const data = msg.data;
78
- if (data === "\r" || data === "\r\n") {
79
- ws.send(JSON.stringify({ type: "output", data: "\r\n" }));
80
- const cmd = mockBuffer;
81
- mockBuffer = "";
82
- await session.sendInput(cmd);
83
- } else if (data === "\u007f" || data === "\b") { // Backspace
84
- if (mockBuffer.length > 0) {
85
- mockBuffer = mockBuffer.slice(0, -1);
86
- ws.send(JSON.stringify({ type: "output", data: "\b \b" }));
89
+ // User terminal input routing
90
+ if (msg.type === "input" && activeSessionId) {
91
+ const session = getSessionCallback ? getSessionCallback(activeSessionId) : null;
92
+ if (session && session.status === "running") {
93
+ if (session.type === "mock") {
94
+ // Buffer input for simulated command parsing in MockRunner
95
+ const data = msg.data;
96
+ if (data === "\r" || data === "\r\n") {
97
+ ws.send(JSON.stringify({ type: "output", data: "\r\n" }));
98
+ const cmd = mockBuffer;
99
+ mockBuffer = "";
100
+ await session.sendInput(cmd);
101
+ } else if (data === "\u007f" || data === "\b") { // Backspace
102
+ if (mockBuffer.length > 0) {
103
+ mockBuffer = mockBuffer.slice(0, -1);
104
+ ws.send(JSON.stringify({ type: "output", data: "\b \b" }));
105
+ }
106
+ } else {
107
+ mockBuffer += data;
108
+ ws.send(JSON.stringify({ type: "output", data })); // Local echo of key
87
109
  }
88
110
  } else {
89
- mockBuffer += data;
90
- ws.send(JSON.stringify({ type: "output", data })); // Local echo of key
111
+ // Pass raw keystrokes straight to Claude Code PTY
112
+ await session.sendInput(msg.data, true);
91
113
  }
92
- } else {
93
- // Pass raw keystrokes straight to Claude Code PTY
94
- await session.sendInput(msg.data, true);
95
114
  }
96
115
  }
116
+
117
+ // User terminal resize routing
118
+ if (msg.type === "resize" && activeSessionId) {
119
+ const { cols, rows } = msg;
120
+ const session = getSessionCallback ? getSessionCallback(activeSessionId) : null;
121
+ if (session) {
122
+ session.resize(cols, rows);
123
+ }
124
+ }
125
+ } catch (err) {
126
+ console.error("[WebSocketServer] Error processing socket packet:", err);
97
127
  }
128
+ });
98
129
 
99
- // User terminal resize routing
100
- if (msg.type === "resize" && activeSessionId) {
101
- const { cols, rows } = msg;
130
+ ws.on("close", () => {
131
+ if (activeSessionId && outputListener) {
102
132
  const session = getSessionCallback ? getSessionCallback(activeSessionId) : null;
103
133
  if (session) {
104
- session.resize(cols, rows);
134
+ session.offOutput(outputListener);
105
135
  }
106
136
  }
107
- } catch (err) {
108
- console.error("[WebSocketServer] Error processing socket packet:", err);
109
- }
110
- });
111
-
112
- ws.on("close", () => {
113
- if (activeSessionId && outputListener) {
114
- const session = getSessionCallback ? getSessionCallback(activeSessionId) : null;
115
- if (session) {
116
- session.offOutput(outputListener);
117
- }
118
- }
119
- console.log("[WebSocketServer] Client connection closed.");
120
- });
137
+ console.log("[WebSocketServer] Client connection closed.");
138
+ });
121
139
 
122
- ws.on("error", (err) => {
123
- console.error("[WebSocketServer] Socket error:", err);
140
+ ws.on("error", (err) => {
141
+ console.error("[WebSocketServer] Socket error:", err);
142
+ });
124
143
  });
125
- });
126
144
 
127
- console.log(`[WebSocketServer] WebSocket gateway successfully listening on port ${port}.`);
128
- } catch (error) {
129
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
130
- console.error(`[WebSocketServer] Failed to initialize WebSocket Server: ${errorMessage}`);
145
+ } catch (error) {
146
+ if (currentPort < maxPort) {
147
+ currentPort++;
148
+ tryBind();
149
+ } else {
150
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
151
+ console.error(`[WebSocketServer] Failed to initialize WebSocket Server: ${errorMessage}`);
152
+ }
153
+ }
131
154
  }
155
+
156
+ tryBind();
132
157
  }
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,3839,e=>{"use strict";var t=e.i(43476),r=e.i(71645),o=e.i(5991),i=e.i(54370);let n={display:"flex",width:"100%",height:"100%",flex:1,minHeight:0,backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"12px",overflow:"hidden",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.6)"},l={width:"50px",backgroundColor:"#030406",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",justifyContent:"space-between",alignItems:"center",padding:"0.75rem 0"},a={display:"flex",flexDirection:"column",width:"100%",gap:"0.5rem"},s={width:"100%",height:"45px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:"1.25rem",transition:"all 0.15s ease"},d={width:"260px",backgroundColor:"#080c14",borderRight:"1px solid var(--border)",display:"flex",flexDirection:"column",overflow:"hidden"},c={padding:"0.75rem 1rem",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",background:"rgba(255,255,255,0.02)"},p={flex:1,overflowY:"auto",padding:"0.75rem 0"},m={padding:"0.25rem 1rem",fontSize:"0.75rem",fontWeight:700,color:"var(--muted)",display:"flex",alignItems:"center",justifyContent:"space-between",textTransform:"uppercase",letterSpacing:"0.05em"},u={fontSize:"0.6rem",backgroundColor:"rgba(59, 130, 246, 0.1)",color:"#3b82f6",padding:"0.1rem 0.3rem",borderRadius:"3px",textTransform:"none",letterSpacing:"normal"},f={fontSize:"0.75rem",fontWeight:600,color:"var(--foreground)"},h={flex:1,display:"flex",flexDirection:"column",overflow:"hidden",backgroundColor:"#0b101b"},g={flex:1,display:"flex",flexDirection:"column",borderBottom:"1px solid var(--border)",overflow:"hidden"},x={height:"35px",backgroundColor:"#05070a",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",paddingRight:"0.75rem"},y={display:"flex",height:"100%",overflowX:"auto"},b={padding:"0 1rem",height:"100%",display:"flex",alignItems:"center",gap:"0.75rem",fontSize:"0.75rem",borderRight:"1px solid var(--border)",borderBottom:"2px solid transparent",cursor:"pointer",transition:"all 0.15s ease",maxWidth:"150px"},v={fontSize:"0.65rem",color:"var(--muted)",cursor:"pointer",padding:"2px"},j={color:"var(--primary)",fontSize:"0.65rem",marginLeft:"2px"},C={padding:"0.25rem 0.5rem",borderRadius:"4px",border:"1px solid var(--border-focus)",backgroundColor:"rgba(16, 185, 129, 0.15)",color:"var(--success)",fontSize:"0.7rem",fontWeight:600},w={flex:1,position:"relative",overflow:"hidden"},S={width:"100%",height:"100%",backgroundColor:"#0b101b",border:"none",outline:"none",color:"#e2e8f0",fontFamily:"var(--font-mono), monospace",fontSize:"0.85rem",padding:"1rem",resize:"none",lineHeight:1.5},k={display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",color:"var(--muted)",textAlign:"center",padding:"2rem"},T={flex:1.4,backgroundColor:"#05070a",display:"flex",flexDirection:"column",overflow:"hidden"},z={padding:"0.5rem 1rem",borderBottom:"1px solid var(--border)",display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:"rgba(255,255,255,0.01)"},R={padding:"0.3rem 0.6rem",borderRadius:"4px",border:"1px solid var(--primary)",backgroundColor:"transparent",color:"var(--primary)",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},P={padding:"0.3rem 0.6rem",borderRadius:"4px",border:"1px solid var(--success)",backgroundColor:"transparent",color:"var(--success)",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},F={flex:1,overflow:"hidden"};function I({node:e,onSelect:o,onCreate:i,onRename:n,onDelete:l,isReadOnly:a=!1}){let[s,d]=(0,r.useState)(!1),[c,p]=(0,r.useState)(!1),m="directory"===e.type,u={padding:"0.25rem 0.5rem",display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:"0.8rem",fontFamily:"var(--font-mono), monospace",cursor:"pointer",color:"var(--foreground)",borderRadius:"4px",transition:"background 0.1s ease",userSelect:"none",backgroundColor:c?"rgba(255, 255, 255, 0.05)":"transparent",minWidth:0,width:"100%"},f={display:"flex",alignItems:"center",gap:"0.375rem",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},h={display:c?"flex":"none",alignItems:"center",gap:"0.25rem",paddingLeft:"0.5rem",flexShrink:0},g={background:"none",border:"none",padding:"2px 4px",cursor:"pointer",fontSize:"0.75rem",color:"var(--muted)",borderRadius:"3px",transition:"all 0.1s ease"},x=(e,t)=>{e.stopPropagation(),t()};return m?(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{onClick:()=>d(!s),style:u,onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),children:[(0,t.jsxs)("div",{style:f,children:[(0,t.jsx)("span",{style:{color:"#eab308"},children:s?"📂":"📁"}),(0,t.jsx)("span",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),!a&&(0,t.jsxs)("div",{style:h,children:[(0,t.jsx)("button",{onClick:t=>x(t,()=>i(e.path,"file")),style:g,title:"New File inside...",onMouseEnter:e=>e.currentTarget.style.color="var(--success)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"📄+"}),(0,t.jsx)("button",{onClick:t=>x(t,()=>i(e.path,"directory")),style:g,title:"New Folder inside...",onMouseEnter:e=>e.currentTarget.style.color="var(--success)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"📁+"}),(0,t.jsx)("button",{onClick:t=>x(t,()=>n(e.path)),style:g,title:"Rename...",onMouseEnter:e=>e.currentTarget.style.color="var(--primary)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"✏️"}),(0,t.jsx)("button",{onClick:t=>x(t,()=>l(e.path)),style:g,title:"Delete Folder",onMouseEnter:e=>e.currentTarget.style.color="var(--danger)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"🗑️"})]})]}),s&&e.children&&(0,t.jsx)("div",{style:{paddingLeft:"10px",borderLeft:"1px solid rgba(255, 255, 255, 0.05)",marginLeft:"8px"},children:e.children.map(e=>(0,t.jsx)(I,{node:e,onSelect:o,onCreate:i,onRename:n,onDelete:l,isReadOnly:a},e.path))})]}):(0,t.jsxs)("div",{onClick:()=>o(e.path),style:u,onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),children:[(0,t.jsxs)("div",{style:f,children:[(0,t.jsx)("span",{style:{color:"#3b82f6"},children:"📄"}),(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),!a&&(0,t.jsxs)("div",{style:h,children:[(0,t.jsx)("button",{onClick:t=>x(t,()=>n(e.path)),style:g,title:"Rename...",onMouseEnter:e=>e.currentTarget.style.color="var(--primary)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"✏️"}),(0,t.jsx)("button",{onClick:t=>x(t,()=>l(e.path)),style:g,title:"Delete File",onMouseEnter:e=>e.currentTarget.style.color="var(--danger)",onMouseLeave:e=>e.currentTarget.style.color="var(--muted)",children:"🗑️"})]})]})}let W={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.7)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(4px)"},L={width:"420px",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"12px",padding:"1.5rem",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.8)"},O={width:"100%",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",padding:"0.5rem 0.75rem",color:"#e2e8f0",fontSize:"0.85rem",outline:"none",marginBottom:"1.5rem",fontFamily:"var(--font-mono), monospace"},D={display:"flex",justifyContent:"flex-end",gap:"0.75rem"},E={backgroundColor:"transparent",border:"1px solid var(--border)",color:"var(--foreground)",padding:"0.5rem 1rem",borderRadius:"6px",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},M={backgroundColor:"var(--primary)",border:"none",color:"#ffffff",padding:"0.5rem 1rem",borderRadius:"6px",fontSize:"0.8rem",fontWeight:600,cursor:"pointer"},N={background:"none",border:"none",color:"var(--muted)",cursor:"pointer",fontSize:"0.8rem",padding:"4px",borderRadius:"3px",transition:"all 0.1s ease"},B={position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.5)",display:"flex",alignItems:"flex-start",justifyContent:"center",zIndex:1100,paddingTop:"5vh",backdropFilter:"blur(2px)"},U={width:"600px",backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"8px",boxShadow:"0 10px 25px -5px rgba(0, 0, 0, 0.8)",display:"flex",flexDirection:"column",overflow:"hidden"},$={width:"100%",backgroundColor:"#05070a",border:"none",borderBottom:"1px solid var(--border)",padding:"0.75rem 1rem",color:"#e2e8f0",fontSize:"0.9rem",outline:"none",fontFamily:"var(--font-mono), monospace"},A={maxHeight:"300px",overflowY:"auto",padding:"0.25rem 0"},V={display:"flex",alignItems:"center",padding:"0.5rem 1rem",cursor:"pointer",transition:"all 0.1s ease",justifyContent:"space-between"},J={backgroundColor:"rgba(255,255,255,0.02)",border:"1px solid var(--border)",borderRadius:"6px",padding:"0.5rem 0.75rem",display:"flex",flexDirection:"column",gap:"0.25rem"},K={fontSize:"0.6rem",color:"var(--muted)",textTransform:"uppercase"},_={fontSize:"1.1rem",fontWeight:700,fontFamily:"var(--font-mono)"},H={width:"100%",height:"6px",backgroundColor:"rgba(255,255,255,0.05)",borderRadius:"3px",overflow:"hidden"},Y={height:"100%",borderRadius:"3px",transition:"width 0.5s ease-out"},X={padding:"0.35rem 1rem",borderBottom:"1px solid var(--border)",backgroundColor:"#030406",display:"flex",alignItems:"center",gap:"0.75rem",flexWrap:"nowrap",overflowX:"auto"},G={padding:"0.15rem 0.45rem",borderRadius:"4px",border:"1px solid var(--border)",backgroundColor:"rgba(255,255,255,0.02)",color:"var(--muted)",fontSize:"0.7rem",fontFamily:"var(--font-mono)",fontWeight:600,cursor:"pointer",transition:"all 0.1s ease"},Q={backgroundColor:"#05070a",borderBottom:"1px solid var(--border)",padding:"0.25rem 0.75rem 0 0.75rem",display:"flex",alignItems:"center",justifyContent:"space-between"},q={padding:"0.35rem 0.75rem",borderRadius:"6px 6px 0 0",border:"1px solid var(--border)",borderBottom:"none",display:"flex",alignItems:"center",gap:"0.5rem",cursor:"pointer",transition:"all 0.15s ease"};e.s(["default",0,function({sessionId:e,workspaceRoot:Z,scopedDirs:ee,onClose:et,sessions:er,onSwitchSession:eo,onRefreshSessions:ei}){let en=JSON.stringify(ee),el=er.find(t=>t.id===e),[ea,es]=(0,r.useState)(null),[ed,ec]=(0,r.useState)([]),[ep,em]=(0,r.useState)(!1),eu=async t=>{try{let r=await fetch("/api/sessions/scope",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:e,path:t,action:"add"})});if(r.ok)ei&&ei();else{let e=await r.json();alert(e.error||"Failed to add scoped folder.")}}catch(e){console.error(e),alert("Network error: failed to add scoped folder.")}},ef=async t=>{try{let r=await fetch("/api/sessions/scope",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:e,path:t,action:"remove"})});if(r.ok)ei&&ei();else{let e=await r.json();alert(e.error||"Failed to remove scoped folder.")}}catch(e){console.error(e),alert("Network error: failed to remove scoped folder.")}},[eh,eg]=(0,r.useState)({}),[ex,ey]=(0,r.useState)({}),eb=eh[e]||[],ev=ex[e]||null,ej=(0,r.useCallback)(t=>{eg(r=>{let o=r[e]||[],i="function"==typeof t?t(o):t;return{...r,[e]:i}})},[e]),eC=(0,r.useCallback)(t=>{ey(r=>({...r,[e]:t}))},[e]),[ew,eS]=(0,r.useState)(!0),[ek,eT]=(0,r.useState)("explorer"),[ez,eR]=(0,r.useState)(!1),[eP,eF]=(0,r.useState)([]),[eI,eW]=(0,r.useState)(!1),[eL,eO]=(0,r.useState)(!1),[eD,eE]=(0,r.useState)(null),[eM,eN]=(0,r.useState)(null),[eB,eU]=(0,r.useState)(""),[e$,eA]=(0,r.useState)([]),[eV,eJ]=(0,r.useState)(""),[eK,e_]=(0,r.useState)(""),[eH,eY]=(0,r.useState)(null),eX=(0,r.useCallback)(async()=>{await new Promise(e=>setTimeout(e,0)),eO(!0);try{let e=await fetch(`/api/git?action=status&root=${encodeURIComponent(Z)}`);if(e.ok){let t=await e.json();t.success&&(eW(t.isGit),eF(t.files||[]))}}catch(e){console.error("Failed to load git status:",e)}finally{eO(!1)}},[Z]);(0,r.useEffect)(()=>{setTimeout(()=>{eX()},0);let e=setInterval(eX,5e3);return()=>clearInterval(e)},[eX]),(0,r.useEffect)(()=>{let t=async()=>{try{let t=await fetch(`/api/sessions?id=${e}`);if(t.ok){let e=await t.json();eE(e)}}catch(e){console.error("Failed to fetch session status:",e)}};t();let r=setInterval(t,3e3);return()=>clearInterval(r)},[e]),(0,r.useEffect)(()=>{let t=async()=>{try{let t=await fetch(`/api/sessions/stats?id=${e}`);if(t.ok){let e=await t.json();eN(e)}}catch(e){console.error("Failed to fetch container/process stats:",e)}};t();let r=setInterval(t,3e3);return()=>clearInterval(r)},[e]),(0,r.useEffect)(()=>{let e=localStorage.getItem("neural_loom_custom_commands");if(e)try{let t=JSON.parse(e);setTimeout(()=>{eA(t)},0)}catch{}},[]);let eG=e=>{eA(e),localStorage.setItem("neural_loom_custom_commands",JSON.stringify(e))},eQ=async t=>{try{await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,command:t})})}catch(e){console.error("Failed to inject command:",e)}},eq=eD?.type?.includes("aider"),[eZ,e0]=(0,r.useState)({type:null,targetPath:null,inputValue:"",error:null}),[e5,e1]=(0,r.useState)(!1),[e2,e7]=(0,r.useState)(""),[e8,e6]=(0,r.useState)([]),[e3,e4]=(0,r.useState)(0),e9=(0,r.useCallback)(async()=>{await new Promise(e=>setTimeout(e,0)),eR(!0);try{let e=ee&&ee.length>0?`&scoped=${encodeURIComponent(ee.join(","))}`:"",t=await fetch(`/api/files?action=list&root=${encodeURIComponent(Z)}${e}`);if(t.ok){let e=await t.json();e.success&&(es(e.workspace),ec(e.scoped||[]))}}catch(e){console.error("Failed to load file explorer:",e)}finally{eR(!1)}},[Z,en]);(0,r.useEffect)(()=>{setTimeout(()=>{e9()},0)},[e9]);let te=(e,t)=>{e0({type:"file"===t?"create-file":"create-folder",targetPath:e,inputValue:"",error:null})},tt=e=>{let t=e.split(/[/\\]/).pop()||"";e0({type:"rename",targetPath:e,inputValue:t,error:null})},tr=e=>{e0({type:"delete",targetPath:e,inputValue:"",error:null})},to=async e=>{if(e&&e.preventDefault(),eZ.type&&eZ.targetPath){e0(e=>({...e,error:null}));try{if("create-file"===eZ.type||"create-folder"===eZ.type){if(!eZ.inputValue.trim())return void e0(e=>({...e,error:"Name cannot be empty"}));let e=`${eZ.targetPath}/${eZ.inputValue.trim()}`,t="create-file"===eZ.type?"file":"directory",r=await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"create",path:e,type:t})});if(r.ok){let o=await r.json();o.success?(e0({type:null,targetPath:null,inputValue:"",error:null}),await e9(),"file"===t&&await tn(e)):e0(e=>({...e,error:o.error||"Failed to create item"}))}else{let e=await r.json();e0(t=>({...t,error:e.error||"Failed to create item"}))}}if("rename"===eZ.type){if(!eZ.inputValue.trim())return void e0(e=>({...e,error:"Name cannot be empty"}));let e=eZ.targetPath.replace(/\\/g,"/"),t=e.substring(0,e.lastIndexOf("/")),r=t?`${t}/${eZ.inputValue.trim()}`:eZ.inputValue.trim(),o=await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"rename",oldPath:eZ.targetPath,newPath:r})});if(o.ok){let e=await o.json();e.success?(ej(e=>e.map(e=>e.path===eZ.targetPath?{...e,path:r,name:eZ.inputValue.trim()}:e)),ev===eZ.targetPath&&eC(r),e0({type:null,targetPath:null,inputValue:"",error:null}),await e9()):e0(t=>({...t,error:e.error||"Failed to rename item"}))}else{let e=await o.json();e0(t=>({...t,error:e.error||"Failed to rename item"}))}}if("delete"===eZ.type){let e=await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",path:eZ.targetPath})});if(e.ok){let t=await e.json();t.success?(tl(eZ.targetPath),e0({type:null,targetPath:null,inputValue:"",error:null}),await e9()):e0(e=>({...e,error:t.error||"Failed to delete item"}))}else{let t=await e.json();e0(e=>({...e,error:t.error||"Failed to delete item"}))}}}catch(e){console.error("File operation failed:",e),e0(e=>({...e,error:"An unexpected error occurred"}))}}},ti=(0,r.useCallback)(async()=>{try{let e=ee&&ee.length>0?`&scoped=${encodeURIComponent(ee.join(","))}`:"",t=await fetch(`/api/files?action=flat_list&root=${encodeURIComponent(Z)}${e}`);if(t.ok){let e=await t.json();e.success&&e.files&&e6(e.files)}}catch(e){console.error("Failed to load flat files list:",e)}},[Z,en]);(0,r.useEffect)(()=>{e5&&setTimeout(()=>{e7(""),e4(0),ti()},0)},[e5,ti]);let tn=async e=>{if(eb.find(t=>t.path===e))return void eC(e);try{let t=await fetch(`/api/files?action=read&path=${encodeURIComponent(e)}`);if(t.ok){let r=await t.json();if(r.success){let t={name:e.split(/[/\\]/).pop()||"Untitled",path:e,content:r.content,isModified:!1};ej([...eb,t]),eC(e)}}}catch(t){console.error(`Failed to read file ${e}:`,t)}},tl=e=>{let t=eb.filter(t=>t.path!==e);ej(t),ev===e&&eC(t.length>0?t[t.length-1].path:null)},ta=eb.find(e=>e.path===ev),ts=(0,r.useCallback)(async()=>{if(ta)try{(await fetch("/api/files",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"write",path:ta.path,content:ta.content})})).ok&&ej(e=>e.map(e=>e.path===ev?{...e,isModified:!1}:e))}catch(e){console.error(`Failed to save file ${ta.path}:`,e)}},[ta,ev,ej]);(0,r.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&"s"===e.key&&(e.preventDefault(),ts()),(e.ctrlKey||e.metaKey)&&"p"===e.key&&(e.preventDefault(),e1(e=>!e))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[ts]);let td=e8.filter(e=>e.name.toLowerCase().includes(e2.toLowerCase())||e.relativePath.toLowerCase().includes(e2.toLowerCase())).slice(0,10);return(0,t.jsxs)("div",{style:n,children:[(0,t.jsxs)("div",{style:l,children:[(0,t.jsxs)("div",{style:a,children:[(0,t.jsx)("div",{onClick:()=>{"explorer"===ek?eS(!ew):(eT("explorer"),eS(!0))},style:{...s,backgroundColor:"explorer"===ek&&ew?"rgba(255,255,255,0.08)":"transparent",borderLeft:"explorer"===ek&&ew?"2px solid var(--primary)":"2px solid transparent"},title:"File Explorer (Ctrl+P to search files)",children:"📁"}),(0,t.jsx)("div",{onClick:()=>{"git"===ek?eS(!ew):(eT("git"),eS(!0))},style:{...s,backgroundColor:"git"===ek&&ew?"rgba(255,255,255,0.08)":"transparent",borderLeft:"git"===ek&&ew?"2px solid var(--primary)":"2px solid transparent"},title:"Source Control (Git Changes)",children:"🌿"}),(0,t.jsx)("div",{onClick:()=>{"analytics"===ek?eS(!ew):(eT("analytics"),eS(!0))},style:{...s,backgroundColor:"analytics"===ek&&ew?"rgba(255,255,255,0.08)":"transparent",borderLeft:"analytics"===ek&&ew?"2px solid var(--primary)":"2px solid transparent"},title:"Token Usage & Cost Analytics",children:"📊"}),(0,t.jsx)("div",{onClick:()=>{"auditor"===ek?eS(!ew):(eT("auditor"),eS(!0))},style:{...s,backgroundColor:"auditor"===ek&&ew?"rgba(255,255,255,0.08)":"transparent",borderLeft:"auditor"===ek&&ew?"2px solid var(--primary)":"2px solid transparent"},title:"Session Log Auditor & Search",children:"🔍"})]}),(0,t.jsx)("div",{onClick:et,style:{...s,color:"var(--danger)",fontSize:"1rem"},title:"Exit Session Layout",children:"✖"})]}),ew&&(0,t.jsxs)("div",{style:d,children:[(0,t.jsxs)("div",{style:c,children:[(0,t.jsxs)("span",{style:{fontWeight:700,fontSize:"0.75rem",textTransform:"uppercase",letterSpacing:"0.05em"},children:["explorer"===ek&&"Workspace Explorer","git"===ek&&"Source Control","analytics"===ek&&"Telemetry & Cost","auditor"===ek&&"Session Auditor"]}),"explorer"===ek&&(0,t.jsxs)("div",{style:{display:"flex",gap:"0.25rem"},children:[ea&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>te(ea.path,"file"),style:N,title:"New File at Root...",children:"📄+"}),(0,t.jsx)("button",{onClick:()=>te(ea.path,"directory"),style:N,title:"New Folder at Root...",children:"📁+"})]}),(0,t.jsx)("button",{onClick:e9,disabled:ez,style:N,title:"Refresh tree",children:"🔄"})]}),"git"===ek&&(0,t.jsx)("button",{onClick:eX,disabled:eL,style:N,title:"Refresh git status",children:"🔄"})]}),(0,t.jsxs)("div",{style:p,children:["explorer"===ek&&(0,t.jsxs)(t.Fragment,{children:[ea?(0,t.jsxs)("div",{style:{marginBottom:"1.5rem"},children:[(0,t.jsxs)("div",{style:m,children:["💼 ",ea.name," ",(0,t.jsx)("span",{style:u,title:ea.path,children:"root"})]}),(0,t.jsx)("div",{style:{padding:"0.25rem 0.5rem"},children:ea.tree.map(e=>(0,t.jsx)(I,{node:e,onSelect:tn,onCreate:te,onRename:tt,onDelete:tr,isReadOnly:!1},e.path))})]}):(0,t.jsx)("div",{style:{padding:"1rem",color:"var(--muted)",fontSize:"0.8rem"},children:"Scanning Workspace directory..."}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{...m,borderTop:"1px solid var(--border)",paddingTop:"1rem"},children:[(0,t.jsxs)("span",{children:["🔍 Scoped Folders (",ed.length,")"]}),(0,t.jsx)("button",{onClick:()=>em(!0),style:N,title:"Add Scoped Folder...",children:"➕"})]}),ed.length>0?ed.map(e=>(0,t.jsxs)("div",{style:{marginTop:"0.75rem",padding:"0 0.5rem"},children:[(0,t.jsxs)("div",{style:{...f,display:"flex",gap:"0.25rem",color:"#a855f7",fontSize:"0.75rem",fontWeight:700,padding:"0.25rem",justifyContent:"space-between",alignItems:"center"},title:e.path,children:[(0,t.jsxs)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:["🔗 ",e.name,"/"]}),(0,t.jsx)("button",{onClick:()=>ef(e.path),style:{background:"none",border:"none",color:"var(--danger)",cursor:"pointer",fontSize:"0.75rem",padding:"0 0.25rem"},title:"Remove Scoped Folder",children:"✖"})]}),(0,t.jsx)("div",{style:{paddingLeft:"0.25rem"},children:e.tree.map(e=>(0,t.jsx)(I,{node:e,onSelect:tn,onCreate:te,onRename:tt,onDelete:tr,isReadOnly:!0},e.path))})]},e.path)):(0,t.jsx)("div",{style:{padding:"0.5rem 1rem",color:"var(--muted)",fontSize:"0.75rem",fontStyle:"italic"},children:"No extra scoped folders. Click [+] to mount a folder."})]})]}),"git"===ek&&(0,t.jsxs)("div",{style:{padding:"0.5rem 1rem"},children:[(0,t.jsx)("div",{style:{fontSize:"0.75rem",fontWeight:700,textTransform:"uppercase",color:"var(--muted)",marginBottom:"0.5rem"},children:"Changes"}),eI?0===eP.length?(0,t.jsx)("div",{style:{color:"var(--success)",fontSize:"0.75rem",padding:"0.5rem 0"},children:"✔ Workspace clean."}):(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:eP.map(e=>{let r="#eab308";return"??"===e.status&&(r="#10b981"),"A"===e.status&&(r="#10b981"),"D"===e.status&&(r="#ef4444"),(0,t.jsxs)("div",{onClick:async()=>{try{let t=await fetch(`/api/git?action=diff&file=${encodeURIComponent(e.relativePath)}&root=${encodeURIComponent(Z)}`);if(t.ok){let r=await t.json();if(r.success){let t=`diff:${e.relativePath}`;eb.some(e=>e.path===t)||ej(o=>[...o,{name:`Diff: ${e.name}`,path:t,content:r.diff,isModified:!1}]),eC(t)}}}catch(e){console.error(e)}},style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.35rem 0.5rem",borderRadius:"4px",backgroundColor:"rgba(255,255,255,0.02)",cursor:"pointer",fontSize:"0.75rem",fontFamily:"var(--font-mono)"},onMouseEnter:e=>e.currentTarget.style.backgroundColor="rgba(255,255,255,0.06)",onMouseLeave:e=>e.currentTarget.style.backgroundColor="rgba(255,255,255,0.02)",children:[(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},title:e.relativePath,children:e.name}),(0,t.jsx)("span",{style:{fontSize:"0.6rem",padding:"0.1rem 0.3rem",borderRadius:"3px",backgroundColor:r+"22",color:r,fontWeight:700},children:e.status})]},e.relativePath)})}):(0,t.jsx)("div",{style:{color:"var(--muted)",fontSize:"0.75rem",fontStyle:"italic"},children:"Not a git repository."})]}),"analytics"===ek&&(0,t.jsxs)("div",{style:{padding:"0.5rem 1rem",display:"flex",flexDirection:"column",gap:"1.25rem"},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:"0.75rem",fontWeight:700,textTransform:"uppercase",color:"var(--muted)",marginBottom:"0.5rem"},children:"Token Usage"}),(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"0.5rem"},children:[(0,t.jsxs)("div",{style:J,children:[(0,t.jsx)("div",{style:K,children:"Input"}),(0,t.jsx)("div",{style:_,children:(eD?.tokenUsage?.input??0).toLocaleString()})]}),(0,t.jsxs)("div",{style:J,children:[(0,t.jsx)("div",{style:K,children:"Output"}),(0,t.jsx)("div",{style:_,children:(eD?.tokenUsage?.output??0).toLocaleString()})]}),(0,t.jsxs)("div",{style:{...J,gridColumn:"span 2"},children:[(0,t.jsx)("div",{style:K,children:"Cost"}),(0,t.jsxs)("div",{style:{..._,color:"#10b981",fontSize:"1.25rem"},children:["$",(eD?.tokenUsage?.cost??0).toFixed(4)]})]})]})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:"0.75rem",fontWeight:700,textTransform:"uppercase",color:"var(--muted)",marginBottom:"0.5rem"},children:"Resource Telemetry"}),(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"0.7rem",marginBottom:"0.25rem"},children:[(0,t.jsx)("span",{children:"CPU Usage"}),(0,t.jsx)("span",{style:{fontWeight:600,color:"var(--primary)"},children:eM?.cpu??"0.0%"})]}),(0,t.jsx)("div",{style:H,children:(0,t.jsx)("div",{style:{...Y,width:eM?.cpu||"0%",backgroundColor:"var(--primary)"}})})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"0.7rem",marginBottom:"0.25rem"},children:[(0,t.jsx)("span",{children:"Memory Usage"}),(0,t.jsx)("span",{style:{fontWeight:600,color:"#eab308"},children:eM?.memory??"0.0MiB"})]}),(0,t.jsx)("div",{style:H,children:(0,t.jsx)("div",{style:{...Y,width:eM?.memoryPercent||"0%",backgroundColor:"#eab308"}})})]}),(0,t.jsx)("div",{style:{fontSize:"0.6rem",color:"var(--muted)",marginTop:"0.25rem",fontStyle:"italic"},children:eM?.type?.includes("docker")?"🐳 Docker container statistics":"💻 Local process statistics"})]})]})]}),"auditor"===ek&&(0,t.jsxs)("div",{style:{padding:"0.5rem 1rem",display:"flex",flexDirection:"column",gap:"1rem",height:"100%"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:"0.25rem"},children:[(0,t.jsx)("input",{type:"text",placeholder:"Search logs...",value:eB,onChange:e=>eU(e.target.value),style:{flex:1,backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"4px",padding:"0.25rem 0.5rem",color:"#ffffff",fontSize:"0.75rem",outline:"none"}}),(0,t.jsx)("button",{onClick:()=>{if(!eD?.logs)return;let t=new Blob([eD.logs.join("").replace(/\x1b\[[0-9;]*m/g,"")],{type:"text/plain;charset=utf-8"}),r=URL.createObjectURL(t),o=document.createElement("a");o.href=r,o.download=`session-${e}-logs.txt`,o.click(),URL.revokeObjectURL(r)},style:{backgroundColor:"rgba(59, 130, 246, 0.15)",border:"1px solid #3b82f6",color:"#3b82f6",padding:"0.25rem 0.5rem",borderRadius:"4px",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},children:"Export"})]}),(0,t.jsx)("div",{style:{height:"220px",overflowY:"auto",backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"6px",padding:"0.5rem",fontFamily:"var(--font-mono)",fontSize:"0.7rem",lineHeight:"1.4",whiteSpace:"pre-wrap",color:"#cbd5e1"},children:(()=>{if(!eD?.logs||0===eD.logs.length)return(0,t.jsx)("div",{style:{color:"var(--muted)",fontStyle:"italic",textAlign:"center"},children:"No logs captured."});let e=eD.logs.join("").replace(/\x1b\[[0-9;]*m/g,"").split(/\r?\n/),r=eB.trim()?e.filter(e=>e.toLowerCase().includes(eB.toLowerCase())):e;return 0===r.length?(0,t.jsx)("div",{style:{color:"var(--muted)",fontStyle:"italic",textAlign:"center"},children:"No matches."}):r.map((e,r)=>{if(!eB.trim())return(0,t.jsx)("div",{children:e},r);let o=e.split(RegExp(`(${eB})`,"gi"));return(0,t.jsx)("div",{children:o.map((e,r)=>e.toLowerCase()===eB.toLowerCase()?(0,t.jsx)("span",{style:{backgroundColor:"#eab308",color:"#000000",fontWeight:600},children:e},r):e)},r)})})()}),(0,t.jsxs)("div",{style:{borderTop:"1px solid var(--border)",paddingTop:"0.75rem"},children:[(0,t.jsx)("div",{style:{fontSize:"0.75rem",fontWeight:700,color:"var(--muted)",marginBottom:"0.5rem"},children:"Custom Buttons"}),(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.35rem"},children:[(0,t.jsx)("input",{type:"text",placeholder:"Button Name (e.g. /undo)",value:eV,onChange:e=>eJ(e.target.value),style:{backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"4px",padding:"0.25rem 0.5rem",color:"#ffffff",fontSize:"0.7rem",outline:"none"}}),(0,t.jsx)("input",{type:"text",placeholder:"Injection Command",value:eK,onChange:e=>e_(e.target.value),style:{backgroundColor:"#05070a",border:"1px solid var(--border)",borderRadius:"4px",padding:"0.25rem 0.5rem",color:"#ffffff",fontSize:"0.7rem",outline:"none"}}),(0,t.jsx)("button",{onClick:()=>{eV.trim()&&eK.trim()&&(eG([...e$,{name:eV.trim(),command:eK.trim()}]),eJ(""),e_(""))},style:{backgroundColor:"rgba(168, 85, 247, 0.15)",border:"1px solid #a855f7",color:"#c084fc",padding:"0.3rem",borderRadius:"4px",fontSize:"0.7rem",fontWeight:600,cursor:"pointer"},children:"+ Add Button"}),e$.length>0&&(0,t.jsx)("div",{style:{marginTop:"0.25rem",maxHeight:"60px",overflowY:"auto"},children:e$.map((e,r)=>(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",fontSize:"0.65rem",backgroundColor:"rgba(255,255,255,0.02)",padding:"0.1rem 0.25rem",borderRadius:"3px",marginTop:"0.15rem"},children:[(0,t.jsx)("span",{style:{color:"#c084fc"},children:e.name}),(0,t.jsx)("span",{onClick:()=>{eG(e$.filter((e,t)=>t!==r))},style:{color:"var(--danger)",cursor:"pointer"},children:"✖"})]},r))})]})]})]})]})]}),(0,t.jsxs)("div",{style:h,children:[(0,t.jsx)("div",{style:Q,children:(0,t.jsx)("div",{style:{display:"flex",gap:"0.25rem",overflowX:"auto"},children:er.map(r=>{let o=r.id===e,i="running"===r.status?"#10b981":"rgba(255,255,255,0.2)";return(0,t.jsxs)("div",{onClick:()=>{eH===r.id&&eY(null),eo(r.id)},style:{...q,backgroundColor:o?"#0b101b":"rgba(8,12,20,0.6)",borderColor:o?"var(--border-focus)":"var(--border)",color:o?"var(--foreground)":"var(--muted)"},children:[(0,t.jsx)("span",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:i,display:"inline-block"}}),(0,t.jsx)("span",{style:{fontSize:"0.75rem",fontWeight:o?600:500},children:r.name}),(0,t.jsx)("span",{style:{fontSize:"0.6rem",color:"var(--muted)",backgroundColor:"rgba(255,255,255,0.05)",padding:"1px 4px",borderRadius:"3px"},children:r.type.replace("claude-","").replace("aider-","")})]},r.id)})})}),(0,t.jsxs)("div",{style:g,children:[(0,t.jsxs)("div",{style:x,children:[(0,t.jsx)("div",{style:y,children:eb.map(e=>(0,t.jsxs)("div",{style:{...b,backgroundColor:ev===e.path?"#0b101b":"rgba(8,12,20,0.4)",borderColor:ev===e.path?"var(--border-focus)":"transparent",color:ev===e.path?"var(--foreground)":"var(--muted)"},onClick:()=>eC(e.path),children:[(0,t.jsxs)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[e.name," ",e.isModified&&(0,t.jsx)("span",{style:j,children:"●"})]}),(0,t.jsx)("span",{onClick:t=>{t.stopPropagation(),tl(e.path)},style:v,children:"✖"})]},e.path))}),ta&&!ta.path.startsWith("diff:")&&(0,t.jsx)("button",{onClick:ts,disabled:!ta.isModified,style:{...C,opacity:ta.isModified?1:.5,cursor:ta.isModified?"pointer":"not-allowed"},children:"💾 Save (Ctrl+S)"})]}),(0,t.jsx)("div",{style:w,children:ta?ta.path.startsWith("diff:")?(0,t.jsx)("div",{style:{fontFamily:"var(--font-mono)",fontSize:"0.8rem",padding:"1rem",overflow:"auto",height:"100%",backgroundColor:"#0b101b",lineHeight:1.5},children:ta.content.split("\n").map((e,r)=>{let o="#e2e8f0",i="transparent";return e.startsWith("+")?(o="#4ade80",i="rgba(74, 222, 128, 0.08)"):e.startsWith("-")?(o="#f87171",i="rgba(248, 113, 113, 0.08)"):e.startsWith("@@")&&(o="#60a5fa",i="rgba(96, 165, 250, 0.05)"),(0,t.jsx)("div",{style:{color:o,backgroundColor:i,whiteSpace:"pre-wrap",padding:"0.1rem 0.5rem"},children:e},r)})}):(0,t.jsx)("textarea",{value:ta.content,onChange:e=>{var t;return t=e.target.value,void(ev&&ej(eb.map(e=>e.path===ev?{...e,content:t,isModified:!0}:e)))},style:S,spellCheck:!1}):(0,t.jsxs)("div",{style:k,children:[(0,t.jsx)("div",{style:{fontSize:"2rem",marginBottom:"1rem"},children:"💻"}),(0,t.jsx)("h4",{style:{margin:0,fontWeight:600},children:"NeuralLoom Workspace Editor"}),(0,t.jsx)("p",{style:{margin:"0.5rem 0 0 0",color:"var(--muted)",fontSize:"0.8rem"},children:"Select files from the left explorer panel to view and edit. Use Ctrl+S to save changes."}),(0,t.jsxs)("p",{style:{margin:"0.5rem 0 0 0",color:"var(--muted)",fontSize:"0.75rem",fontStyle:"italic"},children:["Press ",(0,t.jsx)("kbd",{style:{background:"rgba(255,255,255,0.1)",padding:"2px 4px",borderRadius:"3px"},children:"Ctrl+P"})," to search files."]})]})})]}),(0,t.jsxs)("div",{style:T,children:[(0,t.jsxs)("div",{style:z,children:[(0,t.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:"0.5rem",fontWeight:600,fontSize:"0.8rem"},children:["🖥️ Session Console Bridge ",eH&&"(Split View Active)"]}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[el?.status==="stopped"&&(0,t.jsx)("button",{onClick:async()=>{try{let t=await fetch("/api/sessions/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e})});if(t.ok)ei&&ei();else{let e=await t.json();alert(e.error||"Failed to restart session.")}}catch(e){console.error("Failed to restart session:",e),alert("Network error: failed to restart session.")}},style:{padding:"0.3rem 0.6rem",borderRadius:"4px",border:"1px solid #eab308",backgroundColor:"rgba(234, 179, 8, 0.15)",color:"#eab308",fontSize:"0.7rem",fontWeight:600,cursor:"pointer",boxShadow:"0 0 8px rgba(234, 179, 8, 0.2)"},title:"Restart the stopped session process runner",children:"⚡ Restart Session"}),(0,t.jsxs)("select",{onChange:e=>{eY(e.target.value||null)},value:eH||"",style:{backgroundColor:"#080c14",border:"1px solid var(--border)",borderRadius:"4px",padding:"0.2rem 0.5rem",color:"var(--foreground)",fontSize:"0.7rem",outline:"none",cursor:"pointer"},children:[(0,t.jsx)("option",{value:"",children:"🖥️ Single Terminal"}),er.filter(t=>t.id!==e&&"running"===t.status).map(e=>(0,t.jsxs)("option",{value:e.id,children:["🖥️|🖥️ Split: ",e.name]},e.id))]}),(0,t.jsx)("button",{onClick:async()=>{await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,command:"/ccc"})})},style:R,children:"🚀 Mount Context (/ccc)"}),(0,t.jsx)("button",{onClick:async()=>{await fetch("/api/sessions/inject",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,command:"/ccp"})})},style:P,children:"⚡ Trigger Prompt (/ccp)"})]})]}),(0,t.jsxs)("div",{style:X,children:[(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",textTransform:"uppercase",letterSpacing:"0.05em",fontWeight:700},children:"Quick Commands:"}),(0,t.jsxs)("div",{style:{display:"flex",gap:"0.35rem",flexWrap:"wrap",alignItems:"center"},children:[eq?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>eQ("/undo"),style:G,title:"Aider: undo last commit",children:"/undo"}),(0,t.jsx)("button",{onClick:()=>eQ("/diff"),style:G,title:"Aider: show git diff",children:"/diff"}),(0,t.jsx)("button",{onClick:()=>eQ("/commit"),style:G,title:"Aider: commit edits",children:"/commit"}),(0,t.jsx)("button",{onClick:()=>eQ("/test"),style:G,title:"Aider: run tests",children:"/test"}),(0,t.jsx)("button",{onClick:()=>eQ("/clear"),style:G,title:"Clear terminal screen",children:"/clear"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>eQ("/compact"),style:G,title:"Claude Code: compact history",children:"/compact"}),(0,t.jsx)("button",{onClick:()=>eQ("/history"),style:G,title:"Claude Code: view history",children:"/history"}),(0,t.jsx)("button",{onClick:()=>eQ("/reset"),style:G,title:"Claude Code: reset conversation",children:"/reset"}),(0,t.jsx)("button",{onClick:()=>eQ("/help"),style:G,title:"Claude Code: show help",children:"/help"})]}),e$.map((e,r)=>(0,t.jsx)("button",{onClick:()=>eQ(e.command),style:{...G,borderColor:"rgba(168, 85, 247, 0.4)",color:"#c084fc"},title:`Inject command: ${e.command}`,children:e.name},r))]})]}),(0,t.jsxs)("div",{style:{...F,display:"flex",width:"100%",height:"100%"},children:[(0,t.jsx)("div",{style:{flex:1,height:"100%",borderRight:eH?"1px solid var(--border)":"none",overflow:"hidden"},children:(0,t.jsx)(o.default,{sessionId:e,height:"100%"})}),eH&&(0,t.jsxs)("div",{style:{flex:1,height:"100%",overflow:"hidden",display:"flex",flexDirection:"column"},children:[(0,t.jsxs)("div",{style:{padding:"0.25rem 0.5rem",backgroundColor:"#030406",fontSize:"0.7rem",borderBottom:"1px solid var(--border)",display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,t.jsxs)("span",{style:{color:"#a855f7",fontWeight:600},children:["🔗 Focused PTY Connection: ",er.find(e=>e.id===eH)?.name]}),(0,t.jsx)("button",{onClick:()=>eY(null),style:{background:"none",border:"none",color:"var(--danger)",cursor:"pointer",fontSize:"0.7rem"},children:"Close Split ✖"})]}),(0,t.jsx)("div",{style:{flex:1,overflow:"hidden"},children:(0,t.jsx)(o.default,{sessionId:eH,height:"100%"})})]})]})]})]}),eZ.type&&(0,t.jsx)("div",{style:W,children:(0,t.jsxs)("div",{style:L,children:[(0,t.jsxs)("h3",{style:{margin:"0 0 1rem 0",fontSize:"1rem",fontWeight:600},children:["create-file"===eZ.type&&"Create New File","create-folder"===eZ.type&&"Create New Folder","rename"===eZ.type&&"Rename Item","delete"===eZ.type&&"Confirm Deletion"]}),eZ.error&&(0,t.jsxs)("div",{style:{color:"var(--danger)",fontSize:"0.8rem",marginBottom:"1rem"},children:["⚠️ ",eZ.error]}),"delete"!==eZ.type?(0,t.jsxs)("form",{onSubmit:to,children:[(0,t.jsxs)("div",{style:{marginBottom:"0.5rem",fontSize:"0.75rem",color:"var(--muted)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:eZ.targetPath||"",children:["Target: ",eZ.targetPath]}),(0,t.jsx)("input",{type:"text",value:eZ.inputValue,onChange:e=>e0({...eZ,inputValue:e.target.value}),style:O,autoFocus:!0,placeholder:"rename"===eZ.type?"Enter new name":"Enter name"}),(0,t.jsxs)("div",{style:D,children:[(0,t.jsx)("button",{type:"button",onClick:()=>e0({type:null,targetPath:null,inputValue:"",error:null}),style:E,children:"Cancel"}),(0,t.jsx)("button",{type:"submit",style:M,children:"Submit"})]})]}):(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{fontSize:"0.85rem",marginBottom:"1.5rem",color:"var(--muted)",overflowWrap:"break-word"},children:["Are you sure you want to delete this item? This action is permanent.",(0,t.jsx)("div",{style:{marginTop:"0.5rem",color:"#e2e8f0",fontFamily:"var(--font-mono)",fontSize:"0.75rem",background:"rgba(255,255,255,0.05)",padding:"0.5rem",borderRadius:"4px"},children:eZ.targetPath})]}),(0,t.jsxs)("div",{style:D,children:[(0,t.jsx)("button",{type:"button",onClick:()=>e0({type:null,targetPath:null,inputValue:"",error:null}),style:E,children:"Cancel"}),(0,t.jsx)("button",{onClick:()=>to(),style:{...M,backgroundColor:"var(--danger)"},children:"Delete Permanently"})]})]})]})}),e5&&(0,t.jsx)("div",{style:B,onClick:()=>e1(!1),children:(0,t.jsxs)("div",{style:U,onClick:e=>e.stopPropagation(),children:[(0,t.jsx)("input",{type:"text",value:e2,onChange:e=>{e7(e.target.value),e4(0)},onKeyDown:e=>{"ArrowDown"===e.key?(e.preventDefault(),e4(e=>(e+1)%Math.max(1,td.length))):"ArrowUp"===e.key?(e.preventDefault(),e4(e=>(e-1+td.length)%Math.max(1,td.length))):"Enter"===e.key?(e.preventDefault(),td[e3]&&(tn(td[e3].path),e1(!1))):"Escape"===e.key&&(e.preventDefault(),e1(!1))},placeholder:"Search files by name or path...",style:$,autoFocus:!0}),(0,t.jsx)("div",{style:A,children:td.length>0?td.map((e,r)=>(0,t.jsxs)("div",{onClick:()=>{tn(e.path),e1(!1)},style:{...V,backgroundColor:r===e3?"rgba(168, 85, 247, 0.15)":"transparent",borderLeft:r===e3?"3px solid var(--primary)":"3px solid transparent"},children:[(0,t.jsx)("span",{style:{fontSize:"0.85rem",fontWeight:600},children:e.name}),(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--muted)",marginLeft:"0.5rem",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.relativePath})]},e.path)):(0,t.jsx)("div",{style:{padding:"0.75rem 1rem",color:"var(--muted)",fontSize:"0.8rem",textAlign:"center"},children:"No matching files found"})}),(0,t.jsx)("div",{style:{padding:"0.5rem 1rem",borderTop:"1px solid var(--border)",fontSize:"0.65rem",color:"var(--muted)",textAlign:"right"},children:"Use ↑↓ to navigate, Enter to select, Esc to close"})]})}),ep&&(0,t.jsx)(i.default,{title:"Add Scoped Directory",initialPath:Z,onClose:()=>em(!1),onSelect:e=>{eu(e),em(!1)}})]})}])},97722,e=>{e.n(e.i(3839))}]);