neural-loom 0.2.42 → 0.2.44

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 (128) 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/fallback-build-manifest.json +3 -3
  7. package/.next/prerender-manifest.json +3 -3
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +1 -1
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  18. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  20. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/api/context/aider/route.js +1 -1
  24. package/.next/server/app/api/context/aider/route.js.nft.json +1 -1
  25. package/.next/server/app/api/context/claude/route.js +1 -1
  26. package/.next/server/app/api/context/claude/route.js.nft.json +1 -1
  27. package/.next/server/app/api/context/ssh/route.js +1 -1
  28. package/.next/server/app/api/context/ssh/route.js.nft.json +1 -1
  29. package/.next/server/app/api/recents/route.js +1 -1
  30. package/.next/server/app/api/recents/route.js.nft.json +1 -1
  31. package/.next/server/app/api/sessions/inject/route.js +1 -1
  32. package/.next/server/app/api/sessions/inject/route.js.nft.json +1 -1
  33. package/.next/server/app/api/sessions/input/route.js +1 -1
  34. package/.next/server/app/api/sessions/input/route.js.nft.json +1 -1
  35. package/.next/server/app/api/sessions/launch/route.js +1 -1
  36. package/.next/server/app/api/sessions/launch/route.js.nft.json +1 -1
  37. package/.next/server/app/api/sessions/route.js +1 -1
  38. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  39. package/.next/server/app/api/sessions/scope/route.js +1 -1
  40. package/.next/server/app/api/sessions/scope/route.js.nft.json +1 -1
  41. package/.next/server/app/api/sessions/start/route.js +1 -1
  42. package/.next/server/app/api/sessions/start/route.js.nft.json +1 -1
  43. package/.next/server/app/api/sessions/stats/route.js +1 -1
  44. package/.next/server/app/api/sessions/stats/route.js.nft.json +1 -1
  45. package/.next/server/app/api/sessions/stop/route.js +1 -1
  46. package/.next/server/app/api/sessions/stop/route.js.nft.json +1 -1
  47. package/.next/server/app/index.html +1 -1
  48. package/.next/server/app/index.rsc +1 -1
  49. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  50. package/.next/server/app/index.segments/_full.segment.rsc +1 -1
  51. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  52. package/.next/server/app/index.segments/_index.segment.rsc +1 -1
  53. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  54. package/.next/server/chunks/[root-of-the-server]__01.zh3b._.js +15 -0
  55. package/.next/server/chunks/[root-of-the-server]__01.zh3b._.js.map +1 -0
  56. package/.next/server/chunks/[root-of-the-server]__0656ruo._.js +6 -6
  57. package/.next/server/chunks/[root-of-the-server]__0656ruo._.js.map +1 -1
  58. package/.next/server/chunks/[root-of-the-server]__07zx04e._.js +15 -0
  59. package/.next/server/chunks/[root-of-the-server]__07zx04e._.js.map +1 -0
  60. package/.next/server/chunks/[root-of-the-server]__0_o7_jj._.js +15 -0
  61. package/.next/server/chunks/[root-of-the-server]__0_o7_jj._.js.map +1 -0
  62. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +7 -7
  63. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
  64. package/.next/server/chunks/[root-of-the-server]__0em6a~~._.js +15 -0
  65. package/.next/server/chunks/[root-of-the-server]__0em6a~~._.js.map +1 -0
  66. package/.next/server/chunks/[root-of-the-server]__0gchnwb._.js +3 -0
  67. package/.next/server/chunks/[root-of-the-server]__0gchnwb._.js.map +1 -0
  68. package/.next/server/chunks/[root-of-the-server]__0i~01cv._.js +15 -0
  69. package/.next/server/chunks/[root-of-the-server]__0i~01cv._.js.map +1 -0
  70. package/.next/server/chunks/[root-of-the-server]__0s0is_9._.js +15 -0
  71. package/.next/server/chunks/[root-of-the-server]__0s0is_9._.js.map +1 -0
  72. package/.next/server/chunks/[root-of-the-server]__0t713sv._.js +3 -0
  73. package/.next/server/chunks/[root-of-the-server]__0t713sv._.js.map +1 -0
  74. package/.next/server/chunks/[root-of-the-server]__0thsozo._.js +15 -0
  75. package/.next/server/chunks/[root-of-the-server]__0thsozo._.js.map +1 -0
  76. package/.next/server/chunks/[root-of-the-server]__10wwca8._.js +15 -0
  77. package/.next/server/chunks/[root-of-the-server]__10wwca8._.js.map +1 -0
  78. package/.next/server/chunks/[root-of-the-server]__11h_nxt._.js +3 -0
  79. package/.next/server/chunks/[root-of-the-server]__11h_nxt._.js.map +1 -0
  80. package/.next/server/chunks/[root-of-the-server]__11z12oe._.js +3 -0
  81. package/.next/server/chunks/[root-of-the-server]__11z12oe._.js.map +1 -0
  82. package/.next/server/middleware-build-manifest.js +3 -3
  83. package/.next/server/pages/404.html +1 -1
  84. package/.next/server/pages/500.html +1 -1
  85. package/.next/server/server-reference-manifest.js +1 -1
  86. package/.next/server/server-reference-manifest.json +1 -1
  87. package/.next/trace +1 -1
  88. package/.next/trace-build +1 -1
  89. package/package.json +1 -1
  90. package/src/app/api/context/aider/route.ts +3 -1
  91. package/src/app/api/context/claude/route.ts +3 -1
  92. package/src/app/api/context/ssh/route.ts +3 -1
  93. package/src/app/api/sessions/scope/route.ts +3 -2
  94. package/src/lib/agents/AiderRunner.ts +2 -1
  95. package/src/lib/agents/ClaudeRunner.ts +2 -1
  96. package/src/lib/agents/ContextManager.ts +87 -63
  97. package/src/lib/agents/DockerRunner.ts +2 -1
  98. package/src/lib/agents/SSHRunner.ts +3 -2
  99. package/src/lib/agents/SessionPersister.ts +2 -5
  100. package/src/lib/config.ts +32 -0
  101. package/src/lib/recents.ts +2 -1
  102. package/.next/server/chunks/[root-of-the-server]__005xmeg._.js +0 -15
  103. package/.next/server/chunks/[root-of-the-server]__005xmeg._.js.map +0 -1
  104. package/.next/server/chunks/[root-of-the-server]__0969ozy._.js +0 -3
  105. package/.next/server/chunks/[root-of-the-server]__0969ozy._.js.map +0 -1
  106. package/.next/server/chunks/[root-of-the-server]__0_~zjnf._.js +0 -15
  107. package/.next/server/chunks/[root-of-the-server]__0_~zjnf._.js.map +0 -1
  108. package/.next/server/chunks/[root-of-the-server]__0hl8jxx._.js +0 -15
  109. package/.next/server/chunks/[root-of-the-server]__0hl8jxx._.js.map +0 -1
  110. package/.next/server/chunks/[root-of-the-server]__0ho7s6e._.js +0 -15
  111. package/.next/server/chunks/[root-of-the-server]__0ho7s6e._.js.map +0 -1
  112. package/.next/server/chunks/[root-of-the-server]__0lh_jn-._.js +0 -15
  113. package/.next/server/chunks/[root-of-the-server]__0lh_jn-._.js.map +0 -1
  114. package/.next/server/chunks/[root-of-the-server]__0mq3k0u._.js +0 -15
  115. package/.next/server/chunks/[root-of-the-server]__0mq3k0u._.js.map +0 -1
  116. package/.next/server/chunks/[root-of-the-server]__0n-zban._.js +0 -3
  117. package/.next/server/chunks/[root-of-the-server]__0n-zban._.js.map +0 -1
  118. package/.next/server/chunks/[root-of-the-server]__0rr36fm._.js +0 -15
  119. package/.next/server/chunks/[root-of-the-server]__0rr36fm._.js.map +0 -1
  120. package/.next/server/chunks/[root-of-the-server]__0sa_gpm._.js +0 -3
  121. package/.next/server/chunks/[root-of-the-server]__0sa_gpm._.js.map +0 -1
  122. package/.next/server/chunks/[root-of-the-server]__0vp8-ka._.js +0 -3
  123. package/.next/server/chunks/[root-of-the-server]__0vp8-ka._.js.map +0 -1
  124. package/.next/server/chunks/[root-of-the-server]__0xcrc-1._.js +0 -15
  125. package/.next/server/chunks/[root-of-the-server]__0xcrc-1._.js.map +0 -1
  126. /package/.next/static/{KK9yy3Qq3Z7N_cZVRK4cc → fkguOvhqTzhrR0V_gCa1M}/_buildManifest.js +0 -0
  127. /package/.next/static/{KK9yy3Qq3Z7N_cZVRK4cc → fkguOvhqTzhrR0V_gCa1M}/_clientMiddlewareManifest.js +0 -0
  128. /package/.next/static/{KK9yy3Qq3Z7N_cZVRK4cc → fkguOvhqTzhrR0V_gCa1M}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":196,"timestamp":19946032156,"id":4,"parentId":1,"tags":{},"startTime":1781499330231,"traceId":"dbf7f0aa5700cf92"},{"name":"load-custom-routes","duration":363,"timestamp":19946032451,"id":5,"parentId":1,"tags":{},"startTime":1781499330231,"traceId":"dbf7f0aa5700cf92"},{"name":"create-dist-dir","duration":537,"timestamp":19946032846,"id":6,"parentId":1,"tags":{},"startTime":1781499330232,"traceId":"dbf7f0aa5700cf92"},{"name":"clean","duration":530,"timestamp":19946034254,"id":7,"parentId":1,"tags":{},"startTime":1781499330233,"traceId":"dbf7f0aa5700cf92"},{"name":"discover-routes","duration":5726,"timestamp":19946056181,"id":8,"parentId":1,"tags":{},"startTime":1781499330255,"traceId":"dbf7f0aa5700cf92"},{"name":"create-root-mapping","duration":55,"timestamp":19946061951,"id":9,"parentId":1,"tags":{},"startTime":1781499330261,"traceId":"dbf7f0aa5700cf92"},{"name":"generate-route-types","duration":15728,"timestamp":19946063126,"id":10,"parentId":1,"tags":{},"startTime":1781499330262,"traceId":"dbf7f0aa5700cf92"},{"name":"public-dir-conflict-check","duration":90,"timestamp":19946078989,"id":11,"parentId":1,"tags":{},"startTime":1781499330278,"traceId":"dbf7f0aa5700cf92"},{"name":"generate-routes-manifest","duration":2450,"timestamp":19946079181,"id":12,"parentId":1,"tags":{},"startTime":1781499330278,"traceId":"dbf7f0aa5700cf92"},{"name":"run-turbopack","duration":2316335,"timestamp":19946088277,"id":14,"parentId":1,"tags":{},"startTime":1781499330287,"traceId":"dbf7f0aa5700cf92"},{"name":"turbopack-build-events","duration":68,"timestamp":19946367008,"id":15,"parentId":1,"tags":{},"startTime":1781499330566,"traceId":"dbf7f0aa5700cf92"},{"name":"run-typescript","duration":3647481,"timestamp":19948416074,"id":16,"parentId":1,"tags":{},"startTime":1781499332615,"traceId":"dbf7f0aa5700cf92"},{"name":"generate-required-server-files","duration":1363,"timestamp":19952064322,"id":18,"parentId":1,"tags":{},"startTime":1781499336263,"traceId":"dbf7f0aa5700cf92"},{"name":"check-static-error-page","duration":7284,"timestamp":19952179461,"id":20,"parentId":19,"tags":{},"startTime":1781499336378,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":496921,"timestamp":19952191785,"id":40,"parentId":22,"tags":{},"startTime":1781499336391,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":506391,"timestamp":19952182437,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781499336381,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":617959,"timestamp":19952191546,"id":39,"parentId":21,"tags":{},"startTime":1781499336390,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":628527,"timestamp":19952181049,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781499336380,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":626279,"timestamp":19952191849,"id":41,"parentId":23,"tags":{},"startTime":1781499336391,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":635392,"timestamp":19952182794,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781499336382,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":631599,"timestamp":19952191898,"id":42,"parentId":24,"tags":{},"startTime":1781499336391,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":640525,"timestamp":19952183022,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781499336382,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":646263,"timestamp":19952192268,"id":45,"parentId":27,"tags":{},"startTime":1781499336391,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":654907,"timestamp":19952183680,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781499336383,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":649770,"timestamp":19952192501,"id":47,"parentId":29,"tags":{},"startTime":1781499336391,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":658173,"timestamp":19952184149,"id":29,"parentId":19,"tags":{"page":"/api/recents"},"startTime":1781499336383,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":648368,"timestamp":19952196538,"id":56,"parentId":38,"tags":{},"startTime":1781499336395,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":658552,"timestamp":19952186409,"id":38,"parentId":19,"tags":{"page":"/"},"startTime":1781499336385,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":653379,"timestamp":19952193138,"id":54,"parentId":36,"tags":{},"startTime":1781499336392,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":660610,"timestamp":19952185946,"id":36,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781499336385,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":654853,"timestamp":19952192409,"id":46,"parentId":28,"tags":{},"startTime":1781499336391,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":663390,"timestamp":19952183907,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781499336383,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":657732,"timestamp":19952192976,"id":51,"parentId":33,"tags":{},"startTime":1781499336392,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":665661,"timestamp":19952185083,"id":33,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781499336384,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":659798,"timestamp":19952192050,"id":44,"parentId":26,"tags":{},"startTime":1781499336391,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":668415,"timestamp":19952183472,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781499336382,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":660428,"timestamp":19952191974,"id":43,"parentId":25,"tags":{},"startTime":1781499336391,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":669174,"timestamp":19952183250,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781499336382,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":661141,"timestamp":19952193179,"id":55,"parentId":37,"tags":{},"startTime":1781499336392,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":668190,"timestamp":19952186168,"id":37,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781499336385,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":661548,"timestamp":19952192920,"id":50,"parentId":32,"tags":{},"startTime":1781499336392,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":669596,"timestamp":19952184889,"id":32,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781499336384,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":662452,"timestamp":19952192847,"id":49,"parentId":31,"tags":{},"startTime":1781499336392,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":670663,"timestamp":19952184664,"id":31,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781499336384,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":665201,"timestamp":19952192702,"id":48,"parentId":30,"tags":{},"startTime":1781499336392,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":673520,"timestamp":19952184414,"id":30,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781499336383,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":665114,"timestamp":19952193039,"id":52,"parentId":34,"tags":{},"startTime":1781499336392,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":672912,"timestamp":19952185264,"id":34,"parentId":19,"tags":{"page":"/api/sessions/scope"},"startTime":1781499336384,"traceId":"dbf7f0aa5700cf92"},{"name":"is-page-static","duration":667894,"timestamp":19952193088,"id":53,"parentId":35,"tags":{},"startTime":1781499336392,"traceId":"dbf7f0aa5700cf92"},{"name":"check-page","duration":675462,"timestamp":19952185543,"id":35,"parentId":19,"tags":{"page":"/api/sessions/start"},"startTime":1781499336384,"traceId":"dbf7f0aa5700cf92"},{"name":"static-check","duration":682063,"timestamp":19952178969,"id":19,"parentId":1,"tags":{},"startTime":1781499336378,"traceId":"dbf7f0aa5700cf92"},{"name":"write-routes-manifest","duration":752,"timestamp":19952861984,"id":58,"parentId":1,"tags":{},"startTime":1781499337061,"traceId":"dbf7f0aa5700cf92"},{"name":"load-dotenv","duration":34,"timestamp":19952878082,"id":61,"parentId":60,"tags":{},"startTime":1781499337077,"traceId":"dbf7f0aa5700cf92"},{"name":"run-export-path-map","duration":396,"timestamp":19952882864,"id":62,"parentId":60,"tags":{},"startTime":1781499337082,"traceId":"dbf7f0aa5700cf92"},{"name":"next-export","duration":644289,"timestamp":19952877114,"id":60,"parentId":1,"tags":{},"startTime":1781499337076,"traceId":"dbf7f0aa5700cf92"},{"name":"move-exported-app-not-found-","duration":2068,"timestamp":19953523362,"id":63,"parentId":59,"tags":{},"startTime":1781499337722,"traceId":"dbf7f0aa5700cf92"},{"name":"move-exported-app-global-error-","duration":1391,"timestamp":19953525541,"id":64,"parentId":59,"tags":{},"startTime":1781499337724,"traceId":"dbf7f0aa5700cf92"},{"name":"static-generation","duration":663592,"timestamp":19952867075,"id":59,"parentId":1,"tags":{},"startTime":1781499337066,"traceId":"dbf7f0aa5700cf92"},{"name":"write-routes-manifest","duration":790,"timestamp":19953530790,"id":65,"parentId":1,"tags":{},"startTime":1781499337730,"traceId":"dbf7f0aa5700cf92"},{"name":"print-tree-view","duration":3062,"timestamp":19953546200,"id":66,"parentId":1,"tags":{},"startTime":1781499337745,"traceId":"dbf7f0aa5700cf92"},{"name":"write-route-bundle-stats","duration":9565,"timestamp":19953549294,"id":67,"parentId":1,"tags":{},"startTime":1781499337748,"traceId":"dbf7f0aa5700cf92"},{"name":"telemetry-flush","duration":187895,"timestamp":19953558895,"id":68,"parentId":1,"tags":{},"startTime":1781499337758,"traceId":"dbf7f0aa5700cf92"},{"name":"next-build","duration":7762900,"timestamp":19945983913,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781499330183,"traceId":"dbf7f0aa5700cf92"}]
1
+ [{"name":"generate-buildid","duration":214,"timestamp":26708793063,"id":4,"parentId":1,"tags":{},"startTime":1781506092992,"traceId":"237c1e8d010b0702"},{"name":"load-custom-routes","duration":337,"timestamp":26708793382,"id":5,"parentId":1,"tags":{},"startTime":1781506092992,"traceId":"237c1e8d010b0702"},{"name":"create-dist-dir","duration":537,"timestamp":26708793747,"id":6,"parentId":1,"tags":{},"startTime":1781506092993,"traceId":"237c1e8d010b0702"},{"name":"clean","duration":515,"timestamp":26708795117,"id":7,"parentId":1,"tags":{},"startTime":1781506092994,"traceId":"237c1e8d010b0702"},{"name":"discover-routes","duration":5993,"timestamp":26708817893,"id":8,"parentId":1,"tags":{},"startTime":1781506093017,"traceId":"237c1e8d010b0702"},{"name":"create-root-mapping","duration":58,"timestamp":26708823932,"id":9,"parentId":1,"tags":{},"startTime":1781506093023,"traceId":"237c1e8d010b0702"},{"name":"generate-route-types","duration":17261,"timestamp":26708825277,"id":10,"parentId":1,"tags":{},"startTime":1781506093024,"traceId":"237c1e8d010b0702"},{"name":"public-dir-conflict-check","duration":98,"timestamp":26708842675,"id":11,"parentId":1,"tags":{},"startTime":1781506093042,"traceId":"237c1e8d010b0702"},{"name":"generate-routes-manifest","duration":2480,"timestamp":26708842882,"id":12,"parentId":1,"tags":{},"startTime":1781506093042,"traceId":"237c1e8d010b0702"},{"name":"run-turbopack","duration":2306540,"timestamp":26708851735,"id":14,"parentId":1,"tags":{},"startTime":1781506093051,"traceId":"237c1e8d010b0702"},{"name":"turbopack-build-events","duration":61,"timestamp":26709137201,"id":15,"parentId":1,"tags":{},"startTime":1781506093336,"traceId":"237c1e8d010b0702"},{"name":"run-typescript","duration":3732933,"timestamp":26711166283,"id":16,"parentId":1,"tags":{},"startTime":1781506095365,"traceId":"237c1e8d010b0702"},{"name":"generate-required-server-files","duration":1422,"timestamp":26714900047,"id":18,"parentId":1,"tags":{},"startTime":1781506099099,"traceId":"237c1e8d010b0702"},{"name":"check-static-error-page","duration":7472,"timestamp":26715014203,"id":20,"parentId":19,"tags":{},"startTime":1781506099213,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":523929,"timestamp":26715026200,"id":40,"parentId":22,"tags":{},"startTime":1781506099225,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":532572,"timestamp":26715017678,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1781506099217,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":615166,"timestamp":26715026306,"id":41,"parentId":23,"tags":{},"startTime":1781506099225,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":623546,"timestamp":26715018006,"id":23,"parentId":19,"tags":{"page":"/api/context/aider"},"startTime":1781506099217,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":615570,"timestamp":26715026798,"id":45,"parentId":27,"tags":{},"startTime":1781506099226,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":623592,"timestamp":26715018821,"id":27,"parentId":19,"tags":{"page":"/api/files"},"startTime":1781506099218,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":626032,"timestamp":26715025961,"id":39,"parentId":21,"tags":{},"startTime":1781506099225,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":635651,"timestamp":26715016389,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1781506099215,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":633676,"timestamp":26715026473,"id":43,"parentId":25,"tags":{},"startTime":1781506099225,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":641754,"timestamp":26715018448,"id":25,"parentId":19,"tags":{"page":"/api/context"},"startTime":1781506099217,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":634377,"timestamp":26715026387,"id":42,"parentId":24,"tags":{},"startTime":1781506099225,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":642564,"timestamp":26715018243,"id":24,"parentId":19,"tags":{"page":"/api/context/claude"},"startTime":1781506099217,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":641786,"timestamp":26715030818,"id":56,"parentId":38,"tags":{},"startTime":1781506099230,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":651297,"timestamp":26715021364,"id":38,"parentId":19,"tags":{"page":"/"},"startTime":1781506099220,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":646444,"timestamp":26715026564,"id":44,"parentId":26,"tags":{},"startTime":1781506099225,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":654408,"timestamp":26715018634,"id":26,"parentId":19,"tags":{"page":"/api/context/ssh"},"startTime":1781506099218,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":648178,"timestamp":26715027720,"id":52,"parentId":34,"tags":{},"startTime":1781506099227,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":655703,"timestamp":26715020245,"id":34,"parentId":19,"tags":{"page":"/api/sessions/scope"},"startTime":1781506099219,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":651690,"timestamp":26715027650,"id":51,"parentId":33,"tags":{},"startTime":1781506099227,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":659324,"timestamp":26715020057,"id":33,"parentId":19,"tags":{"page":"/api/sessions"},"startTime":1781506099219,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":654889,"timestamp":26715026949,"id":46,"parentId":28,"tags":{},"startTime":1781506099226,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":662854,"timestamp":26715019032,"id":28,"parentId":19,"tags":{"page":"/api/git"},"startTime":1781506099218,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":657144,"timestamp":26715027064,"id":47,"parentId":29,"tags":{},"startTime":1781506099226,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":665006,"timestamp":26715019236,"id":29,"parentId":19,"tags":{"page":"/api/recents"},"startTime":1781506099218,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":658843,"timestamp":26715027764,"id":53,"parentId":35,"tags":{},"startTime":1781506099227,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":666148,"timestamp":26715020521,"id":35,"parentId":19,"tags":{"page":"/api/sessions/start"},"startTime":1781506099219,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":659363,"timestamp":26715027430,"id":49,"parentId":31,"tags":{},"startTime":1781506099226,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":667160,"timestamp":26715019655,"id":31,"parentId":19,"tags":{"page":"/api/sessions/input"},"startTime":1781506099219,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":661547,"timestamp":26715027502,"id":50,"parentId":32,"tags":{},"startTime":1781506099226,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":669212,"timestamp":26715019863,"id":32,"parentId":19,"tags":{"page":"/api/sessions/launch"},"startTime":1781506099219,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":662878,"timestamp":26715028017,"id":55,"parentId":37,"tags":{},"startTime":1781506099227,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":669750,"timestamp":26715021171,"id":37,"parentId":19,"tags":{"page":"/api/sessions/stop"},"startTime":1781506099220,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":664861,"timestamp":26715027290,"id":48,"parentId":30,"tags":{},"startTime":1781506099226,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":672743,"timestamp":26715019436,"id":30,"parentId":19,"tags":{"page":"/api/sessions/inject"},"startTime":1781506099218,"traceId":"237c1e8d010b0702"},{"name":"is-page-static","duration":665390,"timestamp":26715027948,"id":54,"parentId":36,"tags":{},"startTime":1781506099227,"traceId":"237c1e8d010b0702"},{"name":"check-page","duration":672429,"timestamp":26715020934,"id":36,"parentId":19,"tags":{"page":"/api/sessions/stats"},"startTime":1781506099220,"traceId":"237c1e8d010b0702"},{"name":"static-check","duration":679790,"timestamp":26715013596,"id":19,"parentId":1,"tags":{},"startTime":1781506099213,"traceId":"237c1e8d010b0702"},{"name":"write-routes-manifest","duration":805,"timestamp":26715694442,"id":58,"parentId":1,"tags":{},"startTime":1781506099893,"traceId":"237c1e8d010b0702"},{"name":"load-dotenv","duration":40,"timestamp":26715715473,"id":61,"parentId":60,"tags":{},"startTime":1781506099914,"traceId":"237c1e8d010b0702"},{"name":"run-export-path-map","duration":631,"timestamp":26715721604,"id":62,"parentId":60,"tags":{},"startTime":1781506099921,"traceId":"237c1e8d010b0702"},{"name":"next-export","duration":642068,"timestamp":26715714290,"id":60,"parentId":1,"tags":{},"startTime":1781506099913,"traceId":"237c1e8d010b0702"},{"name":"move-exported-app-not-found-","duration":1954,"timestamp":26716357814,"id":63,"parentId":59,"tags":{},"startTime":1781506100557,"traceId":"237c1e8d010b0702"},{"name":"move-exported-app-global-error-","duration":1467,"timestamp":26716359863,"id":64,"parentId":59,"tags":{},"startTime":1781506100559,"traceId":"237c1e8d010b0702"},{"name":"static-generation","duration":663246,"timestamp":26715700869,"id":59,"parentId":1,"tags":{},"startTime":1781506099900,"traceId":"237c1e8d010b0702"},{"name":"write-routes-manifest","duration":727,"timestamp":26716364207,"id":65,"parentId":1,"tags":{},"startTime":1781506100563,"traceId":"237c1e8d010b0702"},{"name":"print-tree-view","duration":3519,"timestamp":26716380676,"id":66,"parentId":1,"tags":{},"startTime":1781506100580,"traceId":"237c1e8d010b0702"},{"name":"write-route-bundle-stats","duration":10265,"timestamp":26716384231,"id":67,"parentId":1,"tags":{},"startTime":1781506100583,"traceId":"237c1e8d010b0702"},{"name":"telemetry-flush","duration":171689,"timestamp":26716394528,"id":68,"parentId":1,"tags":{},"startTime":1781506100593,"traceId":"237c1e8d010b0702"},{"name":"next-build","duration":7820715,"timestamp":26708745526,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781506092944,"traceId":"237c1e8d010b0702"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":2316335,"timestamp":19946088277,"id":14,"parentId":1,"tags":{},"startTime":1781499330287,"traceId":"dbf7f0aa5700cf92"},{"name":"turbopack-build-events","duration":68,"timestamp":19946367008,"id":15,"parentId":1,"tags":{},"startTime":1781499330566,"traceId":"dbf7f0aa5700cf92"},{"name":"run-typescript","duration":3647481,"timestamp":19948416074,"id":16,"parentId":1,"tags":{},"startTime":1781499332615,"traceId":"dbf7f0aa5700cf92"},{"name":"static-check","duration":682063,"timestamp":19952178969,"id":19,"parentId":1,"tags":{},"startTime":1781499336378,"traceId":"dbf7f0aa5700cf92"},{"name":"static-generation","duration":663592,"timestamp":19952867075,"id":59,"parentId":1,"tags":{},"startTime":1781499337066,"traceId":"dbf7f0aa5700cf92"},{"name":"telemetry-flush","duration":187895,"timestamp":19953558895,"id":68,"parentId":1,"tags":{},"startTime":1781499337758,"traceId":"dbf7f0aa5700cf92"},{"name":"next-build","duration":7762900,"timestamp":19945983913,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781499330183,"traceId":"dbf7f0aa5700cf92"}]
1
+ [{"name":"run-turbopack","duration":2306540,"timestamp":26708851735,"id":14,"parentId":1,"tags":{},"startTime":1781506093051,"traceId":"237c1e8d010b0702"},{"name":"turbopack-build-events","duration":61,"timestamp":26709137201,"id":15,"parentId":1,"tags":{},"startTime":1781506093336,"traceId":"237c1e8d010b0702"},{"name":"run-typescript","duration":3732933,"timestamp":26711166283,"id":16,"parentId":1,"tags":{},"startTime":1781506095365,"traceId":"237c1e8d010b0702"},{"name":"static-check","duration":679790,"timestamp":26715013596,"id":19,"parentId":1,"tags":{},"startTime":1781506099213,"traceId":"237c1e8d010b0702"},{"name":"static-generation","duration":663246,"timestamp":26715700869,"id":59,"parentId":1,"tags":{},"startTime":1781506099900,"traceId":"237c1e8d010b0702"},{"name":"telemetry-flush","duration":171689,"timestamp":26716394528,"id":68,"parentId":1,"tags":{},"startTime":1781506100593,"traceId":"237c1e8d010b0702"},{"name":"next-build","duration":7820715,"timestamp":26708745526,"id":1,"tags":{"buildMode":"default","version":"16.2.6","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781506092944,"traceId":"237c1e8d010b0702"}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neural-loom",
3
- "version": "0.2.42",
3
+ "version": "0.2.44",
4
4
  "bin": {
5
5
  "neural-loom": "./bin/cli.js"
6
6
  },
@@ -2,7 +2,9 @@ import { NextResponse } from "next/server";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
4
 
5
- const configDir = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom");
5
+ import { getConfigDir } from "@/lib/config";
6
+
7
+ const configDir = getConfigDir();
6
8
  const configPath = path.join(configDir, "aider.json");
7
9
 
8
10
  function ensureDir() {
@@ -2,7 +2,9 @@ import { NextResponse } from "next/server";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
4
 
5
- const configDir = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom");
5
+ import { getConfigDir } from "@/lib/config";
6
+
7
+ const configDir = getConfigDir();
6
8
  const configPath = path.join(configDir, "claude.json");
7
9
 
8
10
  function ensureDir() {
@@ -3,7 +3,9 @@ import fs from "fs";
3
3
  import path from "path";
4
4
  import { exec } from "child_process";
5
5
 
6
- const configDir = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom");
6
+ import { getConfigDir } from "@/lib/config";
7
+
8
+ const configDir = getConfigDir();
7
9
  const configPath = path.join(configDir, "ssh.json");
8
10
 
9
11
  function ensureDir() {
@@ -3,6 +3,7 @@ import { SessionManager } from "@/lib/agents/SessionManager";
3
3
  import { SessionPersister } from "@/lib/agents/SessionPersister";
4
4
  import { ContextManager } from "@/lib/agents/ContextManager";
5
5
  import { addRecent } from "@/lib/recents";
6
+ import { getConfigDir } from "@/lib/config";
6
7
  import fs from "fs";
7
8
  import path from "path";
8
9
 
@@ -40,7 +41,7 @@ export async function POST(request: Request) {
40
41
  }
41
42
 
42
43
  // 2. Carry over to global configurations for next Launch
43
- const configDir = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom");
44
+ const configDir = getConfigDir();
44
45
 
45
46
  if (session.type === "claude" || session.type === "claude-docker") {
46
47
  const claudeConfigPath = path.join(configDir, "claude.json");
@@ -89,7 +90,7 @@ export async function POST(request: Request) {
89
90
  }
90
91
 
91
92
  // 2. Remove from global configuration so it doesn't carry over
92
- const configDir = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom");
93
+ const configDir = getConfigDir();
93
94
 
94
95
  if (session.type === "claude" || session.type === "claude-docker") {
95
96
  const claudeConfigPath = path.join(configDir, "claude.json");
@@ -1,6 +1,7 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
3
  import { exec } from "child_process";
4
+ import { getConfigDir } from "../config";
4
5
  import type { IPty } from "node-pty";
5
6
  import { AgentRunner, RunnerStatus } from "./AgentRunner";
6
7
  import { SessionPersister } from "./SessionPersister";
@@ -128,7 +129,7 @@ export class AiderRunner extends AgentRunner {
128
129
  loadAllFiles: true,
129
130
  };
130
131
 
131
- const aiderConfigPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "aider.json");
132
+ const aiderConfigPath = path.join(getConfigDir(), "aider.json");
132
133
  if (fs.existsSync(aiderConfigPath)) {
133
134
  try {
134
135
  aiderConfig = JSON.parse(fs.readFileSync(aiderConfigPath, "utf8"));
@@ -2,6 +2,7 @@ import fs from "fs";
2
2
  import path from "path";
3
3
  import os from "os";
4
4
  import { execSync } from "child_process";
5
+ import { getConfigDir } from "../config";
5
6
  import type { IPty } from "node-pty";
6
7
  import { AgentRunner, RunnerStatus } from "./AgentRunner";
7
8
  import { SessionPersister } from "./SessionPersister";
@@ -86,7 +87,7 @@ export class ClaudeRunner extends AgentRunner {
86
87
 
87
88
  // Load Claude configuration to check for extraFlags (like --resume)
88
89
  let extraFlags = "";
89
- const claudeConfigPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "claude.json");
90
+ const claudeConfigPath = path.join(getConfigDir(), "claude.json");
90
91
  if (fs.existsSync(claudeConfigPath)) {
91
92
  try {
92
93
  const config = JSON.parse(fs.readFileSync(claudeConfigPath, "utf8"));
@@ -7,55 +7,75 @@ export class ContextManager {
7
7
  }
8
8
 
9
9
  private static ensureDirs(root: string) {
10
- const aiDir = path.join(root, ".ai", "neural-loom");
11
- if (!fs.existsSync(aiDir)) {
12
- fs.mkdirSync(aiDir, { recursive: true });
13
- }
10
+ try {
11
+ const aiDir = path.join(root, ".ai", "neural-loom");
12
+ if (!fs.existsSync(aiDir)) {
13
+ fs.mkdirSync(aiDir, { recursive: true });
14
+ }
14
15
 
15
- const commandDir = path.join(root, ".claude", "commands");
16
- if (!fs.existsSync(commandDir)) {
17
- fs.mkdirSync(commandDir, { recursive: true });
16
+ const commandDir = path.join(root, ".claude", "commands");
17
+ if (!fs.existsSync(commandDir)) {
18
+ fs.mkdirSync(commandDir, { recursive: true });
19
+ }
20
+ } catch (err) {
21
+ console.warn(`[ContextManager] Failed to ensure directories at ${root}:`, err);
18
22
  }
19
23
  }
20
24
 
21
25
  public static initializeStaging(root: string = process.env.ORIGINAL_CWD || process.cwd()) {
22
- this.ensureDirs(root);
23
-
24
- // Create /ccp.md custom slash command file
25
- const ccpPath = path.join(root, ".claude", "commands", "ccp.md");
26
- if (!fs.existsSync(ccpPath)) {
27
- fs.writeFileSync(
28
- ccpPath,
29
- "Read the prompt from .ai/neural-loom/cprompt.md and execute it. This is a staged prompt from the NeuralLoom UI. Treat the contents as user instructions.\n"
30
- );
31
- }
26
+ try {
27
+ this.ensureDirs(root);
28
+
29
+ // Create /ccp.md custom slash command file
30
+ const ccpPath = path.join(root, ".claude", "commands", "ccp.md");
31
+ if (!fs.existsSync(ccpPath)) {
32
+ fs.writeFileSync(
33
+ ccpPath,
34
+ "Read the prompt from .ai/neural-loom/cprompt.md and execute it. This is a staged prompt from the NeuralLoom UI. Treat the contents as user instructions.\n"
35
+ );
36
+ }
32
37
 
33
- // Create /ccc.md custom slash command file
34
- const cccPath = path.join(root, ".claude", "commands", "ccc.md");
35
- if (!fs.existsSync(cccPath)) {
36
- fs.writeFileSync(
37
- cccPath,
38
- "Read the context from .ai/neural-loom/ccontext.md. This is persistent context from the NeuralLoom UI. Absorb it as background information for this session. Acknowledge briefly what you received.\n"
39
- );
38
+ // Create /ccc.md custom slash command file
39
+ const cccPath = path.join(root, ".claude", "commands", "ccc.md");
40
+ if (!fs.existsSync(cccPath)) {
41
+ fs.writeFileSync(
42
+ cccPath,
43
+ "Read the context from .ai/neural-loom/ccontext.md. This is persistent context from the NeuralLoom UI. Absorb it as background information for this session. Acknowledge briefly what you received.\n"
44
+ );
45
+ }
46
+ } catch (err) {
47
+ console.warn(`[ContextManager] Failed to initialize staging at ${root}:`, err);
40
48
  }
41
49
  }
42
50
 
43
51
  public static updatePrompt(promptText: string, root: string = process.env.ORIGINAL_CWD || process.cwd()) {
44
- this.ensureDirs(root);
45
- const promptFile = path.join(root, ".ai", "neural-loom", "cprompt.md");
46
- fs.writeFileSync(promptFile, promptText);
52
+ try {
53
+ this.ensureDirs(root);
54
+ const promptFile = path.join(root, ".ai", "neural-loom", "cprompt.md");
55
+ fs.writeFileSync(promptFile, promptText);
56
+ } catch (err) {
57
+ console.error(`[ContextManager] Failed to write prompt file at ${root}:`, err);
58
+ }
47
59
  }
48
60
 
49
61
  public static updateContext(contextText: string, root: string = process.env.ORIGINAL_CWD || process.cwd()) {
50
- this.ensureDirs(root);
51
- const contextFile = path.join(root, ".ai", "neural-loom", "ccontext.md");
52
- fs.writeFileSync(contextFile, contextText);
62
+ try {
63
+ this.ensureDirs(root);
64
+ const contextFile = path.join(root, ".ai", "neural-loom", "ccontext.md");
65
+ fs.writeFileSync(contextFile, contextText);
66
+ } catch (err) {
67
+ console.error(`[ContextManager] Failed to write context file at ${root}:`, err);
68
+ }
53
69
  }
54
70
 
55
71
  public static updateRules(rulesText: string, root: string = process.env.ORIGINAL_CWD || process.cwd()) {
56
- this.ensureDirs(root);
57
- const agentsMdPath = path.join(root, "AGENTS.md");
58
- fs.writeFileSync(agentsMdPath, rulesText, "utf8");
72
+ try {
73
+ this.ensureDirs(root);
74
+ const agentsMdPath = path.join(root, "AGENTS.md");
75
+ fs.writeFileSync(agentsMdPath, rulesText, "utf8");
76
+ } catch (err) {
77
+ console.error(`[ContextManager] Failed to write rules file at ${root}:`, err);
78
+ }
59
79
  }
60
80
 
61
81
  public static loadPrompt(root: string = process.env.ORIGINAL_CWD || process.cwd()): string {
@@ -73,41 +93,45 @@ export class ContextManager {
73
93
  }
74
94
 
75
95
  public static compileSessionContext(root: string = process.env.ORIGINAL_CWD || process.cwd(), scopedDirs?: string[]) {
76
- this.ensureDirs(root);
77
- this.initializeStaging(root);
78
-
79
- // Check if AGENTS.md rules template exists
80
- const agentsMdPath = path.join(root, "AGENTS.md");
81
- let agentsRules = "";
82
- if (fs.existsSync(agentsMdPath)) {
83
- agentsRules = fs.readFileSync(agentsMdPath, "utf8");
84
- } else {
85
- // Try fallback from global
86
- const fallbackPath = path.join(this.workspaceRoot, "AGENTS.md");
87
- if (fs.existsSync(fallbackPath)) {
88
- agentsRules = fs.readFileSync(fallbackPath, "utf8");
96
+ try {
97
+ this.ensureDirs(root);
98
+ this.initializeStaging(root);
99
+
100
+ // Check if AGENTS.md rules template exists
101
+ const agentsMdPath = path.join(root, "AGENTS.md");
102
+ let agentsRules = "";
103
+ if (fs.existsSync(agentsMdPath)) {
104
+ agentsRules = fs.readFileSync(agentsMdPath, "utf8");
105
+ } else {
106
+ // Try fallback from global
107
+ const fallbackPath = path.join(this.workspaceRoot, "AGENTS.md");
108
+ if (fs.existsSync(fallbackPath)) {
109
+ agentsRules = fs.readFileSync(fallbackPath, "utf8");
110
+ }
89
111
  }
90
- }
91
112
 
92
- // Generate maps
93
- let maps = `## Workspace Root Map (${root}):\n${this.generateProjectMapFor(root)}`;
113
+ // Generate maps
114
+ let maps = `## Workspace Root Map (${root}):\n${this.generateProjectMapFor(root)}`;
94
115
 
95
- if (scopedDirs && Array.isArray(scopedDirs)) {
96
- scopedDirs.forEach((dir) => {
97
- if (fs.existsSync(dir)) {
98
- maps += `\n\n## Scoped Directory Map (${dir}):\n${this.generateProjectMapFor(dir)}`;
99
- }
100
- });
101
- }
116
+ if (scopedDirs && Array.isArray(scopedDirs)) {
117
+ scopedDirs.forEach((dir) => {
118
+ if (fs.existsSync(dir)) {
119
+ maps += `\n\n## Scoped Directory Map (${dir}):\n${this.generateProjectMapFor(dir)}`;
120
+ }
121
+ });
122
+ }
102
123
 
103
- // Combine rules and folder map
104
- const compiledContext = `# System Rules & Guidelines\n\n${agentsRules}\n\n# Project File Hierarchy Map\n\n${maps}`;
105
- this.updateContext(compiledContext, root);
124
+ // Combine rules and folder map
125
+ const compiledContext = `# System Rules & Guidelines\n\n${agentsRules}\n\n# Project File Hierarchy Map\n\n${maps}`;
126
+ this.updateContext(compiledContext, root);
106
127
 
107
- // Write a default empty prompt staging file if missing
108
- const promptFile = path.join(root, ".ai", "neural-loom", "cprompt.md");
109
- if (!fs.existsSync(promptFile)) {
110
- fs.writeFileSync(promptFile, "Hello! Please review the project context (/ccc) and check for any tasks to execute.");
128
+ // Write a default empty prompt staging file if missing
129
+ const promptFile = path.join(root, ".ai", "neural-loom", "cprompt.md");
130
+ if (!fs.existsSync(promptFile)) {
131
+ fs.writeFileSync(promptFile, "Hello! Please review the project context (/ccc) and check for any tasks to execute.");
132
+ }
133
+ } catch (err) {
134
+ console.warn(`[ContextManager] Failed to compile session context at ${root}:`, err);
111
135
  }
112
136
  }
113
137
 
@@ -1,5 +1,6 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
+ import { getConfigDir } from "../config";
3
4
  import type { IPty } from "node-pty";
4
5
  import { AgentRunner, RunnerStatus } from "./AgentRunner";
5
6
  import { SessionPersister } from "./SessionPersister";
@@ -122,7 +123,7 @@ export class DockerRunner extends AgentRunner {
122
123
 
123
124
  // Load Claude configuration to check for extraFlags (like --resume)
124
125
  let extraFlags = "";
125
- const claudeConfigPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "claude.json");
126
+ const claudeConfigPath = path.join(getConfigDir(), "claude.json");
126
127
  if (fs.existsSync(claudeConfigPath)) {
127
128
  try {
128
129
  const config = JSON.parse(fs.readFileSync(claudeConfigPath, "utf8"));
@@ -1,5 +1,6 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
+ import { getConfigDir } from "../config";
3
4
  import type { IPty } from "node-pty";
4
5
  import { AgentRunner, RunnerStatus } from "./AgentRunner";
5
6
  import { SessionPersister } from "./SessionPersister";
@@ -77,7 +78,7 @@ export class SSHRunner extends AgentRunner {
77
78
  return;
78
79
  }
79
80
 
80
- const configPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "ssh.json");
81
+ const configPath = path.join(getConfigDir(), "ssh.json");
81
82
  if (!fs.existsSync(configPath)) {
82
83
  this.status = 'stopped';
83
84
  this.appendLog("\x1b[1;31m[Configuration Error] ssh.json not found!\x1b[0m\r\n");
@@ -120,7 +121,7 @@ export class SSHRunner extends AgentRunner {
120
121
 
121
122
  // Load Claude configuration to check for extraFlags (like --resume)
122
123
  let extraFlags = "";
123
- const claudeConfigPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "claude.json");
124
+ const claudeConfigPath = path.join(getConfigDir(), "claude.json");
124
125
  if (fs.existsSync(claudeConfigPath)) {
125
126
  try {
126
127
  const config = JSON.parse(fs.readFileSync(claudeConfigPath, "utf8"));
@@ -1,5 +1,6 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
+ import { getConfigDir } from "../config";
3
4
 
4
5
  export interface PersistedSession {
5
6
  id: string;
@@ -17,12 +18,8 @@ export class SessionPersister {
17
18
  private static pendingSaves = new Map<string, NodeJS.Timeout>();
18
19
  private static pendingData = new Map<string, PersistedSession>();
19
20
 
20
- private static get workspaceRoot(): string {
21
- return process.env.ORIGINAL_CWD || process.cwd();
22
- }
23
-
24
21
  private static getSessionsDir(): string {
25
- const dir = path.join(this.workspaceRoot, ".ai", "neural-loom", "sessions");
22
+ const dir = path.join(getConfigDir(), "sessions");
26
23
  if (!fs.existsSync(dir)) {
27
24
  fs.mkdirSync(dir, { recursive: true });
28
25
  }
@@ -0,0 +1,32 @@
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import os from "os";
4
+
5
+ export function getConfigDir(): string {
6
+ const primaryDir = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom");
7
+
8
+ try {
9
+ // Check if primary directory exists. If not, try to create it.
10
+ if (!fs.existsSync(primaryDir)) {
11
+ fs.mkdirSync(primaryDir, { recursive: true });
12
+ }
13
+ // Perform a test write to verify write permissions (crucial for read-only directories like C:\Program Files)
14
+ const testFile = path.join(primaryDir, ".write-test-" + Math.random().toString(36).substring(7));
15
+ fs.writeFileSync(testFile, "test");
16
+ fs.unlinkSync(testFile);
17
+ return primaryDir;
18
+ } catch (err) {
19
+ // If EPERM or any other write error occurs, fall back to the user's home directory
20
+ console.warn(`[Config] Primary config dir is not writable (${primaryDir}). Falling back to home directory.`, err);
21
+ const fallbackDir = path.join(os.homedir(), ".ai", "neural-loom");
22
+ try {
23
+ if (!fs.existsSync(fallbackDir)) {
24
+ fs.mkdirSync(fallbackDir, { recursive: true });
25
+ }
26
+ return fallbackDir;
27
+ } catch (fallbackErr) {
28
+ console.error("[Config] Fallback config dir is also not writable!", fallbackErr);
29
+ return primaryDir;
30
+ }
31
+ }
32
+ }
@@ -1,7 +1,8 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
+ import { getConfigDir } from "./config";
3
4
 
4
- const configDir = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom");
5
+ const configDir = getConfigDir();
5
6
  const recentsPath = path.join(configDir, "recents.json");
6
7
 
7
8
  function ensureDir() {
@@ -1,15 +0,0 @@
1
- module.exports=[24417,e=>{"use strict";var t=e.i(22734),r=e.i(14747);e.s(["getWorkspaceFileFolders",0,function(e){try{if(!e||!t.default.existsSync(e))return[];let s=r.default.resolve(e).replace(/\\/g,"/"),a=t.default.readdirSync(s).find(e=>e.endsWith(".code-workspace"));if(!a)return[];let n=r.default.join(s,a),o=t.default.readFileSync(n,"utf8"),i=JSON.parse(o);if(!i.folders||!Array.isArray(i.folders))return[];let l=[];for(let e of i.folders)if(e.path){let a=r.default.resolve(s,e.path).replace(/\\/g,"/");a!==s&&t.default.existsSync(a)&&l.push(a)}return l}catch(e){return console.error("[WorkspaceParser] Failed to parse code-workspace file:",e),[]}}])},46619,e=>{"use strict";var t=e.i(22734),r=e.i(14747);e.s(["ContextManager",0,class{static get workspaceRoot(){return process.env.ORIGINAL_CWD||process.cwd()}static ensureDirs(e){let s=r.default.join(e,".ai","neural-loom");t.default.existsSync(s)||t.default.mkdirSync(s,{recursive:!0});let a=r.default.join(e,".claude","commands");t.default.existsSync(a)||t.default.mkdirSync(a,{recursive:!0})}static initializeStaging(e=process.env.ORIGINAL_CWD||process.cwd()){this.ensureDirs(e);let s=r.default.join(e,".claude","commands","ccp.md");t.default.existsSync(s)||t.default.writeFileSync(s,"Read the prompt from .ai/neural-loom/cprompt.md and execute it. This is a staged prompt from the NeuralLoom UI. Treat the contents as user instructions.\n");let a=r.default.join(e,".claude","commands","ccc.md");t.default.existsSync(a)||t.default.writeFileSync(a,"Read the context from .ai/neural-loom/ccontext.md. This is persistent context from the NeuralLoom UI. Absorb it as background information for this session. Acknowledge briefly what you received.\n")}static updatePrompt(e,s=process.env.ORIGINAL_CWD||process.cwd()){this.ensureDirs(s);let a=r.default.join(s,".ai","neural-loom","cprompt.md");t.default.writeFileSync(a,e)}static updateContext(e,s=process.env.ORIGINAL_CWD||process.cwd()){this.ensureDirs(s);let a=r.default.join(s,".ai","neural-loom","ccontext.md");t.default.writeFileSync(a,e)}static updateRules(e,s=process.env.ORIGINAL_CWD||process.cwd()){this.ensureDirs(s);let a=r.default.join(s,"AGENTS.md");t.default.writeFileSync(a,e,"utf8")}static loadPrompt(e=process.env.ORIGINAL_CWD||process.cwd()){let s=r.default.join(e,".ai","neural-loom","cprompt.md");return t.default.existsSync(s)?t.default.readFileSync(s,"utf8"):""}static loadRules(e=process.env.ORIGINAL_CWD||process.cwd()){let s=r.default.join(e,"AGENTS.md");return t.default.existsSync(s)?t.default.readFileSync(s,"utf8"):""}static compileGlobalRules(){this.compileSessionContext()}static compileSessionContext(e=process.env.ORIGINAL_CWD||process.cwd(),s){this.ensureDirs(e),this.initializeStaging(e);let a=r.default.join(e,"AGENTS.md"),n="";if(t.default.existsSync(a))n=t.default.readFileSync(a,"utf8");else{let e=r.default.join(this.workspaceRoot,"AGENTS.md");t.default.existsSync(e)&&(n=t.default.readFileSync(e,"utf8"))}let o=`## Workspace Root Map (${e}):
2
- ${this.generateProjectMapFor(e)}`;s&&Array.isArray(s)&&s.forEach(e=>{t.default.existsSync(e)&&(o+=`
3
-
4
- ## Scoped Directory Map (${e}):
5
- ${this.generateProjectMapFor(e)}`)});let i=`# System Rules & Guidelines
6
-
7
- ${n}
8
-
9
- # Project File Hierarchy Map
10
-
11
- ${o}`;this.updateContext(i,e);let l=r.default.join(e,".ai","neural-loom","cprompt.md");t.default.existsSync(l)||t.default.writeFileSync(l,"Hello! Please review the project context (/ccc) and check for any tasks to execute.")}static generateProjectMapFor(e){try{let s=(e,a=0)=>{if(a>2)return"";let n="";for(let o of t.default.readdirSync(e,{withFileTypes:!0})){if(o.name.startsWith(".")||"node_modules"===o.name||"out"===o.name||".next"===o.name)continue;let t=" ".repeat(a);o.isDirectory()?(n+=`${t}- [Dir] ${o.name}/
12
- `,n+=s(r.default.join(e,o.name),a+1)):n+=`${t}- [File] ${o.name}
13
- `}return n};return s(e)}catch(e){return"Error generating project map: "+(e instanceof Error?e.message:String(e))}}}])},46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},85427,e=>{"use strict";var t=e.i(22734),r=e.i(14747);let s=r.default.join(process.env.ORIGINAL_CWD||process.cwd(),".ai","neural-loom"),a=r.default.join(s,"recents.json");function n(){t.default.existsSync(s)||t.default.mkdirSync(s,{recursive:!0})}function o(){if(t.default.existsSync(a))try{let e=JSON.parse(t.default.readFileSync(a,"utf8"));return{workspaces:Array.isArray(e.workspaces)?e.workspaces:[],scopes:Array.isArray(e.scopes)?e.scopes:[],lastSession:e.lastSession||null}}catch(e){console.error("[Recents] Failed to parse recents.json:",e)}return{workspaces:[],scopes:[],lastSession:null}}e.s(["addRecent",0,function(e,s){if(!s)return;let i=r.default.resolve(s).replace(/\\/g,"/");if(!t.default.existsSync(i))return;let l=o();"workspace"===e?l.workspaces=[i,...l.workspaces.filter(e=>e!==i)].slice(0,10):"scope"===e&&(l.scopes=[i,...l.scopes.filter(e=>e!==i)].slice(0,15));try{n(),t.default.writeFileSync(a,JSON.stringify(l,null,2),"utf8")}catch(e){console.error("[Recents] Failed to write recents.json:",e)}},"loadRecents",0,o,"saveLastSession",0,function(e){let r=o();r.lastSession=e;try{n(),t.default.writeFileSync(a,JSON.stringify(r,null,2),"utf8")}catch(e){console.error("[Recents] Failed to write recents.json:",e)}}])},99762,e=>{"use strict";var t=e.i(47909),r=e.i(74017),s=e.i(96250),a=e.i(59756),n=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),c=e.i(87718),u=e.i(95169),d=e.i(47587),p=e.i(66012),f=e.i(70101),h=e.i(26937),x=e.i(10372),m=e.i(93695);e.i(52474);var y=e.i(220),R=e.i(89171),v=e.i(29307),w=e.i(85427);async function S(e){try{let{type:t,name:r,workspaceRoot:s,scopedDirs:a}=await e.json(),n=["mock","claude","claude-docker","claude-ssh","aider","aider-docker"];if(!t||!n.includes(t))return R.NextResponse.json({error:`Invalid type. Must be one of: ${n.join(", ")}`},{status:400});let o=v.SessionManager.getInstance(),i=await o.createSession(t,r,s,a);if((0,w.saveLastSession)({type:t,name:r,workspaceRoot:s,scopedDirs:a}),s&&(0,w.addRecent)("workspace",s),a&&Array.isArray(a))for(let e of a)(0,w.addRecent)("scope",e);return R.NextResponse.json({success:!0,session:i.getStatus()})}catch(t){let e=t instanceof Error?t.message:"Unknown error";return R.NextResponse.json({error:e},{status:500})}}e.s(["POST",0,S],7233);var g=e.i(7233);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/sessions/launch/route",pathname:"/api/sessions/launch",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/sessions/launch/route.ts",nextConfigOutput:"",userland:g,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:E,serverHooks:j}=A;async function k(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),A.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/sessions/launch/route";R=R.replace(/\/index$/,"")||"/";let v=await A.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:w,deploymentId:S,params:g,nextConfig:C,parsedUrl:E,isDraftMode:j,prerenderManifest:k,routerServerContext:N,isOnDemandRevalidate:I,revalidateOnlyGenerated:b,resolvedPathname:O,clientReferenceManifest:F,serverActionsManifest:T}=v,_=(0,i.normalizeAppPath)(R),P=!!(k.dynamicRoutes[_]||k.routes[O]),D=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,E,!1):t.end("This page could not be found"),null);if(P&&!j){let e=!!k.routes[O],t=k.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await D();throw new m.NoFallbackError}}let q=null;!P||A.isDev||j||(q="/index"===(q=O)?"/":q);let M=!0===A.isDev||!P,$=P&&!M;T&&F&&(0,o.setManifestsSingleton)({page:R,clientReferenceManifest:F,serverActionsManifest:T});let H=e.method||"GET",U=(0,n.getTracer)(),G=U.getActiveScopeSpan(),L=!!(null==N?void 0:N.isWrappedByNextServer),W=!!(0,a.getRequestMeta)(e,"minimalMode"),K=(0,a.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,C,k,W);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let B={params:g,previewProps:k.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:K,cacheLifeProfiles:C.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>A.onRequestError(e,t,s,a,N)},sharedContext:{buildId:w,deploymentId:S}},J=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),V=c.NextRequestAdapter.fromNodeNextRequest(J,(0,c.signalFromNodeResponse)(t));try{let a,o=async e=>A.handle(V,B).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${H} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${H} ${R}`)}),i=async a=>{var n,i;let l=async({previousCacheEntry:r})=>{try{if(!W&&I&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await o(a);e.fetchMetrics=B.renderOpts.fetchMetrics;let i=B.renderOpts.pendingWaitUntil;i&&s.waitUntil&&(s.waitUntil(i),i=void 0);let l=B.renderOpts.collectedTags;if(!P)return await (0,p.sendResponse)(J,z,n,B.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[x.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,s=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:B.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:I})},!1,N),t}},c=await A.handleResponse({req:e,nextConfig:C,cacheKey:q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:k,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:b,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:W});if(!P)return null;if((null==c||null==(n=c.value)?void 0:n.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(i=c.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",I?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),j&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(c.value.headers);return W&&P||u.delete(x.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,p.sendResponse)(J,z,new Response(c.value.body,{headers:u,status:c.value.status||200})),null};L&&G?await i(G):(a=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(u.BaseServerSpan.handleRequest,{spanName:`${H} ${R}`,kind:n.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},i),void 0,!L))}catch(t){if(t instanceof m.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:I})},!1,N),P)throw t;return await (0,p.sendResponse)(J,z,new Response(null,{status:500})),null}}e.s(["handler",0,k,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:E})},"routeModule",0,A,"serverHooks",0,j,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,E],99762)}];
14
-
15
- //# sourceMappingURL=%5Broot-of-the-server%5D__005xmeg._.js.map