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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/context/aider/route.js +1 -1
- package/.next/server/app/api/context/aider/route.js.nft.json +1 -1
- package/.next/server/app/api/context/claude/route.js +1 -1
- package/.next/server/app/api/context/claude/route.js.nft.json +1 -1
- package/.next/server/app/api/context/ssh/route.js +1 -1
- package/.next/server/app/api/context/ssh/route.js.nft.json +1 -1
- package/.next/server/app/api/recents/route.js +1 -1
- package/.next/server/app/api/recents/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/inject/route.js +1 -1
- package/.next/server/app/api/sessions/inject/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/input/route.js +1 -1
- package/.next/server/app/api/sessions/input/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/launch/route.js +1 -1
- package/.next/server/app/api/sessions/launch/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/scope/route.js +1 -1
- package/.next/server/app/api/sessions/scope/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/start/route.js +1 -1
- package/.next/server/app/api/sessions/start/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/stats/route.js +1 -1
- package/.next/server/app/api/sessions/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/stop/route.js +1 -1
- package/.next/server/app/api/sessions/stop/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +1 -1
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/chunks/[root-of-the-server]__01.zh3b._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__01.zh3b._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0656ruo._.js +6 -6
- package/.next/server/chunks/[root-of-the-server]__0656ruo._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__07zx04e._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__07zx04e._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0_o7_jj._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__0_o7_jj._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +7 -7
- package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0em6a~~._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__0em6a~~._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0gchnwb._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0gchnwb._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0i~01cv._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__0i~01cv._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0s0is_9._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__0s0is_9._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0t713sv._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0t713sv._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0thsozo._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__0thsozo._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__10wwca8._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__10wwca8._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__11h_nxt._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__11h_nxt._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__11z12oe._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__11z12oe._.js.map +1 -0
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/package.json +1 -1
- package/src/app/api/context/aider/route.ts +3 -1
- package/src/app/api/context/claude/route.ts +3 -1
- package/src/app/api/context/ssh/route.ts +3 -1
- package/src/app/api/sessions/scope/route.ts +3 -2
- package/src/lib/agents/AiderRunner.ts +2 -1
- package/src/lib/agents/ClaudeRunner.ts +2 -1
- package/src/lib/agents/ContextManager.ts +87 -63
- package/src/lib/agents/DockerRunner.ts +2 -1
- package/src/lib/agents/SSHRunner.ts +3 -2
- package/src/lib/agents/SessionPersister.ts +2 -5
- package/src/lib/config.ts +32 -0
- package/src/lib/recents.ts +2 -1
- package/.next/server/chunks/[root-of-the-server]__005xmeg._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__005xmeg._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0969ozy._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0969ozy._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0_~zjnf._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0_~zjnf._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0hl8jxx._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0hl8jxx._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0ho7s6e._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0ho7s6e._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0lh_jn-._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0lh_jn-._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0mq3k0u._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0mq3k0u._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0n-zban._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0n-zban._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0rr36fm._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0rr36fm._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0sa_gpm._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0sa_gpm._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0vp8-ka._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0vp8-ka._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0xcrc-1._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0xcrc-1._.js.map +0 -1
- /package/.next/static/{KK9yy3Qq3Z7N_cZVRK4cc → fkguOvhqTzhrR0V_gCa1M}/_buildManifest.js +0 -0
- /package/.next/static/{KK9yy3Qq3Z7N_cZVRK4cc → fkguOvhqTzhrR0V_gCa1M}/_clientMiddlewareManifest.js +0 -0
- /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":
|
|
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
|
@@ -2,7 +2,9 @@ import { NextResponse } from "next/server";
|
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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(
|
|
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(
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
fs.
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
fs.
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
|
|
93
|
-
|
|
113
|
+
// Generate maps
|
|
114
|
+
let maps = `## Workspace Root Map (${root}):\n${this.generateProjectMapFor(root)}`;
|
|
94
115
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
+
}
|
package/src/lib/recents.ts
CHANGED
|
@@ -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 =
|
|
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
|