tower-studio 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/diagnostics/route-bundle-stats.json +47 -47
- 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/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/_not-found/page/server-reference-manifest.json +19 -19
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +14 -14
- package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/browse-fs/route.js.nft.json +1 -1
- package/.next/server/app/api/files/assets/[projectId]/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assets/[projectId]/[filename]/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assets/reveal/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assistant/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assistant/images/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/assistant/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/cache/[...segments]/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/hooks/upload/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/[taskId]/merge/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +14 -14
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +9 -9
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/missions/page/server-reference-manifest.json +49 -49
- package/.next/server/app/missions/page.js.nft.json +1 -1
- package/.next/server/app/missions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/onboarding/page/server-reference-manifest.json +19 -19
- package/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding.html +1 -1
- package/.next/server/app/onboarding.rsc +16 -16
- package/.next/server/app/onboarding.segments/_full.segment.rsc +16 -16
- package/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/_index.segment.rsc +9 -9
- package/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
- package/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/page/server-reference-manifest.json +19 -19
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/page/server-reference-manifest.json +28 -28
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +16 -16
- package/.next/server/app/settings.segments/_full.segment.rsc +16 -16
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +9 -9
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +73 -73
- package/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +62 -62
- package/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +51 -51
- package/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +47 -47
- package/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +19 -19
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +48 -48
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/page/server-reference-manifest.json +39 -39
- package/.next/server/app/workspaces/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/10ge_next_dist_esm_build_templates_app-route_13~vb_i.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__043lk8~._.js +1 -1
- package/.next/server/chunks/ssr/0~.g_src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_0bbseig._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0.8y0n9._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__01ws4-7._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__02ipahf._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__0~jc3l5._.js → [root-of-the-server]__08_0ex9._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0bk3s4l._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__0hvz_0c._.js → [root-of-the-server]__0bo1n69._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0ld6_w6._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0l~dc3x._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0rs7pkn._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sysz2q._.js +3 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0y-lkvf._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__12f810l._.js +1 -1
- package/.next/server/chunks/ssr/{tower_02he7d6._.js → tower_0donrdk._.js} +2 -2
- package/.next/server/chunks/ssr/{tower_0gzwyem._.js → tower_0i9k4a6._.js} +2 -2
- package/.next/server/chunks/ssr/tower_0kl_bfy._.js +1 -1
- package/.next/server/chunks/ssr/tower_0m_uudm._.js +3 -0
- package/.next/server/chunks/ssr/{tower_0vo6u9i._.js → tower_0mn8ig7._.js} +2 -2
- package/.next/server/chunks/ssr/tower_0mz4ut.._.js +1 -1
- package/.next/server/chunks/ssr/tower_0pcqezm._.js +1 -1
- package/.next/server/chunks/ssr/{tower_00.hg6u._.js → tower_0pmey24._.js} +2 -2
- package/.next/server/chunks/ssr/{tower_09~lpto._.js → tower_0ut7r._._.js} +2 -2
- package/.next/server/chunks/ssr/tower_0wvk~r.._.js +1 -1
- package/.next/server/chunks/ssr/tower_10p15te._.js +1 -1
- package/.next/server/chunks/ssr/tower_117pzh8._.js +1 -1
- package/.next/server/chunks/ssr/tower_11q5_.m._.js +1 -1
- package/.next/server/chunks/ssr/tower_138qlx5._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_077qk8s._.js +3 -0
- package/.next/server/chunks/ssr/tower_src_actions_agent-actions_ts_0j.e1tn._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_actions_file-actions_ts_0424lna._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_missions_missions-client_tsx_0a9vjyr._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_onboarding_page_tsx_0_3krz1._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_settings_page_tsx_0vo5e-o._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0zfgzhi._.js +1 -1
- package/.next/server/chunks/ssr/tower_src_app_workspaces_[workspaceId]_board-page-client_tsx_0kjp1u0._.js +1 -1
- package/.next/server/chunks/tower_0a-x6m.._.js +1 -1
- package/.next/server/chunks/tower_src_0..vg-t._.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +182 -182
- package/.next/static/chunks/{0kubr70r_r2f2.js → 0-z_mj0p3..hy.js} +1 -1
- package/.next/static/chunks/{0drgc-oztq6o-.css → 04pjsuj.mivbh.css} +1 -1
- package/.next/static/chunks/{0_.pyr2jhdqa2.js → 053~3fys7om-7.js} +2 -2
- package/.next/static/chunks/0887ab.hh21q9.js +1 -0
- package/.next/static/chunks/0c7oqfzd78s3-.js +1 -0
- package/.next/static/chunks/{0z-ecklemrfx-.js → 0g4scpy5b3a_n.js} +1 -1
- package/.next/static/chunks/{0kc-95qs2~eid.js → 0ho7y42kl8m7v.js} +1 -1
- package/.next/static/chunks/0iudqcn98ftki.js +1 -0
- package/.next/static/chunks/{0-64z7pmj57~d.js → 0j~wmjbqds1dv.js} +1 -1
- package/.next/static/chunks/0mvu29h4.06~b.js +1 -0
- package/.next/static/chunks/{0a2blrvqw8t5y.js → 0rej~f94o9a~6.js} +1 -1
- package/.next/static/chunks/{0z61ts2ro9_k3.js → 0xi0wi2z6otp9.js} +1 -1
- package/.next/static/chunks/{05j6t69jmpqju.js → 16qoc.u84jlcd.js} +1 -1
- package/.next/static/chunks/17tob96chk6i1.js +1 -0
- package/.next/static/chunks/17zywpt-0o8gl.js +1 -0
- package/.next/static/chunks/{00xbbu.nlx92z.js → 185n7s7fwb2j_.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/bin/tower.mjs +36 -8
- package/package.json +10 -4
- package/scripts/generate-prisma-client.js +43 -0
- package/scripts/link-prisma.js +144 -0
- package/scripts/post-tool-hook.js +188 -0
- package/scripts/session-start-hook.js +79 -0
- package/scripts/stop-hook.js +78 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0mab0km._.js +0 -3
- package/.next/server/chunks/ssr/tower_12sld1c._.js +0 -3
- package/.next/server/chunks/ssr/tower_src_08t.wy-._.js +0 -3
- package/.next/static/chunks/049.9ha2n6os5.js +0 -1
- package/.next/static/chunks/07a_xadb-3w1a.js +0 -1
- package/.next/static/chunks/0_c8duf92i~xg.js +0 -1
- package/.next/static/chunks/0kojsk~4uroqj.js +0 -1
- package/.next/static/chunks/0kt2vohpgb7h6.js +0 -1
- package/.next/static/chunks/0ttrpz.l-v-yv.js +0 -1
- /package/.next/static/{6AW1vTU7iJEkEhqIH0txT → KX5Si-44bPnjdFNmiHDRY}/_buildManifest.js +0 -0
- /package/.next/static/{6AW1vTU7iJEkEhqIH0txT → KX5Si-44bPnjdFNmiHDRY}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{6AW1vTU7iJEkEhqIH0txT → KX5Si-44bPnjdFNmiHDRY}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":124,"timestamp":1558111042271,"id":4,"parentId":1,"tags":{},"startTime":1777340623841,"traceId":"00b4a76a07633fb7"},{"name":"load-custom-routes","duration":199,"timestamp":1558111042514,"id":5,"parentId":1,"tags":{},"startTime":1777340623841,"traceId":"00b4a76a07633fb7"},{"name":"create-dist-dir","duration":225,"timestamp":1558111042726,"id":6,"parentId":1,"tags":{},"startTime":1777340623841,"traceId":"00b4a76a07633fb7"},{"name":"clean","duration":138,"timestamp":1558111043684,"id":7,"parentId":1,"tags":{},"startTime":1777340623842,"traceId":"00b4a76a07633fb7"},{"name":"discover-routes","duration":12336,"timestamp":1558111049586,"id":8,"parentId":1,"tags":{},"startTime":1777340623848,"traceId":"00b4a76a07633fb7"},{"name":"create-root-mapping","duration":57,"timestamp":1558111061962,"id":9,"parentId":1,"tags":{},"startTime":1777340623861,"traceId":"00b4a76a07633fb7"},{"name":"generate-route-types","duration":35834,"timestamp":1558111063296,"id":10,"parentId":1,"tags":{},"startTime":1777340623862,"traceId":"00b4a76a07633fb7"},{"name":"public-dir-conflict-check","duration":46,"timestamp":1558111099240,"id":11,"parentId":1,"tags":{},"startTime":1777340623898,"traceId":"00b4a76a07633fb7"},{"name":"generate-routes-manifest","duration":1677,"timestamp":1558111099322,"id":12,"parentId":1,"tags":{},"startTime":1777340623898,"traceId":"00b4a76a07633fb7"},{"name":"run-turbopack","duration":7108785,"timestamp":1558111104532,"id":14,"parentId":1,"tags":{},"startTime":1777340623903,"traceId":"00b4a76a07633fb7"},{"name":"turbopack-build-events","duration":44,"timestamp":1558111269888,"id":15,"parentId":1,"tags":{},"startTime":1777340624068,"traceId":"00b4a76a07633fb7"},{"name":"run-typescript","duration":6329621,"timestamp":1558118261218,"id":16,"parentId":1,"tags":{},"startTime":1777340631060,"traceId":"00b4a76a07633fb7"},{"name":"generate-required-server-files","duration":842,"timestamp":1558124591319,"id":18,"parentId":1,"tags":{},"startTime":1777340637390,"traceId":"00b4a76a07633fb7"},{"name":"check-static-error-page","duration":21237,"timestamp":1558124599724,"id":20,"parentId":19,"tags":{},"startTime":1777340637398,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":195330,"timestamp":1558124621906,"id":61,"parentId":22,"tags":{},"startTime":1777340637420,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":208760,"timestamp":1558124608545,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1777340637407,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":238317,"timestamp":1558124621958,"id":63,"parentId":24,"tags":{},"startTime":1777340637420,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":251219,"timestamp":1558124609119,"id":24,"parentId":19,"tags":{"page":"/api/browse-fs"},"startTime":1777340637408,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":243167,"timestamp":1558124621982,"id":64,"parentId":25,"tags":{},"startTime":1777340637420,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":256061,"timestamp":1558124609176,"id":25,"parentId":19,"tags":{"page":"/api/files/assets/[projectId]/[filename]"},"startTime":1777340637408,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":245743,"timestamp":1558124622068,"id":65,"parentId":26,"tags":{},"startTime":1777340637421,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":258633,"timestamp":1558124609221,"id":26,"parentId":19,"tags":{"page":"/api/git"},"startTime":1777340637408,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":261067,"timestamp":1558124622190,"id":68,"parentId":44,"tags":{},"startTime":1777340637421,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":269878,"timestamp":1558124613408,"id":44,"parentId":19,"tags":{"page":"/apple-icon.png"},"startTime":1777340637412,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":261077,"timestamp":1558124622258,"id":69,"parentId":45,"tags":{},"startTime":1777340637421,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":268713,"timestamp":1558124614627,"id":45,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1777340637413,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":263166,"timestamp":1558124622280,"id":72,"parentId":48,"tags":{},"startTime":1777340637421,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":265299,"timestamp":1558124620173,"id":48,"parentId":19,"tags":{"page":"/manifest.json"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":275079,"timestamp":1558124622272,"id":70,"parentId":46,"tags":{},"startTime":1777340637421,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":282432,"timestamp":1558124614946,"id":46,"parentId":19,"tags":{"page":"/icon0.svg"},"startTime":1777340637413,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":277465,"timestamp":1558124622278,"id":71,"parentId":47,"tags":{},"startTime":1777340637421,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":280873,"timestamp":1558124618935,"id":47,"parentId":19,"tags":{"page":"/icon1.png"},"startTime":1777340637417,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":283462,"timestamp":1558124624138,"id":75,"parentId":28,"tags":{},"startTime":1777340637423,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":296479,"timestamp":1558124611146,"id":28,"parentId":19,"tags":{"page":"/api/internal/assets/reveal"},"startTime":1777340637410,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":283758,"timestamp":1558124623907,"id":74,"parentId":27,"tags":{},"startTime":1777340637422,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":298380,"timestamp":1558124609291,"id":27,"parentId":19,"tags":{"page":"/api/internal/assets/[projectId]/[filename]"},"startTime":1777340637408,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":291322,"timestamp":1558124621937,"id":62,"parentId":23,"tags":{},"startTime":1777340637420,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":304272,"timestamp":1558124609011,"id":23,"parentId":19,"tags":{"page":"/api/adapters/test"},"startTime":1777340637407,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":293908,"timestamp":1558124622176,"id":67,"parentId":43,"tags":{},"startTime":1777340637421,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":302778,"timestamp":1558124613360,"id":43,"parentId":19,"tags":{"page":"/api/tasks/[taskId]/merge"},"startTime":1777340637412,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":292611,"timestamp":1558124624590,"id":77,"parentId":32,"tags":{},"startTime":1777340637423,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":305621,"timestamp":1558124611596,"id":32,"parentId":19,"tags":{"page":"/api/internal/assistant/sessions"},"startTime":1777340637410,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":297658,"timestamp":1558124621782,"id":60,"parentId":21,"tags":{},"startTime":1777340637420,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":312737,"timestamp":1558124606718,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1777340637405,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":294331,"timestamp":1558124626693,"id":78,"parentId":29,"tags":{},"startTime":1777340637425,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":309761,"timestamp":1558124611280,"id":29,"parentId":19,"tags":{"page":"/api/internal/assistant/chat"},"startTime":1777340637410,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":293675,"timestamp":1558124627467,"id":79,"parentId":33,"tags":{},"startTime":1777340637426,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":309496,"timestamp":1558124611658,"id":33,"parentId":19,"tags":{"page":"/api/internal/cache/[...segments]"},"startTime":1777340637410,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":293552,"timestamp":1558124627633,"id":80,"parentId":34,"tags":{},"startTime":1777340637426,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":309102,"timestamp":1558124612088,"id":34,"parentId":19,"tags":{"page":"/api/internal/hooks/install"},"startTime":1777340637411,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":299611,"timestamp":1558124622141,"id":66,"parentId":42,"tags":{},"startTime":1777340637421,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":308464,"timestamp":1558124613304,"id":42,"parentId":19,"tags":{"page":"/api/tasks/[taskId]/diff"},"startTime":1777340637412,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":298627,"timestamp":1558124627986,"id":82,"parentId":35,"tags":{},"startTime":1777340637426,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":314115,"timestamp":1558124612521,"id":35,"parentId":19,"tags":{"page":"/api/internal/hooks/session"},"startTime":1777340637411,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":297969,"timestamp":1558124628704,"id":85,"parentId":37,"tags":{},"startTime":1777340637427,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":313890,"timestamp":1558124612794,"id":37,"parentId":19,"tags":{"page":"/api/internal/hooks/upload"},"startTime":1777340637411,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":304249,"timestamp":1558124624302,"id":76,"parentId":31,"tags":{},"startTime":1777340637423,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":317030,"timestamp":1558124611538,"id":31,"parentId":19,"tags":{"page":"/api/internal/assistant"},"startTime":1777340637410,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":307314,"timestamp":1558124628849,"id":86,"parentId":40,"tags":{},"startTime":1777340637427,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":323235,"timestamp":1558124612976,"id":40,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/input"},"startTime":1777340637411,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":317384,"timestamp":1558124627718,"id":81,"parentId":38,"tags":{},"startTime":1777340637426,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":332266,"timestamp":1558124612860,"id":38,"parentId":19,"tags":{"page":"/api/internal/notifications/pending"},"startTime":1777340637411,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":317401,"timestamp":1558124628972,"id":87,"parentId":41,"tags":{},"startTime":1777340637427,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":333133,"timestamp":1558124613255,"id":41,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/start"},"startTime":1777340637412,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":319496,"timestamp":1558124628302,"id":84,"parentId":39,"tags":{},"startTime":1777340637427,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":334907,"timestamp":1558124612927,"id":39,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/buffer"},"startTime":1777340637411,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":324644,"timestamp":1558124628157,"id":83,"parentId":36,"tags":{},"startTime":1777340637427,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":340119,"timestamp":1558124612729,"id":36,"parentId":19,"tags":{"page":"/api/internal/hooks/stop"},"startTime":1777340637411,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":329312,"timestamp":1558124623629,"id":73,"parentId":30,"tags":{},"startTime":1777340637422,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":342192,"timestamp":1558124611465,"id":30,"parentId":19,"tags":{"page":"/api/internal/assistant/images"},"startTime":1777340637410,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":329212,"timestamp":1558124630244,"id":90,"parentId":52,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":338885,"timestamp":1558124620631,"id":52,"parentId":19,"tags":{"page":"/settings"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":341410,"timestamp":1558124630233,"id":88,"parentId":50,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":351211,"timestamp":1558124620493,"id":50,"parentId":19,"tags":{"page":"/onboarding"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":342041,"timestamp":1558124630254,"id":95,"parentId":58,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":351463,"timestamp":1558124620861,"id":58,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/tasks/[taskId]"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":349852,"timestamp":1558124630258,"id":96,"parentId":49,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":359851,"timestamp":1558124620384,"id":49,"parentId":19,"tags":{"page":"/missions"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":350758,"timestamp":1558124630240,"id":89,"parentId":51,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":360433,"timestamp":1558124620599,"id":51,"parentId":19,"tags":{"page":"/"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":357522,"timestamp":1558124630474,"id":98,"parentId":57,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":367230,"timestamp":1558124620800,"id":57,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/projects/[projectId]"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":360226,"timestamp":1558124630261,"id":97,"parentId":59,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":369604,"timestamp":1558124620900,"id":59,"parentId":19,"tags":{"page":"/workspaces"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":371750,"timestamp":1558124630246,"id":91,"parentId":53,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":381356,"timestamp":1558124620664,"id":53,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/archive"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":372798,"timestamp":1558124630250,"id":93,"parentId":55,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":382321,"timestamp":1558124620732,"id":55,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/notes"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":375722,"timestamp":1558124630252,"id":94,"parentId":56,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":385227,"timestamp":1558124620764,"id":56,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"is-page-static","duration":402500,"timestamp":1558124630248,"id":92,"parentId":54,"tags":{},"startTime":1777340637429,"traceId":"00b4a76a07633fb7"},{"name":"check-page","duration":412072,"timestamp":1558124620700,"id":54,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/assets"},"startTime":1777340637419,"traceId":"00b4a76a07633fb7"},{"name":"static-check","duration":433345,"timestamp":1558124599440,"id":19,"parentId":1,"tags":{},"startTime":1777340637398,"traceId":"00b4a76a07633fb7"},{"name":"write-routes-manifest","duration":270,"timestamp":1558125033398,"id":100,"parentId":1,"tags":{},"startTime":1777340637832,"traceId":"00b4a76a07633fb7"},{"name":"load-dotenv","duration":23,"timestamp":1558125040513,"id":103,"parentId":102,"tags":{},"startTime":1777340637839,"traceId":"00b4a76a07633fb7"},{"name":"run-export-path-map","duration":374,"timestamp":1558125042164,"id":104,"parentId":102,"tags":{},"startTime":1777340637841,"traceId":"00b4a76a07633fb7"},{"name":"next-export","duration":276322,"timestamp":1558125039971,"id":102,"parentId":1,"tags":{},"startTime":1777340637838,"traceId":"00b4a76a07633fb7"},{"name":"move-exported-app-not-found-","duration":548,"timestamp":1558125317638,"id":105,"parentId":101,"tags":{},"startTime":1777340638116,"traceId":"00b4a76a07633fb7"},{"name":"move-exported-app-global-error-","duration":282,"timestamp":1558125318225,"id":106,"parentId":101,"tags":{},"startTime":1777340638117,"traceId":"00b4a76a07633fb7"},{"name":"static-generation","duration":283263,"timestamp":1558125035929,"id":101,"parentId":1,"tags":{},"startTime":1777340637834,"traceId":"00b4a76a07633fb7"},{"name":"write-routes-manifest","duration":247,"timestamp":1558125319311,"id":107,"parentId":1,"tags":{},"startTime":1777340638118,"traceId":"00b4a76a07633fb7"}]
|
|
2
|
-
[{"name":"print-tree-view","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":109,"timestamp":1573076130986,"id":4,"parentId":1,"tags":{},"startTime":1777355588959,"traceId":"798f05024d81318f"},{"name":"load-custom-routes","duration":207,"timestamp":1573076131211,"id":5,"parentId":1,"tags":{},"startTime":1777355588959,"traceId":"798f05024d81318f"},{"name":"create-dist-dir","duration":171,"timestamp":1573076131432,"id":6,"parentId":1,"tags":{},"startTime":1777355588959,"traceId":"798f05024d81318f"},{"name":"clean","duration":147,"timestamp":1573076132261,"id":7,"parentId":1,"tags":{},"startTime":1777355588960,"traceId":"798f05024d81318f"},{"name":"discover-routes","duration":12680,"timestamp":1573076138911,"id":8,"parentId":1,"tags":{},"startTime":1777355588967,"traceId":"798f05024d81318f"},{"name":"create-root-mapping","duration":52,"timestamp":1573076151622,"id":9,"parentId":1,"tags":{},"startTime":1777355588980,"traceId":"798f05024d81318f"},{"name":"generate-route-types","duration":35642,"timestamp":1573076152765,"id":10,"parentId":1,"tags":{},"startTime":1777355588981,"traceId":"798f05024d81318f"},{"name":"public-dir-conflict-check","duration":44,"timestamp":1573076188525,"id":11,"parentId":1,"tags":{},"startTime":1777355589017,"traceId":"798f05024d81318f"},{"name":"generate-routes-manifest","duration":1923,"timestamp":1573076188608,"id":12,"parentId":1,"tags":{},"startTime":1777355589017,"traceId":"798f05024d81318f"},{"name":"run-turbopack","duration":4711064,"timestamp":1573076194176,"id":14,"parentId":1,"tags":{},"startTime":1777355589022,"traceId":"798f05024d81318f"},{"name":"turbopack-build-events","duration":35,"timestamp":1573076355743,"id":15,"parentId":1,"tags":{},"startTime":1777355589184,"traceId":"798f05024d81318f"},{"name":"run-typescript","duration":6939568,"timestamp":1573080968113,"id":16,"parentId":1,"tags":{},"startTime":1777355593796,"traceId":"798f05024d81318f"},{"name":"generate-required-server-files","duration":7011,"timestamp":1573087910414,"id":18,"parentId":1,"tags":{},"startTime":1777355600739,"traceId":"798f05024d81318f"},{"name":"check-static-error-page","duration":28627,"timestamp":1573087936913,"id":20,"parentId":19,"tags":{},"startTime":1777355600765,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":196116,"timestamp":1573087966811,"id":61,"parentId":22,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":217977,"timestamp":1573087945167,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1777355600773,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":246722,"timestamp":1573087966863,"id":63,"parentId":24,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":268128,"timestamp":1573087945519,"id":24,"parentId":19,"tags":{"page":"/api/browse-fs"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":254791,"timestamp":1573087966979,"id":65,"parentId":26,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":276186,"timestamp":1573087945613,"id":26,"parentId":19,"tags":{"page":"/api/git"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":265599,"timestamp":1573087966893,"id":64,"parentId":25,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":286956,"timestamp":1573087945571,"id":25,"parentId":19,"tags":{"page":"/api/files/assets/[projectId]/[filename]"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":265556,"timestamp":1573087967098,"id":68,"parentId":44,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":274593,"timestamp":1573087958084,"id":44,"parentId":19,"tags":{"page":"/apple-icon.png"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":265560,"timestamp":1573087967159,"id":69,"parentId":45,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":272835,"timestamp":1573087959894,"id":45,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1777355600788,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":278228,"timestamp":1573087967180,"id":72,"parentId":48,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":280815,"timestamp":1573087964616,"id":48,"parentId":19,"tags":{"page":"/manifest.json"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":290513,"timestamp":1573087967178,"id":71,"parentId":47,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":293738,"timestamp":1573087963980,"id":47,"parentId":19,"tags":{"page":"/icon1.png"},"startTime":1777355600792,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":295649,"timestamp":1573087966841,"id":62,"parentId":23,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":317190,"timestamp":1573087945445,"id":23,"parentId":19,"tags":{"page":"/api/adapters/test"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":295599,"timestamp":1573087967173,"id":70,"parentId":46,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":302562,"timestamp":1573087960233,"id":46,"parentId":19,"tags":{"page":"/icon0.svg"},"startTime":1777355600788,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":298536,"timestamp":1573087966681,"id":60,"parentId":21,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":320967,"timestamp":1573087944323,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1777355600772,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":299843,"timestamp":1573087968909,"id":76,"parentId":28,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":321250,"timestamp":1573087947526,"id":28,"parentId":19,"tags":{"page":"/api/internal/assets/reveal"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":312781,"timestamp":1573087967053,"id":66,"parentId":42,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":321932,"timestamp":1573087957931,"id":42,"parentId":19,"tags":{"page":"/api/tasks/[taskId]/diff"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":313261,"timestamp":1573087968532,"id":74,"parentId":31,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":333862,"timestamp":1573087947946,"id":31,"parentId":19,"tags":{"page":"/api/internal/assistant"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":314017,"timestamp":1573087968698,"id":75,"parentId":32,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":334718,"timestamp":1573087948008,"id":32,"parentId":19,"tags":{"page":"/api/internal/assistant/sessions"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":314650,"timestamp":1573087969383,"id":78,"parentId":35,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":332931,"timestamp":1573087951119,"id":35,"parentId":19,"tags":{"page":"/api/internal/hooks/session"},"startTime":1777355600779,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":317386,"timestamp":1573087967086,"id":67,"parentId":43,"tags":{},"startTime":1777355600795,"traceId":"798f05024d81318f"},{"name":"check-page","duration":326506,"timestamp":1573087957982,"id":43,"parentId":19,"tags":{"page":"/api/tasks/[taskId]/merge"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":316185,"timestamp":1573087969552,"id":79,"parentId":27,"tags":{},"startTime":1777355600798,"traceId":"798f05024d81318f"},{"name":"check-page","duration":340095,"timestamp":1573087945683,"id":27,"parentId":19,"tags":{"page":"/api/internal/assets/[projectId]/[filename]"},"startTime":1777355600774,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":312344,"timestamp":1573087974752,"id":83,"parentId":38,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":329377,"timestamp":1573087957734,"id":38,"parentId":19,"tags":{"page":"/api/internal/notifications/pending"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":312738,"timestamp":1573087974406,"id":81,"parentId":33,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":339083,"timestamp":1573087948069,"id":33,"parentId":19,"tags":{"page":"/api/internal/cache/[...segments]"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":321941,"timestamp":1573087974892,"id":84,"parentId":39,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":339091,"timestamp":1573087957794,"id":39,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/buffer"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":321939,"timestamp":1573087975031,"id":85,"parentId":40,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":339149,"timestamp":1573087957845,"id":40,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/input"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":323367,"timestamp":1573087977870,"id":87,"parentId":37,"tags":{},"startTime":1777355600806,"traceId":"798f05024d81318f"},{"name":"check-page","duration":343671,"timestamp":1573087957589,"id":37,"parentId":19,"tags":{"page":"/api/internal/hooks/upload"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":329240,"timestamp":1573087972057,"id":80,"parentId":29,"tags":{},"startTime":1777355600800,"traceId":"798f05024d81318f"},{"name":"check-page","duration":353656,"timestamp":1573087947648,"id":29,"parentId":19,"tags":{"page":"/api/internal/assistant/chat"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":332812,"timestamp":1573087969204,"id":77,"parentId":34,"tags":{},"startTime":1777355600797,"traceId":"798f05024d81318f"},{"name":"check-page","duration":353906,"timestamp":1573087948122,"id":34,"parentId":19,"tags":{"page":"/api/internal/hooks/install"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":330256,"timestamp":1573087976652,"id":86,"parentId":41,"tags":{},"startTime":1777355600805,"traceId":"798f05024d81318f"},{"name":"check-page","duration":349046,"timestamp":1573087957891,"id":41,"parentId":19,"tags":{"page":"/api/internal/terminal/[taskId]/start"},"startTime":1777355600786,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":341641,"timestamp":1573087968318,"id":73,"parentId":30,"tags":{},"startTime":1777355600796,"traceId":"798f05024d81318f"},{"name":"check-page","duration":362142,"timestamp":1573087947857,"id":30,"parentId":19,"tags":{"page":"/api/internal/assistant/images"},"startTime":1777355600776,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":351771,"timestamp":1573087974672,"id":82,"parentId":36,"tags":{},"startTime":1777355600803,"traceId":"798f05024d81318f"},{"name":"check-page","duration":374848,"timestamp":1573087951639,"id":36,"parentId":19,"tags":{"page":"/api/internal/hooks/stop"},"startTime":1777355600780,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":347956,"timestamp":1573087979437,"id":91,"parentId":53,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":362205,"timestamp":1573087965228,"id":53,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/archive"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":357786,"timestamp":1573087979420,"id":88,"parentId":50,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":372241,"timestamp":1573087964990,"id":50,"parentId":19,"tags":{"page":"/onboarding"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":362238,"timestamp":1573087979432,"id":89,"parentId":51,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":376568,"timestamp":1573087965148,"id":51,"parentId":19,"tags":{"page":"/"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":363195,"timestamp":1573087979435,"id":90,"parentId":52,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":377468,"timestamp":1573087965195,"id":52,"parentId":19,"tags":{"page":"/settings"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":365299,"timestamp":1573087979453,"id":96,"parentId":49,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":379963,"timestamp":1573087964834,"id":49,"parentId":19,"tags":{"page":"/missions"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":367228,"timestamp":1573087979445,"id":95,"parentId":58,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":381249,"timestamp":1573087965439,"id":58,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/tasks/[taskId]"},"startTime":1777355600794,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":368191,"timestamp":1573087979459,"id":97,"parentId":57,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":382275,"timestamp":1573087965381,"id":57,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/projects/[projectId]"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":379734,"timestamp":1573087979462,"id":98,"parentId":59,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":393742,"timestamp":1573087965482,"id":59,"parentId":19,"tags":{"page":"/workspaces"},"startTime":1777355600794,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":383865,"timestamp":1573087979441,"id":93,"parentId":55,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":398022,"timestamp":1573087965305,"id":55,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/notes"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":397660,"timestamp":1573087979443,"id":94,"parentId":56,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":411794,"timestamp":1573087965342,"id":56,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"is-page-static","duration":400183,"timestamp":1573087979439,"id":92,"parentId":54,"tags":{},"startTime":1777355600808,"traceId":"798f05024d81318f"},{"name":"check-page","duration":414370,"timestamp":1573087965263,"id":54,"parentId":19,"tags":{"page":"/workspaces/[workspaceId]/assets"},"startTime":1777355600793,"traceId":"798f05024d81318f"},{"name":"static-check","duration":443138,"timestamp":1573087936509,"id":19,"parentId":1,"tags":{},"startTime":1777355600765,"traceId":"798f05024d81318f"},{"name":"write-routes-manifest","duration":385,"timestamp":1573088380540,"id":100,"parentId":1,"tags":{},"startTime":1777355601209,"traceId":"798f05024d81318f"},{"name":"load-dotenv","duration":26,"timestamp":1573088387611,"id":103,"parentId":102,"tags":{},"startTime":1777355601216,"traceId":"798f05024d81318f"},{"name":"run-export-path-map","duration":325,"timestamp":1573088389215,"id":104,"parentId":102,"tags":{},"startTime":1777355601217,"traceId":"798f05024d81318f"},{"name":"next-export","duration":257392,"timestamp":1573088386978,"id":102,"parentId":1,"tags":{},"startTime":1777355601215,"traceId":"798f05024d81318f"},{"name":"move-exported-app-not-found-","duration":785,"timestamp":1573088645708,"id":105,"parentId":101,"tags":{},"startTime":1777355601474,"traceId":"798f05024d81318f"},{"name":"move-exported-app-global-error-","duration":301,"timestamp":1573088646529,"id":106,"parentId":101,"tags":{},"startTime":1777355601475,"traceId":"798f05024d81318f"},{"name":"static-generation","duration":264553,"timestamp":1573088383074,"id":101,"parentId":1,"tags":{},"startTime":1777355601211,"traceId":"798f05024d81318f"},{"name":"write-routes-manifest","duration":230,"timestamp":1573088647742,"id":107,"parentId":1,"tags":{},"startTime":1777355601476,"traceId":"798f05024d81318f"}]
|
|
2
|
+
[{"name":"print-tree-view","duration":1893,"timestamp":1573088654071,"id":108,"parentId":1,"tags":{},"startTime":1777355601482,"traceId":"798f05024d81318f"},{"name":"write-route-bundle-stats","duration":6831,"timestamp":1573088655979,"id":109,"parentId":1,"tags":{},"startTime":1777355601484,"traceId":"798f05024d81318f"},{"name":"telemetry-flush","duration":241473,"timestamp":1573088662823,"id":110,"parentId":1,"tags":{},"startTime":1777355601491,"traceId":"798f05024d81318f"},{"name":"next-build","duration":12950821,"timestamp":1573075953489,"id":1,"tags":{"buildMode":"default","version":"16.2.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1777355588782,"traceId":"798f05024d81318f"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":4711064,"timestamp":1573076194176,"id":14,"parentId":1,"tags":{},"startTime":1777355589022,"traceId":"798f05024d81318f"},{"name":"turbopack-build-events","duration":35,"timestamp":1573076355743,"id":15,"parentId":1,"tags":{},"startTime":1777355589184,"traceId":"798f05024d81318f"},{"name":"run-typescript","duration":6939568,"timestamp":1573080968113,"id":16,"parentId":1,"tags":{},"startTime":1777355593796,"traceId":"798f05024d81318f"},{"name":"static-check","duration":443138,"timestamp":1573087936509,"id":19,"parentId":1,"tags":{},"startTime":1777355600765,"traceId":"798f05024d81318f"},{"name":"static-generation","duration":264553,"timestamp":1573088383074,"id":101,"parentId":1,"tags":{},"startTime":1777355601211,"traceId":"798f05024d81318f"},{"name":"telemetry-flush","duration":241473,"timestamp":1573088662823,"id":110,"parentId":1,"tags":{},"startTime":1777355601491,"traceId":"798f05024d81318f"},{"name":"next-build","duration":12950821,"timestamp":1573075953489,"id":1,"tags":{"buildMode":"default","version":"16.2.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1777355588782,"traceId":"798f05024d81318f"}]
|
package/bin/tower.mjs
CHANGED
|
@@ -16,15 +16,17 @@
|
|
|
16
16
|
|
|
17
17
|
import { existsSync, readFileSync, mkdirSync } from "fs";
|
|
18
18
|
import { join, dirname, resolve } from "path";
|
|
19
|
-
import {
|
|
19
|
+
import { execFileSync } from "child_process";
|
|
20
20
|
import { createServer } from "http";
|
|
21
21
|
import { fileURLToPath } from "url";
|
|
22
22
|
import { parseArgs } from "node:util";
|
|
23
23
|
import { homedir } from "os";
|
|
24
|
+
import { createRequire } from "module";
|
|
24
25
|
|
|
25
26
|
const __filename = fileURLToPath(import.meta.url);
|
|
26
27
|
const __dirname = dirname(__filename);
|
|
27
28
|
const PROJECT_ROOT = resolve(__dirname, "..");
|
|
29
|
+
const require = createRequire(import.meta.url);
|
|
28
30
|
|
|
29
31
|
// ─── Data directory: ~/.tower ───
|
|
30
32
|
const TOWER_DIR = join(homedir(), ".tower");
|
|
@@ -85,15 +87,27 @@ function logError(msg) {
|
|
|
85
87
|
console.error(`\x1b[31m[tower]\x1b[0m ${msg}`);
|
|
86
88
|
}
|
|
87
89
|
|
|
88
|
-
function
|
|
90
|
+
function resolveBin(pkgName, binName) {
|
|
91
|
+
const pkgJsonPath = require.resolve(`${pkgName}/package.json`, { paths: [PROJECT_ROOT] });
|
|
92
|
+
const pkgJson = JSON.parse(readFileSync(pkgJsonPath, "utf-8"));
|
|
93
|
+
const binField = typeof pkgJson.bin === "string" ? pkgJson.bin : pkgJson.bin?.[binName];
|
|
94
|
+
|
|
95
|
+
if (!binField) {
|
|
96
|
+
throw new Error(`No bin entry found for ${pkgName}`);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return resolve(dirname(pkgJsonPath), binField);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function run(binPath, args) {
|
|
89
103
|
try {
|
|
90
|
-
|
|
104
|
+
execFileSync(process.execPath, [binPath, ...args], {
|
|
91
105
|
cwd: PROJECT_ROOT,
|
|
92
106
|
stdio: "inherit",
|
|
93
107
|
env: { ...process.env, DATABASE_URL: DB_URL },
|
|
94
108
|
});
|
|
95
109
|
} catch {
|
|
96
|
-
logError(`Command failed: ${
|
|
110
|
+
logError(`Command failed: ${binPath} ${args.join(" ")}`);
|
|
97
111
|
process.exit(1);
|
|
98
112
|
}
|
|
99
113
|
}
|
|
@@ -110,30 +124,44 @@ function ensureDirs() {
|
|
|
110
124
|
}
|
|
111
125
|
}
|
|
112
126
|
|
|
127
|
+
function ensurePrismaClientGenerated() {
|
|
128
|
+
const prismaBin = resolveBin("prisma", "prisma");
|
|
129
|
+
|
|
130
|
+
log("Generating Prisma client...");
|
|
131
|
+
run(prismaBin, ["generate", "--schema", "prisma/schema.prisma"]);
|
|
132
|
+
}
|
|
133
|
+
|
|
113
134
|
async function initDatabase() {
|
|
135
|
+
const prismaBin = resolveBin("prisma", "prisma");
|
|
136
|
+
const tsxBin = resolveBin("tsx", "tsx");
|
|
137
|
+
|
|
114
138
|
log("Initializing Tower...");
|
|
115
139
|
ensureDirs();
|
|
116
140
|
log(`Data directory: ${TOWER_DIR}`);
|
|
141
|
+
ensurePrismaClientGenerated();
|
|
117
142
|
|
|
118
143
|
log("Syncing database schema...");
|
|
119
|
-
run("
|
|
144
|
+
run(prismaBin, ["db", "push", "--skip-generate"]);
|
|
120
145
|
|
|
121
146
|
log("Seeding initial data...");
|
|
122
|
-
run("
|
|
147
|
+
run(tsxBin, ["scripts/init-db.ts"]);
|
|
123
148
|
|
|
124
149
|
log("Initializing full-text search...");
|
|
125
|
-
run("
|
|
150
|
+
run(tsxBin, ["prisma/init-fts.ts"]);
|
|
126
151
|
|
|
127
152
|
log("Initialization complete!");
|
|
128
153
|
}
|
|
129
154
|
|
|
130
155
|
// ─── Commands ───
|
|
131
156
|
async function cmdMigrate() {
|
|
157
|
+
const tsxBin = resolveBin("tsx", "tsx");
|
|
132
158
|
log("Running data migration...");
|
|
133
|
-
run("
|
|
159
|
+
run(tsxBin, ["scripts/migrate-data.ts", "--run"]);
|
|
134
160
|
}
|
|
135
161
|
|
|
136
162
|
async function cmdStart() {
|
|
163
|
+
ensurePrismaClientGenerated();
|
|
164
|
+
|
|
137
165
|
if (needsInit()) {
|
|
138
166
|
await initDatabase();
|
|
139
167
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tower-studio",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"description": "AI Task Orchestration Platform — Kanban + Terminal + Code Editor + MCP",
|
|
5
5
|
"bin": {
|
|
6
6
|
"tower": "bin/tower.mjs"
|
|
@@ -12,8 +12,13 @@
|
|
|
12
12
|
"prisma/schema.prisma",
|
|
13
13
|
"prisma/init-fts.ts",
|
|
14
14
|
"scripts/init-db.ts",
|
|
15
|
+
"scripts/generate-prisma-client.js",
|
|
16
|
+
"scripts/link-prisma.js",
|
|
15
17
|
"scripts/migrate-data.ts",
|
|
16
18
|
"scripts/copy-monaco.js",
|
|
19
|
+
"scripts/post-tool-hook.js",
|
|
20
|
+
"scripts/session-start-hook.js",
|
|
21
|
+
"scripts/stop-hook.js",
|
|
17
22
|
"src/mcp/",
|
|
18
23
|
"next.config.ts",
|
|
19
24
|
"tsconfig.json"
|
|
@@ -26,6 +31,7 @@
|
|
|
26
31
|
"build": "next build",
|
|
27
32
|
"build:clean": "rm -rf .next && next build && find .next -name '*.map' -delete",
|
|
28
33
|
"release": "pnpm build:clean && npm pack",
|
|
34
|
+
"release:smoke": "node scripts/release-smoke.js",
|
|
29
35
|
"release:publish": "pnpm build:clean && npm publish",
|
|
30
36
|
"start": "next start",
|
|
31
37
|
"lint": "eslint",
|
|
@@ -40,7 +46,7 @@
|
|
|
40
46
|
"test:e2e": "NO_PROXY=localhost,127.0.0.1 no_proxy=localhost,127.0.0.1 playwright test",
|
|
41
47
|
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
|
|
42
48
|
"mcp": "tsx src/mcp/index.ts",
|
|
43
|
-
"postinstall": "node scripts/copy-monaco.js && node scripts/link-prisma.js"
|
|
49
|
+
"postinstall": "node scripts/copy-monaco.js && node scripts/generate-prisma-client.js && node scripts/link-prisma.js"
|
|
44
50
|
},
|
|
45
51
|
"pnpm": {
|
|
46
52
|
"onlyBuiltDependencies": [
|
|
@@ -83,11 +89,13 @@
|
|
|
83
89
|
"react-resizable-panels": "^2.1.9",
|
|
84
90
|
"react-reverse-portal": "^2.3.0",
|
|
85
91
|
"remark-gfm": "^4.0.1",
|
|
92
|
+
"prisma": "^6.19.2",
|
|
86
93
|
"shadcn": "^4.1.0",
|
|
87
94
|
"simple-git": "^3.36.0",
|
|
88
95
|
"sonner": "^2.0.7",
|
|
89
96
|
"tailwind-merge": "^3.5.0",
|
|
90
97
|
"tw-animate-css": "^1.4.0",
|
|
98
|
+
"tsx": "^4.21.0",
|
|
91
99
|
"ws": "^8.20.0",
|
|
92
100
|
"zod": "^4.3.6",
|
|
93
101
|
"zustand": "^5.0.12"
|
|
@@ -110,9 +118,7 @@
|
|
|
110
118
|
"eslint": "^9",
|
|
111
119
|
"eslint-config-next": "16.2.1",
|
|
112
120
|
"jsdom": "^29.0.1",
|
|
113
|
-
"prisma": "^6.19.2",
|
|
114
121
|
"tailwindcss": "^4",
|
|
115
|
-
"tsx": "^4.21.0",
|
|
116
122
|
"typescript": "^5",
|
|
117
123
|
"vitest": "^4.1.1"
|
|
118
124
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const { execFileSync } = require("child_process");
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
|
|
6
|
+
const packageRoot = path.join(__dirname, "..");
|
|
7
|
+
|
|
8
|
+
function resolvePrismaBin() {
|
|
9
|
+
const pkgJsonPath = require.resolve("prisma/package.json", { paths: [packageRoot] });
|
|
10
|
+
const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8"));
|
|
11
|
+
const binField = typeof pkgJson.bin === "string" ? pkgJson.bin : pkgJson.bin?.prisma;
|
|
12
|
+
|
|
13
|
+
if (!binField) {
|
|
14
|
+
throw new Error("No prisma bin entry found");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return path.resolve(path.dirname(pkgJsonPath), binField);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function hasGeneratedClient() {
|
|
21
|
+
try {
|
|
22
|
+
require.resolve(".prisma/client/default", { paths: [packageRoot] });
|
|
23
|
+
return true;
|
|
24
|
+
} catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (hasGeneratedClient()) {
|
|
30
|
+
console.log("[generate-prisma] Prisma client already generated");
|
|
31
|
+
process.exit(0);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
execFileSync(process.execPath, [resolvePrismaBin(), "generate", "--schema", "prisma/schema.prisma"], {
|
|
36
|
+
cwd: packageRoot,
|
|
37
|
+
stdio: "inherit",
|
|
38
|
+
env: process.env,
|
|
39
|
+
});
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.warn(`[generate-prisma] Failed to generate Prisma client: ${error.message}`);
|
|
42
|
+
process.exit(0);
|
|
43
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Turbopack may rewrite external package names with content hashes
|
|
4
|
+
* (for example `@prisma/client-<hash>` or `node-pty-<hash>`).
|
|
5
|
+
* This script scans the build output and creates symlinks so Node.js
|
|
6
|
+
* can resolve those hashed names at runtime after global install.
|
|
7
|
+
*/
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const path = require("path");
|
|
10
|
+
|
|
11
|
+
const packageRoot = path.join(__dirname, "..");
|
|
12
|
+
const serverDir = path.join(packageRoot, ".next", "server");
|
|
13
|
+
const supportedPackages = [
|
|
14
|
+
"@prisma/client",
|
|
15
|
+
"node-pty",
|
|
16
|
+
"@vscode/ripgrep",
|
|
17
|
+
"ws",
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
if (!fs.existsSync(serverDir)) {
|
|
21
|
+
process.exit(0);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function escapeRegExp(value) {
|
|
25
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function collectJsFiles(dir, result = []) {
|
|
29
|
+
if (!fs.existsSync(dir)) return result;
|
|
30
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
31
|
+
const full = path.join(dir, entry.name);
|
|
32
|
+
if (entry.isDirectory()) {
|
|
33
|
+
collectJsFiles(full, result);
|
|
34
|
+
} else if (entry.name.endsWith(".js")) {
|
|
35
|
+
result.push(full);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function detectHashedReferences(files) {
|
|
42
|
+
const matches = new Map();
|
|
43
|
+
|
|
44
|
+
for (const pkg of supportedPackages) {
|
|
45
|
+
matches.set(pkg, new Set());
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
for (const file of files) {
|
|
49
|
+
const content = fs.readFileSync(file, "utf-8");
|
|
50
|
+
for (const pkg of supportedPackages) {
|
|
51
|
+
const pattern = new RegExp(`${escapeRegExp(pkg)}-([0-9a-f]+)`, "g");
|
|
52
|
+
let match;
|
|
53
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
54
|
+
matches.get(pkg).add(match[1]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return matches;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function getPackageParts(pkg) {
|
|
63
|
+
if (pkg.startsWith("@")) {
|
|
64
|
+
const [scope, name] = pkg.split("/");
|
|
65
|
+
return { scope, name };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return { scope: null, name: pkg };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function getVisiblePackageDir(pkg) {
|
|
72
|
+
const { scope, name } = getPackageParts(pkg);
|
|
73
|
+
return scope
|
|
74
|
+
? path.join(packageRoot, "node_modules", scope, name)
|
|
75
|
+
: path.join(packageRoot, "node_modules", name);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function collectAliasTargets(pkg) {
|
|
79
|
+
const pkgJsonPath = require.resolve(`${pkg}/package.json`, { paths: [packageRoot] });
|
|
80
|
+
const realPackageDir = path.dirname(pkgJsonPath);
|
|
81
|
+
const visiblePackageDir = getVisiblePackageDir(pkg);
|
|
82
|
+
const candidates = new Map();
|
|
83
|
+
|
|
84
|
+
if (fs.existsSync(visiblePackageDir)) {
|
|
85
|
+
candidates.set(visiblePackageDir, path.dirname(visiblePackageDir));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
candidates.set(realPackageDir, path.dirname(realPackageDir));
|
|
89
|
+
|
|
90
|
+
return {
|
|
91
|
+
targetDir: visiblePackageDir,
|
|
92
|
+
aliasBaseDirs: [...candidates.values()],
|
|
93
|
+
packageName: getPackageParts(pkg).name,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function linkHashedPackage(pkg, hash) {
|
|
98
|
+
let paths;
|
|
99
|
+
try {
|
|
100
|
+
paths = collectAliasTargets(pkg);
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.warn(`[link-prisma] Cannot resolve ${pkg}: ${error.message}`);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (!fs.existsSync(paths.targetDir)) {
|
|
107
|
+
console.warn(`[link-prisma] Target package directory missing for ${pkg}, skipping`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const linkName = `${paths.packageName}-${hash}`;
|
|
112
|
+
|
|
113
|
+
for (const aliasBaseDir of paths.aliasBaseDirs) {
|
|
114
|
+
const linkPath = path.join(aliasBaseDir, linkName);
|
|
115
|
+
if (fs.existsSync(linkPath)) {
|
|
116
|
+
console.log(`[link-prisma] ${pkg}-${hash} already exists in ${aliasBaseDir}`);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
try {
|
|
121
|
+
fs.symlinkSync(paths.targetDir, linkPath, "junction");
|
|
122
|
+
console.log(`[link-prisma] Linked ${pkg}-${hash} -> ${pkg} in ${aliasBaseDir}`);
|
|
123
|
+
} catch (error) {
|
|
124
|
+
console.warn(
|
|
125
|
+
`[link-prisma] Failed to create symlink for ${pkg}-${hash} in ${aliasBaseDir}: ${error.message}`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const jsFiles = collectJsFiles(serverDir);
|
|
132
|
+
const references = detectHashedReferences(jsFiles);
|
|
133
|
+
let createdAny = false;
|
|
134
|
+
|
|
135
|
+
for (const [pkg, hashes] of references.entries()) {
|
|
136
|
+
for (const hash of hashes) {
|
|
137
|
+
createdAny = true;
|
|
138
|
+
linkHashedPackage(pkg, hash);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (!createdAny) {
|
|
143
|
+
console.log("[link-prisma] No hashed external package references found, skipping");
|
|
144
|
+
}
|